Description
for example:
create table alias_test_01(a INT, b STRING) ;
create table alias_test_02(a INT, b STRING) ;
create table alias_test_03(a INT, b STRING) ;
set hive.groupby.position.alias = true;
set hive.cbo.enable=true;
explain
select * from
alias_test_01 alias01
left join
(
select 2017 as a, b from alias_test_02 group by 1, 2
) alias02
on alias01.a = alias02.a
left join
alias_test_03 alias03
on alias01.a = alias03.a;
error info:
FAILED: SemanticException [Error 10220]: Invalid position alias in Group By
Position alias: 2017 does not exist
The Select List is indexed from 1 to 2
the first process Position Alias result:
when CBO optimize failed and reAnalyzeAST is true, position alias will be processed twice.
1. 'group by 1, 2' convert to 'group by 2017, b'
2. 'group by 2017, b' 2017 column does not exist