diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-09-30 08:37:57 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-09-30 09:37:02 -0400 |
commit | 9586594754cef19bf1e2e14b7e70876efefdafbe (patch) | |
tree | c9a02a1ab191d0cb8ac8f0281f2d7e223f40fb5d /lib/sqlalchemy/sql/selectable.py | |
parent | b21a03316ff35ea86405f07d70fa1a2de7a01378 (diff) | |
download | sqlalchemy-9586594754cef19bf1e2e14b7e70876efefdafbe.tar.gz |
raise on lower-case column shared to multiple tables
Fixed bug where an error was not raised for lower-case
:func:`_column` added to lower-case :func:`_table` object. This now raises
:class:`_exc.ArgumentError` which has always been the case for
upper-case :class:`_schema.Column` and :class:`_schema.Table`.
Fixes: #5618
Change-Id: Ifcbdf27c022fd2996a5b99559df71fc1c1e0f19c
Diffstat (limited to 'lib/sqlalchemy/sql/selectable.py')
-rw-r--r-- | lib/sqlalchemy/sql/selectable.py | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/sqlalchemy/sql/selectable.py b/lib/sqlalchemy/sql/selectable.py index 2e8f41cc8..5fc83815d 100644 --- a/lib/sqlalchemy/sql/selectable.py +++ b/lib/sqlalchemy/sql/selectable.py @@ -2168,6 +2168,13 @@ class TableClause(roles.DMLTableRole, Immutable, FromClause): return self.name.encode("ascii", "backslashreplace") def append_column(self, c): + existing = c.table + if existing is not None and existing is not self: + raise exc.ArgumentError( + "column object '%s' already assigned to table '%s'" + % (c.key, existing) + ) + self._columns.add(c) c.table = self |