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 <lukinkozusnik@seznam.cz>
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
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(