drop table if exists test.aliases_test; create table test.aliases_test ( date Date, id UInt64, array default ['zero','one','two'], d1 default array, a1 alias array, a2 alias a1, a3 alias a2, a4 alias arrayMap(x -> toString(x), range(3)), a5 alias a4, a6 alias a5, `struct.d1` default array, `struct.a1` alias array, `struct.a2` alias struct.a1, `struct.a3` alias struct.a2, `struct.a4` alias arrayMap(x -> toString(x), range(3)), `struct.a5` alias struct.a4, `struct.a6` alias struct.a5 ) engine=MergeTree(date, id, 1); insert into test.aliases_test (id) values (0); select '-- Ensure ALIAS columns are not selected by asterisk'; select * from test.aliases_test; select '-- select DEFAULT and ALIAS arrays'; select d1, a1, a2, a3, a4, a5, a6 from test.aliases_test; select '-- select DEFAULT and ALIAS nested columns'; select struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test; select d1, a1 from test.aliases_test array join d1, a1; select d1, a1 from test.aliases_test array join d1, a1 as a2; select d1, a1 from test.aliases_test array join d1 as d2, a1; select '-- array join, but request the original columns'; select d1, a1 from test.aliases_test array join d1 as d2, a1 as a2; select '-- array join, do not use the result'; select array from test.aliases_test array join d1, a1; select array from test.aliases_test array join d1 as d2, a1 as a1; select '-- select DEFAULT and ALIAS arrays, array joining one at a time'; select array, d1, a1, a2, a3, a4, a5, a6 from test.aliases_test array join d1; select array, d1, a1, a2, a3, a4, a5, a6 from test.aliases_test array join a1; select array, d1, a1, a2, a3, a4, a5, a6 from test.aliases_test array join a2; select array, d1, a1, a2, a3, a4, a5, a6 from test.aliases_test array join a3; select array, d1, a1, a2, a3, a4, a5, a6 from test.aliases_test array join a4; select array, d1, a1, a2, a3, a4, a5, a6 from test.aliases_test array join a5; select array, d1, a1, a2, a3, a4, a5, a6 from test.aliases_test array join a6; select '-- select DEFAULT and ALIAS arrays, array joining one at a time and aliasing result with original name'; select array, d1, a1, a2, a3, a4, a5, a6 from test.aliases_test array join d1 as d1; select array, d1, a1, a2, a3, a4, a5, a6 from test.aliases_test array join a1 as a1; select array, d1, a1, a2, a3, a4, a5, a6 from test.aliases_test array join a2 as a2; select array, d1, a1, a2, a3, a4, a5, a6 from test.aliases_test array join a3 as a3; select array, d1, a1, a2, a3, a4, a5, a6 from test.aliases_test array join a4 as a4; select array, d1, a1, a2, a3, a4, a5, a6 from test.aliases_test array join a5 as a5; select array, d1, a1, a2, a3, a4, a5, a6 from test.aliases_test array join a6 as a6; select '-- select DEFAULT and ALIAS arrays and array join result, aliased as `joined`'; select array, d1, a1, a2, a3, a4, a5, a6, joined from test.aliases_test array join d1 as joined; select array, d1, a1, a2, a3, a4, a5, a6, joined from test.aliases_test array join a1 as joined; select array, d1, a1, a2, a3, a4, a5, a6, joined from test.aliases_test array join a2 as joined; select array, d1, a1, a2, a3, a4, a5, a6, joined from test.aliases_test array join a3 as joined; select array, d1, a1, a2, a3, a4, a5, a6, joined from test.aliases_test array join a4 as joined; select array, d1, a1, a2, a3, a4, a5, a6, joined from test.aliases_test array join a5 as joined; select array, d1, a1, a2, a3, a4, a5, a6, joined from test.aliases_test array join a6 as joined; select '-- select DEFAULT and ALIAS nested columns, array joining one at a time'; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct.d1; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct.a1; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct.a2; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct.a3; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct.a4; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct.a5; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct.a6; select '-- select DEFAULT and ALIAS nested columns, array joining one at a time and aliasing result with original name'; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct.d1 as `struct.d1`; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct.a1 as `struct.a1`; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct.a2 as `struct.a2`; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct.a3 as `struct.a3`; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct.a4 as `struct.a4`; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct.a5 as `struct.a5`; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct.a6 as `struct.a6`; select '-- select DEFAULT and ALIAS nested columns and array join result, aliased as `joined`'; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6, joined from test.aliases_test array join struct.d1 as joined; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6, joined from test.aliases_test array join struct.a1 as joined; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6, joined from test.aliases_test array join struct.a2 as joined; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6, joined from test.aliases_test array join struct.a3 as joined; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6, joined from test.aliases_test array join struct.a4 as joined; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6, joined from test.aliases_test array join struct.a5 as joined; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6, joined from test.aliases_test array join struct.a6 as joined; select '-- array join whole nested table'; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct; select '-- array join whole nested table not using the result'; select array from test.aliases_test array join struct; select '-- array join whole nested table, aliasing with original name'; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct as struct; select '-- array join whole nested table, aliasing with original name not using the result'; select array from test.aliases_test array join struct as struct; select '-- array join whole nested table, aliasing as `class`'; select array, class.d1, class.a1, class.a2, class.a3, class.a4, class.a5, class.a6 from test.aliases_test array join struct as class; select '-- array join whole nested table, aliasing as `class` and not using the result'; select array from test.aliases_test array join struct as class; select '-- array join whole nested table, aliasing as `class` but requesting the original columns'; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6 from test.aliases_test array join struct as class; select array, struct.d1, struct.a1, struct.a2, struct.a3, struct.a4, struct.a5, struct.a6, class.d1, class.a1, class.a2, class.a3, class.a4, class.a5, class.a6 from test.aliases_test array join struct as class; drop table test.aliases_test;