]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
Fix postgres detect serial in autogenerate (#1479)
authorzhouyizhen <zhouyizhen@metrodata.tech>
Tue, 4 Jun 2024 08:58:01 +0000 (16:58 +0800)
committerzhouyizhen <zhouyizhen@metrodata.tech>
Tue, 4 Jun 2024 08:58:01 +0000 (16:58 +0800)
alembic/ddl/postgresql.py
tests/test_postgresql.py

index 6507fcbdd75c82873e3fc4ff5e3030d8638c0474..de64a4e05b5b2252d77f14a33380ac626a5c6c54 100644 (file)
@@ -218,7 +218,8 @@ class PostgresqlImpl(DefaultImpl):
                         "join pg_class t on t.oid=d.refobjid "
                         "join pg_attribute a on a.attrelid=t.oid and "
                         "a.attnum=d.refobjsubid "
-                        "where c.relkind='S' and c.relname=:seqname"
+                        "where c.relkind='S' and "
+                        "c.oid=cast(:seqname as regclass)"
                     ),
                     seqname=seq_match.group(1),
                 ).first()
index 5741b080e878113a3caba83e4951572e036f8926..6ce4a7b91037d347784602dc69cd638f714fa721 100644 (file)
@@ -860,7 +860,7 @@ class PostgresqlDetectSerialTest(TestBase):
 
     @provide_metadata
     def _expect_default(self, c_expected, col, seq=None):
-        Table("t", self.metadata, col)
+        Table("t", self.metadata, col, schema="test_schema")
 
         self.autogen_context.metadata = self.metadata
 
@@ -871,7 +871,9 @@ class PostgresqlDetectSerialTest(TestBase):
         insp = inspect(config.db)
 
         uo = ops.UpgradeOps(ops=[])
-        _compare_tables({(None, "t")}, set(), insp, uo, self.autogen_context)
+        _compare_tables(
+            {("test_schema", "t")}, set(), insp, uo, self.autogen_context
+        )
         diffs = uo.as_diffs()
         tab = diffs[0][1]
 
@@ -884,12 +886,12 @@ class PostgresqlDetectSerialTest(TestBase):
 
         insp = inspect(config.db)
         uo = ops.UpgradeOps(ops=[])
-        m2 = MetaData()
+        m2 = MetaData(schema="test_schema")
         Table("t", m2, Column("x", BigInteger()))
         self.autogen_context.metadata = m2
         _compare_tables(
-            {(None, "t")},
-            {(None, "t")},
+            {("test_schema", "t")},
+            {("test_schema", "t")},
             insp,
             uo,
             self.autogen_context,
@@ -907,9 +909,9 @@ class PostgresqlDetectSerialTest(TestBase):
         self._expect_default(None, Column("x", Integer, primary_key=True))
 
     def test_separate_seq(self):
-        seq = Sequence("x_id_seq")
+        seq = Sequence("x_id_seq", schema="test_schema")
         self._expect_default(
-            "nextval('x_id_seq'::regclass)",
+            "nextval('test_schema.x_id_seq'::regclass)",
             Column(
                 "x", Integer, server_default=seq.next_value(), primary_key=True
             ),
@@ -917,9 +919,9 @@ class PostgresqlDetectSerialTest(TestBase):
         )
 
     def test_numeric(self):
-        seq = Sequence("x_id_seq")
+        seq = Sequence("x_id_seq", schema="test_schema")
         self._expect_default(
-            "nextval('x_id_seq'::regclass)",
+            "nextval('test_schema.x_id_seq'::regclass)",
             Column(
                 "x",
                 Numeric(8, 2),