Returns SqlColumn tuple for the given column_token string.
(column_token, tables, aliases_to_table_names,
table_schemas)
| 199 | |
| 200 | |
| 201 | def _get_sql_column(column_token, tables, aliases_to_table_names, |
| 202 | table_schemas): |
| 203 | """Returns SqlColumn tuple for the given column_token string.""" |
| 204 | # Check if token has alias. |
| 205 | column_token = column_token.lower() |
| 206 | |
| 207 | if '.' in column_token: |
| 208 | splits = column_token.split('.') |
| 209 | if len(splits) != 2: |
| 210 | raise ParseError('Unexpected token: %s' % column_token) |
| 211 | if splits[0] in aliases_to_table_names: |
| 212 | table_name = aliases_to_table_names[splits[0]].lower() |
| 213 | return SqlColumn(column_name=splits[1], table_name=table_name) |
| 214 | else: |
| 215 | # Assume splits[0] is a table name. |
| 216 | return SqlColumn(column_name=splits[1], table_name=splits[0].lower()) |
| 217 | else: |
| 218 | # No prefix, check if there is only one table in statement. |
| 219 | if len(tables) == 1: |
| 220 | table_name = tables[0].table_name.lower() |
| 221 | return SqlColumn(column_name=column_token, table_name=table_name) |
| 222 | else: |
| 223 | # Need to use schema information to disambiguate. |
| 224 | if table_schemas is None: |
| 225 | raise ParseError('Column name %s requires disambiguating between ' |
| 226 | 'tables %s using schema, but no schema provided.' % |
| 227 | (column_token, tables)) |
| 228 | table_name = _find_table_name_for_column(column_token, tables, |
| 229 | table_schemas) |
| 230 | if not table_name: |
| 231 | raise UnsupportedSqlError('Unexpected tables %s given column token %s' % |
| 232 | (tables, column_token)) |
| 233 | return SqlColumn(column_name=column_token, table_name=table_name.lower()) |
| 234 | |
| 235 | |
| 236 | def _add_column_spans(sqlparse_token, tables, aliases_to_table_names, |
no test coverage detected
searching dependent graphs…