summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2022-09-25 23:15:46 +0000
committerGerrit Code Review <gerrit@ci3.zzzcomputing.com>2022-09-25 23:15:46 +0000
commit6072bebd19944be9ee1fdfd7fc4350d3317c9203 (patch)
treeb1812fc64a07b1a2ebd7256252a2c82cb6e7d358 /lib/sqlalchemy
parent65aa9b8a98c068de2f30ebfc719e4541df6ddcac (diff)
parent29838ef584d49e5ecca08f76e4966454dc7f060f (diff)
downloadsqlalchemy-6072bebd19944be9ee1fdfd7fc4350d3317c9203.tar.gz
Merge "warn for local-only column in remote side" into main
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/orm/relationships.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/sqlalchemy/orm/relationships.py b/lib/sqlalchemy/orm/relationships.py
index 45b9b9bea..48d60647c 100644
--- a/lib/sqlalchemy/orm/relationships.py
+++ b/lib/sqlalchemy/orm/relationships.py
@@ -2806,6 +2806,22 @@ class JoinCondition:
"condition that are on the remote side of "
"the relationship." % (self.prop,)
)
+ else:
+
+ not_target = util.column_set(
+ self.parent_persist_selectable.c
+ ).difference(self.child_persist_selectable.c)
+
+ for _, rmt in self.local_remote_pairs:
+ if rmt in not_target:
+ util.warn(
+ "Expression %s is marked as 'remote', but these "
+ "column(s) are local to the local side. The "
+ "remote() annotation is needed only for a "
+ "self-referential relationship where both sides "
+ "of the relationship refer to the same tables."
+ % (rmt,)
+ )
def _check_foreign_cols(
self, join_condition: ColumnElement[bool], primary: bool