sql-metadata icon indicating copy to clipboard operation
sql-metadata copied to clipboard

Similar to issue #296 - When using alias.* in sub-query a column reference in parent query fails @ parser.columns

Open anandupad opened this issue 2 years ago • 0 comments

The sql below works as expected

select q.hx_id , q.text from ( select prod_code, s.* from testdb.test_table s inner join testdb.test_table2 p on s.s1_fk=p.p1_sk ) q

But the following SQL errors out when calling parser.columns

with x as ( select d.nbr, d.af_pk from test_db.test_table3 d ) select q.hx_id , q.text from ( select prod_code, s.* from testdb.test_table s inner join testdb.test_table2 p on s.s1_fk=p.p1_sk ) q inner join x on q.s2_fk=x.af_pk

Traceback (most recent call last): File "", line 1, in File "C:\workspace\vrt_python37\lib\site-packages\sql_metadata\parser.py", line 214, in columns self._handle_column_save(token=token, columns=columns) File "C:\workspace\vrt_python37\lib\site-packages\sql_metadata\parser.py", line 647, in _handle_column_save column = self._resolve_sub_queries(column) File "C:\workspace\vrt_python37\lib\site-packages\sql_metadata\parser.py", line 786, in _resolve_sub_queries already_parsed=self._subqueries_parsers, File "C:\workspace\vrt_python37\lib\site-packages\sql_metadata\parser.py", line 834, in _resolve_nested_query raise exc # pragma: no cover File "C:\workspace\vrt_python37\lib\site-packages\sql_metadata\parser.py", line 828, in _resolve_nested_query column_name ValueError: 's2_fk' is not in list

Sample code

from sql_metadata import Parser str="""with x as ( select d.nbr, d.af_pk from test_db.test_table3 d ) select src.hx_id , src.text from ( select prod_code, s.* from testdb.test_table s inner join testdb.test_table2 p on s.s1_fk=p.p1_sk ) q inner join x on q.s2_fk=x.af_pk""" parser=Parser(str) parser.columns

anandupad avatar May 04 '23 03:05 anandupad