Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
anandupad opened this issue May 4, 2023 · 0 comments

Comments

@anandupad
Copy link

anandupad commented May 4, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant