diff --git a/dbms/src/Interpreters/ExpressionAnalyzer.cpp b/dbms/src/Interpreters/ExpressionAnalyzer.cpp index 121b05c2968eca1acbd5eac049ff96da8007d526..5d069a339ca10f8e0dccc9893367576ccb56eac7 100644 --- a/dbms/src/Interpreters/ExpressionAnalyzer.cpp +++ b/dbms/src/Interpreters/ExpressionAnalyzer.cpp @@ -1156,22 +1156,21 @@ void ExpressionAnalyzer::normalizeTreeImpl( { if (typeid_cast(asts[i].get())) { - ASTs all_columns; + Names all_columns_name; - if (storage) - { - /// If we select from a table, get only not MATERIALIZED, not ALIAS columns. - for (const auto & name_type : storage->getColumns().ordinary) - all_columns.emplace_back(std::make_shared(name_type.name)); - } - else - { - for (const auto & name_type : source_columns) - all_columns.emplace_back(std::make_shared(name_type.name)); - } + auto columns_name = storage ? storage->getColumns().ordinary.getNames() : source_columns.getNames(); + all_columns_name.insert(all_columns_name.begin(), columns_name.begin(), columns_name.end()); + + NameSet joined_columns; + collectJoinedColumns(joined_columns); + auto columns_from_joined_table = analyzed_join.columns_from_joined_table.getNames(); + all_columns_name.insert(all_columns_name.end(), columns_from_joined_table.begin(), columns_from_joined_table.end()); + /// HACK: The side effect of calling the `collectJoinedColumns` method, we have to reset it. + analyzed_join = AnalyzedJoin(); asts.erase(asts.begin() + i); - asts.insert(asts.begin() + i, all_columns.begin(), all_columns.end()); + for (size_t idx = 0; idx < all_columns_name.size(); idx++) + asts.insert(asts.begin() + idx + i, std::make_shared(all_columns_name[idx])); } } } diff --git a/dbms/tests/queries/0_stateless/00050_any_left_join.reference b/dbms/tests/queries/0_stateless/00050_any_left_join.reference index 463a9286abe99b556390c4b63dc7f1a2097879ba..dc46f7e8a75641ef1b2afe68251952e99243406f 100644 --- a/dbms/tests/queries/0_stateless/00050_any_left_join.reference +++ b/dbms/tests/queries/0_stateless/00050_any_left_join.reference @@ -1,10 +1,10 @@ -0 0 -1 0 -2 1 -3 0 -4 2 -5 0 -6 3 -7 0 -8 4 -9 0 +0 0 0 +1 1 0 +2 2 1 +3 3 0 +4 4 2 +5 5 0 +6 6 3 +7 7 0 +8 8 4 +9 9 0 diff --git a/dbms/tests/queries/0_stateless/00050_any_left_join.sql b/dbms/tests/queries/0_stateless/00050_any_left_join.sql index d1f03b79e41905bbf1817e3bef07011dbf8f624f..2440a9f93aba1e686973a79867588983d7321b13 100644 --- a/dbms/tests/queries/0_stateless/00050_any_left_join.sql +++ b/dbms/tests/queries/0_stateless/00050_any_left_join.sql @@ -1,4 +1,4 @@ -SELECT *, joined FROM +SELECT * FROM ( SELECT number AS k FROM system.numbers LIMIT 10 ) diff --git a/dbms/tests/queries/0_stateless/00051_any_inner_join.reference b/dbms/tests/queries/0_stateless/00051_any_inner_join.reference index 2a61b78f6eac6cda715e532f9f7e894069e3495c..a7949c6a35093ce1ca69aa1dadce4c8b24a6285f 100644 --- a/dbms/tests/queries/0_stateless/00051_any_inner_join.reference +++ b/dbms/tests/queries/0_stateless/00051_any_inner_join.reference @@ -1,5 +1,5 @@ -0 0 -2 1 -4 2 -6 3 -8 4 +0 0 0 +2 2 1 +4 4 2 +6 6 3 +8 8 4 diff --git a/dbms/tests/queries/0_stateless/00051_any_inner_join.sql b/dbms/tests/queries/0_stateless/00051_any_inner_join.sql index 53f245fb819a0ea31abc014911cca8536b919d44..a3ff3c437cfde2fa4b5949528c11b820c8ab509f 100644 --- a/dbms/tests/queries/0_stateless/00051_any_inner_join.sql +++ b/dbms/tests/queries/0_stateless/00051_any_inner_join.sql @@ -1,4 +1,4 @@ -SELECT *, joined FROM +SELECT * FROM ( SELECT number AS k FROM system.numbers LIMIT 10 ) diff --git a/dbms/tests/queries/0_stateless/00052_all_left_join.reference b/dbms/tests/queries/0_stateless/00052_all_left_join.reference index a33465fcd1d6678c4bc7a50bb97f7e781d2ce099..7d48d30448880af159880cb148f4cbb79a262d22 100644 --- a/dbms/tests/queries/0_stateless/00052_all_left_join.reference +++ b/dbms/tests/queries/0_stateless/00052_all_left_join.reference @@ -1,15 +1,15 @@ -0 0 -0 1 -1 2 -1 3 -2 4 -2 5 -3 6 -3 7 -4 8 -4 9 -5 0 -6 0 -7 0 -8 0 -9 0 +0 0 0 +0 0 1 +1 1 2 +1 1 3 +2 2 4 +2 2 5 +3 3 6 +3 3 7 +4 4 8 +4 4 9 +5 5 0 +6 6 0 +7 7 0 +8 8 0 +9 9 0 diff --git a/dbms/tests/queries/0_stateless/00052_all_left_join.sql b/dbms/tests/queries/0_stateless/00052_all_left_join.sql index 8476d035f6274497dc3482e5b0b0718fa65897a1..d7221bd2d8f75bf270e4616d916e570aee152576 100644 --- a/dbms/tests/queries/0_stateless/00052_all_left_join.sql +++ b/dbms/tests/queries/0_stateless/00052_all_left_join.sql @@ -1,4 +1,4 @@ -SELECT *, joined FROM +SELECT * FROM ( SELECT number AS k FROM system.numbers LIMIT 10 ) diff --git a/dbms/tests/queries/0_stateless/00053_all_inner_join.reference b/dbms/tests/queries/0_stateless/00053_all_inner_join.reference index 41707378e8dcde331181a303ba24c47ddfa54daf..24857668974f5f4a3bda7511b41c6bb42921ab54 100644 --- a/dbms/tests/queries/0_stateless/00053_all_inner_join.reference +++ b/dbms/tests/queries/0_stateless/00053_all_inner_join.reference @@ -1,10 +1,10 @@ -0 0 -0 1 -1 2 -1 3 -2 4 -2 5 -3 6 -3 7 -4 8 -4 9 +0 0 0 +0 0 1 +1 1 2 +1 1 3 +2 2 4 +2 2 5 +3 3 6 +3 3 7 +4 4 8 +4 4 9 diff --git a/dbms/tests/queries/0_stateless/00053_all_inner_join.sql b/dbms/tests/queries/0_stateless/00053_all_inner_join.sql index 565a85aa509332405c849528f03bb8b673199538..18a9458803305fdd8d9bf18ed8e1fb2a6be2dd5f 100644 --- a/dbms/tests/queries/0_stateless/00053_all_inner_join.sql +++ b/dbms/tests/queries/0_stateless/00053_all_inner_join.sql @@ -1,4 +1,4 @@ -SELECT *, joined FROM +SELECT * FROM ( SELECT number AS k FROM system.numbers LIMIT 10 ) diff --git a/dbms/tests/queries/0_stateless/00054_join_string.reference b/dbms/tests/queries/0_stateless/00054_join_string.reference index 75a0a5bc5fcfe7b5c3aea7b764bd7f8faa8f35c8..4c35b240b3257f2f81a66f9390091dfa36879bd7 100644 --- a/dbms/tests/queries/0_stateless/00054_join_string.reference +++ b/dbms/tests/queries/0_stateless/00054_join_string.reference @@ -1,15 +1,15 @@ -A 0 -A 1 -B 2 -B 3 -C 4 -C 5 -D 6 -D 7 -E 8 -E 9 -F 0 -G 0 -H 0 -I 0 -J 0 +A A 0 +A A 1 +B B 2 +B B 3 +C C 4 +C C 5 +D D 6 +D D 7 +E E 8 +E E 9 +F F 0 +G G 0 +H H 0 +I I 0 +J J 0 diff --git a/dbms/tests/queries/0_stateless/00054_join_string.sql b/dbms/tests/queries/0_stateless/00054_join_string.sql index ecb6d4af84ffa3506c532e2733142e586e55366a..7912a08c1d679b793c3f660378ebd37d9e58a745 100644 --- a/dbms/tests/queries/0_stateless/00054_join_string.sql +++ b/dbms/tests/queries/0_stateless/00054_join_string.sql @@ -1,4 +1,4 @@ -SELECT *, joined FROM +SELECT * FROM ( SELECT reinterpretAsString(number + reinterpretAsUInt8('A')) AS k FROM system.numbers LIMIT 10 ) diff --git a/dbms/tests/queries/0_stateless/00555_right_join_excessive_rows.reference b/dbms/tests/queries/0_stateless/00555_right_join_excessive_rows.reference index b033488efab1e39523a9506d74c2ea5fbb1e39d1..2a50aaf906b5afa82273ce061282506affc87b65 100644 --- a/dbms/tests/queries/0_stateless/00555_right_join_excessive_rows.reference +++ b/dbms/tests/queries/0_stateless/00555_right_join_excessive_rows.reference @@ -1,11 +1,11 @@ -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 +0 0 +1 1 +2 2 +3 3 +4 4 +5 5 +6 6 +7 7 +8 8 +9 9 +10 10 diff --git a/dbms/tests/queries/0_stateless/00585_union_all_subquery_aggregation_column_removal.reference b/dbms/tests/queries/0_stateless/00585_union_all_subquery_aggregation_column_removal.reference index a0265bdb7edb9e278eb79616bfc46b5e3d2d3713..936106d559ec42a6a3738d27e3bdd62604df141d 100644 --- a/dbms/tests/queries/0_stateless/00585_union_all_subquery_aggregation_column_removal.reference +++ b/dbms/tests/queries/0_stateless/00585_union_all_subquery_aggregation_column_removal.reference @@ -14,10 +14,10 @@ 2 facebook.com 1 google.com 2 yandex.ru -1 baidu.com -1 google.com -2 facebook.com -2 yandex.ru +1 baidu.com 1 baidu.com +1 google.com 1 google.com +2 facebook.com 2 facebook.com +2 yandex.ru 2 yandex.ru 1 1 2 diff --git a/dbms/tests/queries/0_stateless/00679_replace_asterisk.reference b/dbms/tests/queries/0_stateless/00679_replace_asterisk.reference new file mode 100644 index 0000000000000000000000000000000000000000..a217033ec2c5f99ce95dda61d686500e8ec7a279 --- /dev/null +++ b/dbms/tests/queries/0_stateless/00679_replace_asterisk.reference @@ -0,0 +1,2 @@ +1 2 +1 2 3 1 4 5 diff --git a/dbms/tests/queries/0_stateless/00679_replace_asterisk.sql b/dbms/tests/queries/0_stateless/00679_replace_asterisk.sql new file mode 100644 index 0000000000000000000000000000000000000000..7033de6198435918c62e9c724f2b40fab2cf0cc2 --- /dev/null +++ b/dbms/tests/queries/0_stateless/00679_replace_asterisk.sql @@ -0,0 +1,2 @@ +SELECT * FROM (SELECT 1 AS id, 2 AS value); +SELECT * FROM (SELECT 1 AS id, 2 AS value, 3 AS A) ANY INNER JOIN (SELECT 1 AS id, 4 AS values, 5 AS D) USING id;