From 9586594754cef19bf1e2e14b7e70876efefdafbe Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 30 Sep 2020 08:37:57 -0400 Subject: 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 --- lib/sqlalchemy/sql/selectable.py | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lib/sqlalchemy/sql/selectable.py') 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 -- cgit v1.2.1