diff options
author | mike bayer <mike_mp@zzzcomputing.com> | 2020-08-07 17:22:14 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2020-08-07 17:22:14 +0000 |
commit | a25d122eae8bda79af9f596d2c51d4d1e2dfd30f (patch) | |
tree | 902fe81f2251dd9e0b30b1162afb01a47c231f06 | |
parent | 7f52c10357cbc98e467f317128b3fea2018eaf7c (diff) | |
parent | ed50a003e296ac6bfb998f2b401091d87874cb4c (diff) | |
download | sqlalchemy-a25d122eae8bda79af9f596d2c51d4d1e2dfd30f.tar.gz |
Merge "Pass schema_translate_map from DDLCompiler to SQLCompiler"
-rw-r--r-- | doc/build/changelog/unreleased_13/5500.rst | 10 | ||||
-rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 4 | ||||
-rw-r--r-- | test/sql/test_compiler.py | 77 |
3 files changed, 90 insertions, 1 deletions
diff --git a/doc/build/changelog/unreleased_13/5500.rst b/doc/build/changelog/unreleased_13/5500.rst new file mode 100644 index 000000000..c93a86949 --- /dev/null +++ b/doc/build/changelog/unreleased_13/5500.rst @@ -0,0 +1,10 @@ +.. change:: + :tags: bug, sql + :tickets: 5500 + + Fixed issue where the + :paramref:`_engine.Connection.execution_options.schema_translate_map` + feature would not take effect when the :meth:`_schema.Sequence.next_value` + function function for a :class:`_schema.Sequence` were used in the + :paramref:`_schema.Column.server_default` parameter and the create table + DDL were emitted. diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index b8984316c..8e273f67c 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -3661,7 +3661,9 @@ class StrSQLCompiler(SQLCompiler): class DDLCompiler(Compiled): @util.memoized_property def sql_compiler(self): - return self.dialect.statement_compiler(self.dialect, None) + return self.dialect.statement_compiler( + self.dialect, None, schema_translate_map=self.schema_translate_map + ) @util.memoized_property def type_compiler(self): diff --git a/test/sql/test_compiler.py b/test/sql/test_compiler.py index 1d31f1ea5..1084d30cb 100644 --- a/test/sql/test_compiler.py +++ b/test/sql/test_compiler.py @@ -4271,17 +4271,94 @@ class DDLTest(fixtures.TestBase, AssertsCompiledSQL): ) self.assert_compile( + s1.next_value(), + "<next sequence value: [SCHEMA__none].s1>", + schema_translate_map=schema_translate_map, + dialect="default_enhanced", + ) + + self.assert_compile( schema.CreateSequence(s2), "CREATE SEQUENCE [SCHEMA_foo].s2 START WITH 1", schema_translate_map=schema_translate_map, ) self.assert_compile( + s2.next_value(), + "<next sequence value: [SCHEMA_foo].s2>", + schema_translate_map=schema_translate_map, + dialect="default_enhanced", + ) + + self.assert_compile( schema.CreateSequence(s3), "CREATE SEQUENCE [SCHEMA_bar].s3 START WITH 1", schema_translate_map=schema_translate_map, ) + self.assert_compile( + s3.next_value(), + "<next sequence value: [SCHEMA_bar].s3>", + schema_translate_map=schema_translate_map, + dialect="default_enhanced", + ) + + def test_schema_translate_map_sequence_server_default(self): + s1 = schema.Sequence("s1") + s2 = schema.Sequence("s2", schema="foo") + s3 = schema.Sequence("s3", schema="bar") + + schema_translate_map = {None: "z", "bar": None, "foo": "bat"} + + m = MetaData() + + t1 = Table( + "t1", + m, + Column( + "id", Integer, server_default=s1.next_value(), primary_key=True + ), + ) + t2 = Table( + "t2", + m, + Column( + "id", Integer, server_default=s2.next_value(), primary_key=True + ), + ) + t3 = Table( + "t3", + m, + Column( + "id", Integer, server_default=s3.next_value(), primary_key=True + ), + ) + + self.assert_compile( + schema.CreateTable(t1), + "CREATE TABLE [SCHEMA__none].t1 " + "(id INTEGER DEFAULT <next sequence value: [SCHEMA__none].s1> " + "NOT NULL, PRIMARY KEY (id))", + schema_translate_map=schema_translate_map, + dialect="default_enhanced", + ) + self.assert_compile( + schema.CreateTable(t2), + "CREATE TABLE [SCHEMA__none].t2 " + "(id INTEGER DEFAULT <next sequence value: [SCHEMA_foo].s2> " + "NOT NULL, PRIMARY KEY (id))", + schema_translate_map=schema_translate_map, + dialect="default_enhanced", + ) + self.assert_compile( + schema.CreateTable(t3), + "CREATE TABLE [SCHEMA__none].t3 " + "(id INTEGER DEFAULT <next sequence value: [SCHEMA_bar].s3> " + "NOT NULL, PRIMARY KEY (id))", + schema_translate_map=schema_translate_map, + dialect="default_enhanced", + ) + def test_fk_render(self): a = Table("a", MetaData(), Column("q", Integer)) b = Table("b", MetaData(), Column("p", Integer)) |