diff --git a/pglogical/hooks.py b/pglogical/hooks.py index 8910feba..ba992634 100644 --- a/pglogical/hooks.py +++ b/pglogical/hooks.py @@ -20,6 +20,7 @@ def schema_qualify(parsed_query, schema="public"): token_iterator = parsed_query.flatten() Name = sqlparse.tokens.Name Punctuation = sqlparse.tokens.Punctuation + Symbol = sqlparse.tokens.String.Symbol is_qualified = False for token in token_iterator: yield token @@ -39,7 +40,7 @@ def schema_qualify(parsed_query, schema="public"): yield next_token if not next_token: continue - if next_token.ttype != Name: + if next_token.ttype not in (Name, Symbol): yield next_token continue diff --git a/pglogical/tests/test_pglogical.py b/pglogical/tests/test_pglogical.py index f3e0f8f6..fc384d3b 100644 --- a/pglogical/tests/test_pglogical.py +++ b/pglogical/tests/test_pglogical.py @@ -124,11 +124,15 @@ class TestPglogical(TransactionCase): RETURNS NULL ON NULL INPUT''', 'drop table', "alter table 'test'", + 'ALTER TABLE "testtable" ADD COLUMN "test_field" double precision', ): qualified_query = ''.join( ''.join(str(token) for token in schema_qualify(parsed_query)) for parsed_query in sqlparse.parse(statement) ) self.assertEqual( - qualified_query, statement.replace('testtable', 'public.testtable') + qualified_query, + statement.replace('testtable', 'public.testtable').replace( + '"public.testtable"', 'public."testtable"' + ) )