]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
test: add test to check index ordering
authorAllen Chen <e2ne00@gmail.com>
Thu, 2 Oct 2025 05:40:33 +0000 (13:40 +0800)
committerAllen Chen <e2ne00@gmail.com>
Thu, 2 Oct 2025 05:40:33 +0000 (13:40 +0800)
lib/sqlalchemy/testing/suite/test_reflection.py
test/dialect/mssql/test_reflection.py

index aa1a4e90a8419395de8612321aeab085e25c59dd..6431e88c96a17318fde878cedbbb58fa91fc9355 100644 (file)
@@ -2699,6 +2699,25 @@ class ComponentReflectionTestExtra(ComparesIndexes, fixtures.TestBase):
             ],
         )
 
+    def test_index_column_order(self, metadata, inspect_for_table):
+         """test for #12894"""
+         with inspect_for_table("sa_multi_index") as (schema, inspector):
+             test_table = Table(
+                 "sa_multi_index",
+                 metadata,
+                 Column("Column1", Integer, primary_key=True),
+                 Column("Column2", Integer),
+                 Column("Column3", Integer),
+             )
+             Index(
+                 "Index_Example",
+                 test_table.c.Column3,
+                 test_table.c.Column1,
+                 test_table.c.Column2,
+             )
+         indexes = inspector.get_indexes("sa_multi_index")
+         eq_(indexes[0]["column_names"], ["Column3", "Column1", "Column2"])
+
     @testing.requires.indexes_with_expressions
     def test_reflect_expression_based_indexes(self, metadata, connection):
         t = Table(
index 06e5147fbeefd244cc46b4d91e42bc54467f9b64..85f8f13df0c0ffb2fc455e80c79e643d7ace9386 100644 (file)
@@ -715,6 +715,46 @@ class ReflectionTest(fixtures.TestBase, ComparesTables, AssertsCompiledSQL):
             CreateIndex(idx), "CREATE NONCLUSTERED INDEX idx_x ON t (x)"
         )
 
+    def test_index_column_order_clustered(self, metadata, connection):
+        """test for #12894"""
+        test_table = Table(
+            "t",
+            metadata,
+            Column("id", Integer, primary_key=True),
+            Column("x", Integer),
+            Column("y", Integer),
+            PrimaryKeyConstraint('id', mssql_clustered=False),
+        )
+        Index(
+            "idx_x",
+            test_table.c.y,
+            test_table.c.id,
+            test_table.c.x,
+            mssql_clustered=True,
+        )
+        metadata.create_all(connection)
+        indexes = testing.db.dialect.get_indexes(connection, "t", None)
+        eq_(indexes[0]["column_names"], ["y", "id", "x"])
+
+    def test_index_column_order_nonclustered(self, metadata, connection):
+        """test for #12894"""
+        test_table = Table(
+            "t",
+            metadata,
+            Column("id", Integer, primary_key=True),
+            Column("x", Integer),
+            Column("y", Integer),
+        )
+        Index(
+            "idx_x",
+            test_table.c.y,
+            test_table.c.id,
+            test_table.c.x,
+        )
+        metadata.create_all(connection)
+        indexes = testing.db.dialect.get_indexes(connection, "t", None)
+        eq_(indexes[0]["column_names"], ["y", "id", "x"])
+
     @testing.only_if("mssql>=12")
     def test_index_reflection_colstore_clustered(self, metadata, connection):
         t1 = Table(