summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-06-20 18:47:28 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2014-06-20 18:47:28 -0400
commita1bbf3a005677c1371b02c54343f5407747e336d (patch)
treef3df6031a7ad52e74c1c64b969d0c2a71ea85442 /lib/sqlalchemy/orm
parentd7f467fcd531ff4b2f7fbe07fa24a2b88556c855 (diff)
downloadsqlalchemy-a1bbf3a005677c1371b02c54343f5407747e336d.tar.gz
- Additional checks have been added for the case where an inheriting
mapper is implicitly combining one of its column-based attributes with that of the parent, where those columns normally don't necessarily share the same value. This is an extension of an existing check that was added via :ticket:`1892`; however this new check emits only a warning, instead of an exception, to allow for applications that may be relying upon the existing behavior. fixes #3042
Diffstat (limited to 'lib/sqlalchemy/orm')
-rw-r--r--lib/sqlalchemy/orm/mapper.py23
1 files changed, 16 insertions, 7 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py
index 373e18271..bac54cc0a 100644
--- a/lib/sqlalchemy/orm/mapper.py
+++ b/lib/sqlalchemy/orm/mapper.py
@@ -1605,13 +1605,22 @@ class Mapper(_InspectionAttr):
prop = self._props.get(key, None)
if isinstance(prop, properties.ColumnProperty):
- if prop.parent is self:
- raise sa_exc.InvalidRequestError(
- "Implicitly combining column %s with column "
- "%s under attribute '%s'. Please configure one "
- "or more attributes for these same-named columns "
- "explicitly."
- % (prop.columns[-1], column, key))
+ if (
+ not self._inherits_equated_pairs or
+ (prop.columns[0], column) not in self._inherits_equated_pairs
+ ) and \
+ not prop.columns[0].shares_lineage(column) and \
+ prop.columns[0] is not self.version_id_col and \
+ column is not self.version_id_col:
+ warn_only = prop.parent is not self
+ msg = ("Implicitly combining column %s with column "
+ "%s under attribute '%s'. Please configure one "
+ "or more attributes for these same-named columns "
+ "explicitly." % (prop.columns[-1], column, key))
+ if warn_only:
+ util.warn(msg)
+ else:
+ raise sa_exc.InvalidRequestError(msg)
# existing properties.ColumnProperty from an inheriting
# mapper. make a copy and append our column to it