Adds table(s) in sqlparse.sql.Token as SqlTable to sql_tables.
(tokens)
| 115 | |
| 116 | |
| 117 | def _get_tables(tokens): |
| 118 | """Adds table(s) in sqlparse.sql.Token as SqlTable to sql_tables.""" |
| 119 | sql_tables = [] |
| 120 | table_names = set() |
| 121 | previous_token = None |
| 122 | in_from_clause_context = False |
| 123 | for token in tokens: |
| 124 | # Don't recurse into nested statements. |
| 125 | if isinstance(token, list): |
| 126 | continue |
| 127 | elif _is_underspecified_table_mention(previous_token, token): |
| 128 | for token_value in token.value.split(' '): |
| 129 | sql_table = _get_sql_table(token_value) |
| 130 | if sql_table.table_name in table_names: |
| 131 | raise UnsupportedSqlError( |
| 132 | 'Abstract SQL does not support joining a table with itself!') |
| 133 | table_names.add(sql_table.table_name) |
| 134 | sql_tables.append(sql_table) |
| 135 | elif _is_table_mention(previous_token, token, in_from_clause_context): |
| 136 | in_from_clause_context = True |
| 137 | sql_table = _get_sql_table(token.value) |
| 138 | if sql_table.table_name in table_names: |
| 139 | raise UnsupportedSqlError( |
| 140 | 'Abstract SQL does not support joining a table with itself!') |
| 141 | table_names.add(sql_table.table_name) |
| 142 | sql_tables.append(sql_table) |
| 143 | elif token.value != ',': |
| 144 | in_from_clause_context = False |
| 145 | previous_token = token |
| 146 | return sql_tables |
| 147 | |
| 148 | |
| 149 | def _is_underspecified_table_mention(previous_token, current_token): |
no test coverage detected
searching dependent graphs…