mirror of
https://github.com/apache/superset.git
synced 2026-05-12 19:35:17 +00:00
[sqlparse] Fixing table name extraction for ill-defined query (#7029)
(cherry picked from commit 07c340cf82)
This commit is contained in:
@@ -76,7 +76,7 @@ class ParsedQuery(object):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def __get_full_name(identifier):
|
def __get_full_name(identifier):
|
||||||
if len(identifier.tokens) > 1 and identifier.tokens[1].value == '.':
|
if len(identifier.tokens) > 2 and identifier.tokens[1].value == '.':
|
||||||
return '{}.{}'.format(identifier.tokens[0].value,
|
return '{}.{}'.format(identifier.tokens[0].value,
|
||||||
identifier.tokens[2].value)
|
identifier.tokens[2].value)
|
||||||
return identifier.get_real_name()
|
return identifier.get_real_name()
|
||||||
@@ -89,8 +89,8 @@ class ParsedQuery(object):
|
|||||||
# exclude subselects
|
# exclude subselects
|
||||||
if '(' not in str(identifier):
|
if '(' not in str(identifier):
|
||||||
table_name = self.__get_full_name(identifier)
|
table_name = self.__get_full_name(identifier)
|
||||||
if not table_name.startswith(CTE_PREFIX):
|
if table_name and not table_name.startswith(CTE_PREFIX):
|
||||||
self._table_names.add(self.__get_full_name(identifier))
|
self._table_names.add(table_name)
|
||||||
return
|
return
|
||||||
|
|
||||||
# store aliases
|
# store aliases
|
||||||
|
|||||||
@@ -47,6 +47,11 @@ class SupersetTestCase(unittest.TestCase):
|
|||||||
{'schemaname.tbname'},
|
{'schemaname.tbname'},
|
||||||
self.extract_tables('SELECT * FROM schemaname.tbname'))
|
self.extract_tables('SELECT * FROM schemaname.tbname'))
|
||||||
|
|
||||||
|
# Ill-defined schema/table.
|
||||||
|
self.assertEquals(
|
||||||
|
set(),
|
||||||
|
self.extract_tables('SELECT * FROM schemaname.'))
|
||||||
|
|
||||||
# quotes
|
# quotes
|
||||||
query = 'SELECT field1, field2 FROM tb_name'
|
query = 'SELECT field1, field2 FROM tb_name'
|
||||||
self.assertEquals({'tb_name'}, self.extract_tables(query))
|
self.assertEquals({'tb_name'}, self.extract_tables(query))
|
||||||
|
|||||||
Reference in New Issue
Block a user