Skip to content

Commit ff1b7e4

Browse files
Backport ClickHouse#91524 to 25.8: Fix logical error caused by asterisks argument in remote function
1 parent 5df7076 commit ff1b7e4

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

src/Analyzer/Resolve/QueryAnalyzer.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5067,6 +5067,14 @@ void QueryAnalyzer::resolveTableFunction(QueryTreeNodePtr & table_function_node,
50675067

50685068
if (auto * expression_list = table_function_argument->as<ListNode>())
50695069
{
5070+
if (expression_list->getNodes().empty())
5071+
throw Exception(
5072+
ErrorCodes::BAD_ARGUMENTS,
5073+
"Table function {} argument at position {} resolved to an empty expression list (parsed as: {})",
5074+
table_function_name,
5075+
table_function_argument_index + 1,
5076+
table_function_argument->formatASTForErrorMessage());
5077+
50705078
for (auto & expression_list_node : expression_list->getNodes())
50715079
result_table_function_arguments.push_back(expression_list_node);
50725080
}

tests/queries/0_stateless/03749_table_function_argument_asterisk.reference

Whitespace-only changes.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
SELECT *
2+
FROM remote(*, '127.{1,2}', view(
3+
SELECT 2
4+
)); -- { serverError BAD_ARGUMENTS }
5+
6+
SELECT *
7+
FROM remote(*, view(
8+
SELECT 2
9+
)); -- { serverError BAD_ARGUMENTS }
10+
11+
SELECT *
12+
FROM remote(*, '127.{1,2}', view(
13+
SELECT toLowCardinality(2)
14+
)); -- { serverError BAD_ARGUMENTS }
15+
16+
SELECT *
17+
FROM remote(*, '127.{1,2}', view(
18+
SELECT 1
19+
FROM numbers(1)
20+
GROUP BY toLowCardinality(2)
21+
)); -- { serverError BAD_ARGUMENTS }
22+
23+
SELECT DISTINCT '/01650_drop_part_and_deduplication_partitioned_table/blocks/', 60, k1
24+
FROM remote(*, '127.{1,2}', view(SELECT 1 AS k1, 65535, 2 AS k2, 3 AS v
25+
FROM numbers(2, cityHash64(k1))
26+
WHERE toLowCardinality(60) GROUP BY GROUPING SETS ((toLowCardinality(2)))
27+
HAVING equals(k1, toNullable(60)))) FINAL; -- { serverError BAD_ARGUMENTS }
28+
29+
SELECT * FROM numbers(*, 2); -- { serverError BAD_ARGUMENTS }
30+
31+
SELECT * FROM numbers(2, *); -- { serverError BAD_ARGUMENTS }
32+
33+
SELECT * FROM numbers_mt(2, *); -- { serverError BAD_ARGUMENTS }
34+
35+
SELECT *
36+
FROM generateSeries(*, 1, 3); -- { serverError BAD_ARGUMENTS }

0 commit comments

Comments
 (0)