From: Shan Date: Sat, 21 Jan 2023 06:48:17 +0000 (-0800) Subject: handling single token bracketed schemas. Added corresponding unit test. All tests... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=00f6c5d7b8265b1beba8008b00d4b3dd3570c709;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git handling single token bracketed schemas. Added corresponding unit test. All tests passing References: #9133 --- diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py index b1f30d5772..b8fe8a3710 100644 --- a/lib/sqlalchemy/dialects/mssql/base.py +++ b/lib/sqlalchemy/dialects/mssql/base.py @@ -2871,10 +2871,9 @@ def _switch_db(dbname, connection, fn, *arg, **kw): def _owner_plus_db(dialect, schema): if not schema: return None, dialect.default_schema_name - elif "." in schema: - return _schema_elements(schema) else: - return None, schema + return _schema_elements(schema) + _memoized_schema = util.LRUCache() diff --git a/test/dialect/mssql/test_compiler.py b/test/dialect/mssql/test_compiler.py index 00bbc2af45..b666c3cba9 100644 --- a/test/dialect/mssql/test_compiler.py +++ b/test/dialect/mssql/test_compiler.py @@ -599,6 +599,20 @@ class CompileTest(fixtures.TestBase, AssertsCompiledSQL): checkpositional=("bar",), ) + def test_schema_single_token_bracketed(self): + metadata = MetaData() + tbl = Table( + "test", + metadata, + Column("id", Integer, primary_key=True), + schema="[abc]", + ) + + self.assert_compile( + select(tbl), + "SELECT abc.test.id FROM abc.test", + ) + def test_schema_many_tokens_one(self): metadata = MetaData() tbl = Table(