File tree Expand file tree Collapse file tree 2 files changed +32
-1
lines changed
Expand file tree Collapse file tree 2 files changed +32
-1
lines changed Original file line number Diff line number Diff line change @@ -335,6 +335,11 @@ def tables(self) -> List[str]:
335335 and token .previous_token .normalized not in ["AS" , "WITH" ]
336336 and token .normalized not in ["AS" , "SELECT" ]
337337 ):
338+ # handle CREATE TABLE queries (#35)
339+ # skip keyword that are withing parenthesis-wrapped list of column
340+ if self ._is_create_table_query and token .is_in_parenthesis :
341+ continue
342+
338343 if token .next_token .is_dot :
339344 pass # part of the qualified name
340345 elif token .is_in_parenthesis and (
@@ -728,3 +733,16 @@ def _preprocess_query(self) -> str:
728733 query = re .sub (r"`([^`]+)`\.`([^`]+)`" , r"\1.\2" , query )
729734
730735 return query
736+
737+ @property
738+ def _is_create_table_query (self ) -> bool :
739+ """
740+ Return True if the query begins with "CREATE TABLE" statement
741+ """
742+ if (
743+ self .tokens [0 ].normalized == "CREATE"
744+ and self .tokens [1 ].normalized == "TABLE"
745+ ):
746+ return True
747+
748+ return False
Original file line number Diff line number Diff line change 11from sql_metadata import Parser
22
33
4+ def test_is_create_table_query ():
5+ assert Parser ("BEGIN" )._is_create_table_query is False
6+ assert Parser ("SELECT * FROM `foo` ()" )._is_create_table_query is False
7+
8+ assert Parser ("CREATE TABLE `foo` ()" )._is_create_table_query is True
9+ assert (
10+ Parser (
11+ "create table abc.foo as SELECT pqr.foo1 , ab.foo2 FROM foo pqr, bar ab"
12+ )._is_create_table_query
13+ is True
14+ )
15+
16+
417def test_create_table ():
518 parser = Parser (
619 """
@@ -14,4 +27,4 @@ def test_create_table():
1427 )
1528
1629 assert parser .tables == ["new_table" ]
17- assert parser .columns == ["item_id" , "foo" ]
30+ # assert parser.columns == ["item_id", "foo"]
You can’t perform that action at this time.
0 commit comments