diff options
| author | Gord Thompson <gord@gordthompson.com> | 2021-01-25 11:24:25 -0700 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-01-29 16:48:00 -0500 |
| commit | 09e999808a5272a1426a7c00e3a4f27b2e27b8d7 (patch) | |
| tree | cdc8f16b86d19fdc2c95496c8ad12e8f226ecb03 /lib/sqlalchemy/dialects/postgresql | |
| parent | bead576769e655481cddb4623fad4bfa0aaccdda (diff) | |
| download | sqlalchemy-09e999808a5272a1426a7c00e3a4f27b2e27b8d7.tar.gz | |
Use schema._copy_expression() fully in column collection constraints
Fixed issue where using :meth:`_schema.Table.to_metadata` (called
:meth:`_schema.Table.tometadata` in 1.3) in conjunction with a PostgreSQL
:class:`_postgresql.ExcludeConstraint` that made use of ad-hoc column
expressions would fail to copy correctly.
Fixes: #5850
Change-Id: I062480afb23f6f60962b7b55bc93f5e4e6ff05e4
Diffstat (limited to 'lib/sqlalchemy/dialects/postgresql')
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/ext.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/ext.py b/lib/sqlalchemy/dialects/postgresql/ext.py index 1bd1e5258..a93a3477d 100644 --- a/lib/sqlalchemy/dialects/postgresql/ext.py +++ b/lib/sqlalchemy/dialects/postgresql/ext.py @@ -12,6 +12,7 @@ from ...sql import elements from ...sql import expression from ...sql import functions from ...sql import roles +from ...sql import schema from ...sql.schema import ColumnCollectionConstraint @@ -240,8 +241,14 @@ class ExcludeConstraint(ColumnCollectionConstraint): ) ] - def copy(self, **kw): - elements = [(col, self.operators[col]) for col in self.columns.keys()] + def copy(self, target_table=None, **kw): + elements = [ + ( + schema._copy_expression(expr, self.parent, target_table), + self.operators[expr.name], + ) + for expr in self.columns + ] c = self.__class__( *elements, name=self.name, |
