You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, Verdict parses queries containing UNION ALL without errors. However, the parse tree at the end only contains the last SELECT statement of the query.
For example, parsing the following SQL query:
select'web'as channel
,web.item
,web.return_ratio
,web.return_rank
,web.currency_rankfrom (
select
item
,return_ratio
,currency_ratio
,rank() over (order by return_ratio) as return_rank
,rank() over (order by currency_ratio) as currency_rank
from
( selectws.ws_item_skas item
,(cast(sum(coalesce(wr.wr_return_quantity,0)) asdecimal(15,4))/
cast(sum(coalesce(ws.ws_quantity,0)) asdecimal(15,4) )) as return_ratio
,(cast(sum(coalesce(wr.wr_return_amt,0)) asdecimal(15,4))/
cast(sum(coalesce(ws.ws_net_paid,0)) asdecimal(15,4) )) as currency_ratio
from
web_sales ws left outer join web_returns wr
on (ws.ws_order_number=wr.wr_order_numberandws.ws_item_sk=wr.wr_item_sk)
,date_dim
wherewr.wr_return_amt>10000andws.ws_net_profit>1andws.ws_net_paid>0andws.ws_quantity>0andws.ws_sold_date_sk=date_dim.d_date_skand d_year =2000and d_moy =12group byws.ws_item_sk
) in_web
) web
where
(
web.return_rank<=10orweb.currency_rank<=10
)
union allselect'catalog'as channel
,catalog.item
,catalog.return_ratio
,catalog.return_rank
,catalog.currency_rankfrom (
select
item
,return_ratio
,currency_ratio
,rank() over (order by return_ratio) as return_rank
,rank() over (order by currency_ratio) as currency_rank
from
( selectcs.cs_item_skas item
,(cast(sum(coalesce(cr.cr_return_quantity,0)) asdecimal(15,4))/
cast(sum(coalesce(cs.cs_quantity,0)) asdecimal(15,4) )) as return_ratio
,(cast(sum(coalesce(cr.cr_return_amount,0)) asdecimal(15,4))/
cast(sum(coalesce(cs.cs_net_paid,0)) asdecimal(15,4) )) as currency_ratio
from
catalog_sales cs left outer join catalog_returns cr
on (cs.cs_order_number=cr.cr_order_numberandcs.cs_item_sk=cr.cr_item_sk)
,date_dim
wherecr.cr_return_amount>10000andcs.cs_net_profit>1andcs.cs_net_paid>0andcs.cs_quantity>0and cs_sold_date_sk = d_date_sk
and d_year =2000and d_moy =12group bycs.cs_item_sk
) in_cat
) catalog
where
(
catalog.return_rank<=10orcatalog.currency_rank<=10
)
union allselect'store'as channel
,store.item
,store.return_ratio
,store.return_rank
,store.currency_rankfrom (
select
item
,return_ratio
,currency_ratio
,rank() over (order by return_ratio) as return_rank
,rank() over (order by currency_ratio) as currency_rank
from
( selectsts.ss_item_skas item
,(cast(sum(coalesce(sr.sr_return_quantity,0)) asdecimal(15,4))/cast(sum(coalesce(sts.ss_quantity,0)) asdecimal(15,4) )) as return_ratio
,(cast(sum(coalesce(sr.sr_return_amt,0)) asdecimal(15,4))/cast(sum(coalesce(sts.ss_net_paid,0)) asdecimal(15,4) )) as currency_ratio
from
store_sales sts left outer join store_returns sr
on (sts.ss_ticket_number=sr.sr_ticket_numberandsts.ss_item_sk=sr.sr_item_sk)
,date_dim
wheresr.sr_return_amt>10000andsts.ss_net_profit>1andsts.ss_net_paid>0andsts.ss_quantity>0and ss_sold_date_sk = d_date_sk
and d_year =2000and d_moy =12group bysts.ss_item_sk
) in_store
) store
where (
store.return_rank<=10orstore.currency_rank<=10
)
order by1,4,5limit100;
results in the following parse tree:
LimitedRelation(vt37) [100]
OrderedRelation(vt37) [1 ASC, 4 ASC, 5 ASC]
ProjectedRelation(vt37) ['store' AS `channel`, store.`item` AS `item`, store.`return_ratio` AS `return_ratio`, store.`return_rank` AS `return_rank`, store.`currency_rank` AS `currency_rank`]
FilteredRelation(store) [(store.`return_rank` <= 10) OR (store.`currency_rank` <= 10)]
ProjectedRelation(store) [in_store.`item` AS `item`, in_store.`return_ratio` AS `return_ratio`, in_store.`currency_ratio` AS `currency_ratio`, rank() OVER (order by `return_ratio`) AS `return_rank`, rank() OVER (order by `currency_ratio`) AS `currency_rank`]
AggregatedRelation(in_store) [sts.`ss_item_sk` AS `item`, (cast(sum(coalesce(sr.`sr_return_quantity`,0)) as decimal(15,4)) / cast(sum(coalesce(sts.`ss_quantity`,0)) as decimal(15,4))) AS `return_ratio`, (cast(sum(coalesce(sr.`sr_return_amt`,0)) as decimal(15,4)) / cast(sum(coalesce(sts.`ss_net_paid`,0)) as decimal(15,4))) AS `currency_ratio`]
GroupedRelation(sts-sr-vt30) [sts.`ss_item_sk`]
FilteredRelation(sts-sr-vt30) [(((((sr.`sr_return_amt` > 10000) AND (sts.`ss_net_profit` > 1)) AND (sts.`ss_net_paid` > 0)) AND (sts.`ss_quantity` > 0)) AND (vt30.`d_year` = 2000)) AND (vt30.`d_moy` = 12)]
JoinedRelation(sts-sr-vt30) [(sts.`ss_sold_date_sk`,vt30.`d_date_sk`)]
JoinedRelation(sts-sr) [(sts.`ss_ticket_number`,sr.`sr_ticket_number`), (sts.`ss_item_sk`,sr.`sr_item_sk`)]
SingleRelation(tpcds_bin_partitioned_orc_2.store_sales, sts)
SingleRelation(tpcds_bin_partitioned_orc_2.store_returns, sr)
SingleRelation(tpcds_bin_partitioned_orc_2.date_dim, vt30)
The result parse tree is the last SELECT statement, missing all other previous SELECT statements linked with UNION ALL.
The text was updated successfully, but these errors were encountered:
Currently, Verdict parses queries containing UNION ALL without errors. However, the parse tree at the end only contains the last SELECT statement of the query.
For example, parsing the following SQL query:
results in the following parse tree:
The result parse tree is the last SELECT statement, missing all other previous SELECT statements linked with UNION ALL.
The text was updated successfully, but these errors were encountered: