MCPcopy Create free account
hub / github.com/google-research/language / _get_sql_column

Function _get_sql_column

language/xsp/data_preprocessing/abstract_sql.py:201–233  ·  view source on GitHub ↗

Returns SqlColumn tuple for the given column_token string.

(column_token, tables, aliases_to_table_names,
                    table_schemas)

Source from the content-addressed store, hash-verified

199
200
201def _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
236def _add_column_spans(sqlparse_token, tables, aliases_to_table_names,

Callers 1

_add_column_spansFunction · 0.85

Calls 4

UnsupportedSqlErrorClass · 0.85
splitMethod · 0.80
ParseErrorClass · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…