From: Lukáš Kožušník Date: Fri, 26 Sep 2025 15:17:44 +0000 (+0200) Subject: fix: pass dialect-specific kwargs to MetaData.reflect X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a8a98f80b2420300c61e8551b7b05bab81aa7c56;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git fix: pass dialect-specific kwargs to MetaData.reflect Previously, MetaData.reflect did not forward dialect-specific keyword arguments to the Inspector methods, causing options like `oracle_resolve_synonyms` to be ignored during reflection. This change ensures that all extra kwargs passed to MetaData.reflect are forwarded to `Inspector.get_table_names` and related reflection methods. A new test `test_reflect_forwards_kwargs_to_get_table_names` has been added to verify that arbitrary dialect kwargs are passed through. Fixes #12884 Signed-off-by: Lukáš Kožušník --- diff --git a/lib/sqlalchemy/sql/schema.py b/lib/sqlalchemy/sql/schema.py index 4e640e2af4..3f249b6410 100644 --- a/lib/sqlalchemy/sql/schema.py +++ b/lib/sqlalchemy/sql/schema.py @@ -5939,7 +5939,7 @@ class MetaData(HasSchemaAttr): kind = util.preloaded.engine_reflection.ObjectKind.TABLE available: util.OrderedSet[str] = util.OrderedSet( - insp.get_table_names(schema) + insp.get_table_names(schema, **dialect_kwargs) ) if views: kind = util.preloaded.engine_reflection.ObjectKind.ANY diff --git a/test/engine/test_reflection.py b/test/engine/test_reflection.py index 6ba130add3..ec07e20ac3 100644 --- a/test/engine/test_reflection.py +++ b/test/engine/test_reflection.py @@ -249,6 +249,19 @@ class ReflectionTest(fixtures.TestBase, ComparesTables): t2 = meta2.tables["t2"] is_true(t1.c.t2id.references(t2.c.id)) + def test_reflect_forwards_multiple_kwargs(self, connection, metadata): + with mock.patch( + "sqlalchemy.engine.reflection.Inspector.get_table_names", + return_value=None, + ) as mocked: + metadata.reflect( + bind=connection, flag1=True, flag2=123, flag3="abc" + ) + + mocked.assert_called_once_with( + None, flag1=True, flag2=123, flag3="abc" + ) + def test_nonexistent(self, connection): meta = MetaData() assert_raises(