Quanlong Huang has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/18099 )

Change subject: IMPALA-11049: Substitute order by elements when creating 
SortInfo
......................................................................


Patch Set 6:

> Patch Set 6:
>
> Hi Quanlong and Zoltan, there are almost 25 tests failed in jenkins job with 
> this patch. I checked these tests one by one, and found at least two problems.
> 1. UNION and VALUES execute failed, such as: select 1+1,2,3 UNION select 
> 4,5,6 order by 2. After patch, 'orderByElements_' been rewrite to SlotRef, in 
> 'reAnalyze' phase, when execute substitute again, SlotRef analyze failed due 
> to 'Preconditions.checkState(rawPath_ != null);', since example sql clause is 
> not a real column, just a 'NumericLiteral'. We can remove this check to slove 
> this problem.
> 2. Another problem is hard to resloved, INTERSECT sql return exception like 
> this: 'IllegalStateException: Illegal reference to non-materialized slot: 
> tid=3 sid=39'. I also read the code. The main reason is that when transform 
> INTERSECT to a SelectStmt like 'select count(*) xxx' in 
> StmtRewriter.rewriteSetOperationStatement(), all select list been 
> materizlized in SelectStmt.SelectAnalyzer.expandStar(), but SlotRef in 
> 'orderByElements_' not been materizlized, and add to this new SelectStmt's 
> order by directly. When this new SelectStmt execute analyze, there will be 
> some SlotRef in 'materializedExprs_' which are not 'materizlized'. Here is a 
> example:
> select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, 
> float_col, double_col, date_string_col, string_col, timestamp_col, year, 
> month from alltypestiny where year=2009 and month in (1,2,3)
> intersect
> select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, 
> float_col, double_col, date_string_col, string_col, timestamp_col, year, 
> month from alltypestiny where year=2009 and month in (1,2)
> intersect
> (select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, 
> float_col, double_col, date_string_col, string_col, timestamp_col, year, 
> month from alltypestiny where year=2009 and month=1)
> order by 1 limit 1;
>
> Besides, I'm not sure if there any other problems not been found, so I think 
> maybe we should just keep this patch adding check and analyze in 
> 'SimplifyCastExprRule', substitute order by elements maybe need to modify a 
> lot of code. How do you think?

Thanks for digging into this! I tend to add checks and analyze the exprs in 
need in the rules, which is we already done in ConvertToCNFRule.


--
To view, visit http://gerrit.cloudera.org:8080/18099
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I2780e04a6d5a32e224cd0470cf6f166a832363ec
Gerrit-Change-Number: 18099
Gerrit-PatchSet: 6
Gerrit-Owner: wangsheng <sky...@163.com>
Gerrit-Reviewer: Impala Public Jenkins <impala-public-jenk...@cloudera.com>
Gerrit-Reviewer: Quanlong Huang <huangquanl...@gmail.com>
Gerrit-Reviewer: Zoltan Borok-Nagy <borokna...@cloudera.com>
Gerrit-Reviewer: wangsheng <sky...@163.com>
Gerrit-Comment-Date: Thu, 27 Jan 2022 06:57:32 +0000
Gerrit-HasComments: No

Reply via email to