fix(ingest/bigquery) - Fix for Bigquery parser quoted semicolon in the FROM table name as well (#7277)

This commit is contained in:
Tamas Nemeth 2023-02-08 10:18:55 +01:00 committed by GitHub
parent c0bc477ca5
commit 1402071e48
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 1 deletions

View File

@ -79,7 +79,7 @@ class BigQuerySQLParser(SQLParser):
Note: ignore cases of having keyword FROM as part of datetime function EXTRACT
"""
return re.sub(
r"(?<!day\s)(?<!(date|time|hour|week|year)\s)(?<!month\s)(?<!(second|minute)\s)(?<!quarter\s)(?<!\.)(from\s)([^`\s()]+)",
r"(?<!day\s)(?<!(date|time|hour|week|year)\s)(?<!month\s)(?<!(second|minute)\s)(?<!quarter\s)(?<!\.)(from\s)([^`\s();]+)",
r"\3`\4`",
sql_query,
flags=re.IGNORECASE,

View File

@ -303,3 +303,19 @@ EXTRACT(TIME FROM time_field) AS col_17
FROM `src-project.dataset.src_table_a`
"""
)
def test_bigquery_sql_parser_with_semicolon_in_from():
sql_query = """CREATE VIEW `acryl-staging.smoke_test_db.view_from_table`\nAS select * from smoke_test_db.base_table;"""
table_list = BigQuerySQLParser(sql_query).get_tables()
table_list.sort()
assert table_list == ["smoke_test_db.base_table"]
def test_bigquery_sql_parser_with_parenthesis_in_from():
sql_query = """CREATE VIEW `acryl-staging.smoke_test_db.view_from_table`\nAS (select * from smoke_test_db.base_table);"""
table_list = BigQuerySQLParser(sql_query).get_tables()
table_list.sort()
assert table_list == ["smoke_test_db.base_table"]