From 00f6c5d7b8265b1beba8008b00d4b3dd3570c709 Mon Sep 17 00:00:00 2001 From: Shan Date: Fri, 20 Jan 2023 22:48:17 -0800 Subject: [PATCH] handling single token bracketed schemas. Added corresponding unit test. All tests passing References: #9133 --- lib/sqlalchemy/dialects/mssql/base.py | 5 ++--- test/dialect/mssql/test_compiler.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) 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( -- 2.47.3