diff --git a/internal/explain/functions.go b/internal/explain/functions.go index 0685fd0834..05a4d45914 100644 --- a/internal/explain/functions.go +++ b/internal/explain/functions.go @@ -77,21 +77,10 @@ func explainFunctionCallWithAlias(sb *strings.Builder, n *ast.FunctionCall, alia } } -// windowSpecHasContent returns true if the window spec has any content -// (PartitionBy, OrderBy, or Frame with offset). Empty OVER () returns false. +// windowSpecHasContent returns true if the window spec has any content. +// ClickHouse EXPLAIN AST never includes WindowDefinition nodes for window +// functions, even when OVER clause has PARTITION BY, ORDER BY, or frame specs. func windowSpecHasContent(w *ast.WindowSpec) bool { - if w == nil { - return false - } - if len(w.PartitionBy) > 0 { - return true - } - if len(w.OrderBy) > 0 { - return true - } - if w.Frame != nil && w.Frame.StartBound != nil && w.Frame.StartBound.Offset != nil { - return true - } return false } diff --git a/parser/testdata/01568_window_functions_distributed/metadata.json b/parser/testdata/01568_window_functions_distributed/metadata.json index 7063f05793..0967ef424b 100644 --- a/parser/testdata/01568_window_functions_distributed/metadata.json +++ b/parser/testdata/01568_window_functions_distributed/metadata.json @@ -1,7 +1 @@ -{ - "explain_todo": { - "stmt1": true, - "stmt14": true, - "stmt2": true - } -} +{} diff --git a/parser/testdata/01571_window_functions/metadata.json b/parser/testdata/01571_window_functions/metadata.json index 22f48f22f2..875fd7e8b1 100644 --- a/parser/testdata/01571_window_functions/metadata.json +++ b/parser/testdata/01571_window_functions/metadata.json @@ -1,9 +1,6 @@ { "explain_todo": { - "stmt10": true, "stmt12": true, - "stmt3": true, - "stmt7": true, - "stmt9": true + "stmt3": true } } diff --git a/parser/testdata/01591_window_functions/metadata.json b/parser/testdata/01591_window_functions/metadata.json index 6034ddb947..c2f288c6b8 100644 --- a/parser/testdata/01591_window_functions/metadata.json +++ b/parser/testdata/01591_window_functions/metadata.json @@ -1,8 +1,5 @@ { "explain_todo": { - "stmt10": true, - "stmt100": true, - "stmt101": true, "stmt102": true, "stmt103": true, "stmt104": true, @@ -11,35 +8,20 @@ "stmt107": true, "stmt108": true, "stmt109": true, - "stmt11": true, "stmt110": true, "stmt111": true, "stmt112": true, - "stmt12": true, - "stmt14": true, - "stmt16": true, - "stmt17": true, - "stmt21": true, - "stmt22": true, - "stmt23": true, "stmt28": true, - "stmt29": true, "stmt31": true, - "stmt32": true, "stmt34": true, "stmt35": true, "stmt36": true, "stmt37": true, "stmt38": true, "stmt39": true, - "stmt40": true, "stmt41": true, - "stmt42": true, - "stmt43": true, - "stmt44": true, "stmt45": true, "stmt46": true, - "stmt48": true, "stmt50": true, "stmt51": true, "stmt52": true, @@ -48,16 +30,7 @@ "stmt55": true, "stmt56": true, "stmt57": true, - "stmt58": true, - "stmt59": true, - "stmt6": true, - "stmt60": true, - "stmt61": true, - "stmt64": true, - "stmt65": true, - "stmt68": true, "stmt69": true, - "stmt7": true, "stmt70": true, "stmt71": true, "stmt72": true, @@ -78,7 +51,6 @@ "stmt87": true, "stmt88": true, "stmt89": true, - "stmt9": true, "stmt90": true, "stmt91": true, "stmt92": true, @@ -87,7 +59,6 @@ "stmt95": true, "stmt96": true, "stmt97": true, - "stmt98": true, - "stmt99": true + "stmt98": true } } diff --git a/parser/testdata/01592_long_window_functions1/metadata.json b/parser/testdata/01592_long_window_functions1/metadata.json index f4c74e32be..0967ef424b 100644 --- a/parser/testdata/01592_long_window_functions1/metadata.json +++ b/parser/testdata/01592_long_window_functions1/metadata.json @@ -1,5 +1 @@ -{ - "explain_todo": { - "stmt10": true - } -} +{} diff --git a/parser/testdata/01592_window_functions/metadata.json b/parser/testdata/01592_window_functions/metadata.json index b86d1cf523..0967ef424b 100644 --- a/parser/testdata/01592_window_functions/metadata.json +++ b/parser/testdata/01592_window_functions/metadata.json @@ -1,11 +1 @@ -{ - "explain_todo": { - "stmt10": true, - "stmt12": true, - "stmt14": true, - "stmt16": true, - "stmt18": true, - "stmt20": true, - "stmt8": true - } -} +{} diff --git a/parser/testdata/01655_window_functions_cume_dist/metadata.json b/parser/testdata/01655_window_functions_cume_dist/metadata.json index 000a0a8425..0967ef424b 100644 --- a/parser/testdata/01655_window_functions_cume_dist/metadata.json +++ b/parser/testdata/01655_window_functions_cume_dist/metadata.json @@ -1,15 +1 @@ -{ - "explain_todo": { - "stmt12": true, - "stmt16": true, - "stmt20": true, - "stmt21": true, - "stmt22": true, - "stmt24": true, - "stmt26": true, - "stmt28": true, - "stmt3": true, - "stmt5": true, - "stmt7": true - } -} +{} diff --git a/parser/testdata/01802_rank_corr_mann_whitney_over_window/metadata.json b/parser/testdata/01802_rank_corr_mann_whitney_over_window/metadata.json index b65b07d7a6..0967ef424b 100644 --- a/parser/testdata/01802_rank_corr_mann_whitney_over_window/metadata.json +++ b/parser/testdata/01802_rank_corr_mann_whitney_over_window/metadata.json @@ -1,5 +1 @@ -{ - "explain_todo": { - "stmt4": true - } -} +{} diff --git a/parser/testdata/02020_exponential_smoothing_cross_block/metadata.json b/parser/testdata/02020_exponential_smoothing_cross_block/metadata.json index e9d6e46171..0967ef424b 100644 --- a/parser/testdata/02020_exponential_smoothing_cross_block/metadata.json +++ b/parser/testdata/02020_exponential_smoothing_cross_block/metadata.json @@ -1,5 +1 @@ -{ - "explain_todo": { - "stmt1": true - } -} +{} diff --git a/parser/testdata/02126_lc_window_functions/metadata.json b/parser/testdata/02126_lc_window_functions/metadata.json index 3455a1864a..7b4ddafa53 100644 --- a/parser/testdata/02126_lc_window_functions/metadata.json +++ b/parser/testdata/02126_lc_window_functions/metadata.json @@ -1,8 +1,6 @@ { "explain_todo": { - "stmt2": true, "stmt3": true, - "stmt4": true, - "stmt5": true + "stmt4": true } } diff --git a/parser/testdata/02129_window_functions_disable_optimizations/metadata.json b/parser/testdata/02129_window_functions_disable_optimizations/metadata.json index 943b275814..0967ef424b 100644 --- a/parser/testdata/02129_window_functions_disable_optimizations/metadata.json +++ b/parser/testdata/02129_window_functions_disable_optimizations/metadata.json @@ -1,6 +1 @@ -{ - "explain_todo": { - "stmt4": true, - "stmt6": true - } -} +{} diff --git a/parser/testdata/02306_window_move_row_number_fix/metadata.json b/parser/testdata/02306_window_move_row_number_fix/metadata.json index e9d6e46171..0967ef424b 100644 --- a/parser/testdata/02306_window_move_row_number_fix/metadata.json +++ b/parser/testdata/02306_window_move_row_number_fix/metadata.json @@ -1,5 +1 @@ -{ - "explain_todo": { - "stmt1": true - } -} +{} diff --git a/parser/testdata/02346_non_negative_derivative/metadata.json b/parser/testdata/02346_non_negative_derivative/metadata.json index 0c3658225c..0967ef424b 100644 --- a/parser/testdata/02346_non_negative_derivative/metadata.json +++ b/parser/testdata/02346_non_negative_derivative/metadata.json @@ -1,21 +1 @@ -{ - "explain_todo": { - "stmt10": true, - "stmt11": true, - "stmt12": true, - "stmt13": true, - "stmt14": true, - "stmt15": true, - "stmt16": true, - "stmt17": true, - "stmt18": true, - "stmt19": true, - "stmt20": true, - "stmt21": true, - "stmt22": true, - "stmt6": true, - "stmt7": true, - "stmt8": true, - "stmt9": true - } -} +{} diff --git a/parser/testdata/02366_window_function_order_by/metadata.json b/parser/testdata/02366_window_function_order_by/metadata.json index bc141058a4..0967ef424b 100644 --- a/parser/testdata/02366_window_function_order_by/metadata.json +++ b/parser/testdata/02366_window_function_order_by/metadata.json @@ -1,6 +1 @@ -{ - "explain_todo": { - "stmt2": true, - "stmt3": true - } -} +{} diff --git a/parser/testdata/02428_combinators_with_over_statement/metadata.json b/parser/testdata/02428_combinators_with_over_statement/metadata.json index 0927967ca4..0967ef424b 100644 --- a/parser/testdata/02428_combinators_with_over_statement/metadata.json +++ b/parser/testdata/02428_combinators_with_over_statement/metadata.json @@ -1 +1 @@ -{"explain_todo":{"stmt5":true,"stmt6":true,"stmt7":true,"stmt8":true,"stmt9":true}} +{} diff --git a/parser/testdata/02513_analyzer_sort_msan/metadata.json b/parser/testdata/02513_analyzer_sort_msan/metadata.json index 8556c3021f..0967ef424b 100644 --- a/parser/testdata/02513_analyzer_sort_msan/metadata.json +++ b/parser/testdata/02513_analyzer_sort_msan/metadata.json @@ -1 +1 @@ -{"explain_todo":{"stmt5":true}} +{} diff --git a/parser/testdata/02532_analyzer_aggregation_with_rollup/metadata.json b/parser/testdata/02532_analyzer_aggregation_with_rollup/metadata.json index ef58f80315..0967ef424b 100644 --- a/parser/testdata/02532_analyzer_aggregation_with_rollup/metadata.json +++ b/parser/testdata/02532_analyzer_aggregation_with_rollup/metadata.json @@ -1,5 +1 @@ -{ - "explain_todo": { - "stmt2": true - } -} +{} diff --git a/parser/testdata/02560_window_ntile/metadata.json b/parser/testdata/02560_window_ntile/metadata.json index 8c70eee315..0967ef424b 100644 --- a/parser/testdata/02560_window_ntile/metadata.json +++ b/parser/testdata/02560_window_ntile/metadata.json @@ -1,23 +1 @@ -{ - "explain_todo": { - "stmt1": true, - "stmt10": true, - "stmt11": true, - "stmt12": true, - "stmt13": true, - "stmt14": true, - "stmt15": true, - "stmt16": true, - "stmt17": true, - "stmt18": true, - "stmt19": true, - "stmt2": true, - "stmt3": true, - "stmt4": true, - "stmt5": true, - "stmt6": true, - "stmt7": true, - "stmt8": true, - "stmt9": true - } -} +{} diff --git a/parser/testdata/02561_sorting_constants_and_distinct_crash/metadata.json b/parser/testdata/02561_sorting_constants_and_distinct_crash/metadata.json index d5e9483c45..c84e30800d 100644 --- a/parser/testdata/02561_sorting_constants_and_distinct_crash/metadata.json +++ b/parser/testdata/02561_sorting_constants_and_distinct_crash/metadata.json @@ -1,7 +1,6 @@ { "explain_todo": { "stmt3": true, - "stmt5": true, "stmt7": true } } diff --git a/parser/testdata/02833_window_func_range_offset/metadata.json b/parser/testdata/02833_window_func_range_offset/metadata.json index 6ed702cc94..0967ef424b 100644 --- a/parser/testdata/02833_window_func_range_offset/metadata.json +++ b/parser/testdata/02833_window_func_range_offset/metadata.json @@ -1,8 +1 @@ -{ - "explain_todo": { - "stmt1": true, - "stmt2": true, - "stmt3": true, - "stmt4": true - } -} +{} diff --git a/parser/testdata/02884_parallel_window_functions/metadata.json b/parser/testdata/02884_parallel_window_functions/metadata.json index 763e0697ae..ef58f80315 100644 --- a/parser/testdata/02884_parallel_window_functions/metadata.json +++ b/parser/testdata/02884_parallel_window_functions/metadata.json @@ -1,8 +1,5 @@ { "explain_todo": { - "stmt2": true, - "stmt3": true, - "stmt4": true, - "stmt6": true + "stmt2": true } } diff --git a/parser/testdata/02884_parallel_window_functions_bug/metadata.json b/parser/testdata/02884_parallel_window_functions_bug/metadata.json index 96c0b69c1d..682bda1cbc 100644 --- a/parser/testdata/02884_parallel_window_functions_bug/metadata.json +++ b/parser/testdata/02884_parallel_window_functions_bug/metadata.json @@ -1,7 +1,6 @@ { "explain_todo": { "stmt1": true, - "stmt2": true, - "stmt5": true + "stmt2": true } } diff --git a/parser/testdata/02900_window_function_with_sparse_column/metadata.json b/parser/testdata/02900_window_function_with_sparse_column/metadata.json index 21be370037..b563327205 100644 --- a/parser/testdata/02900_window_function_with_sparse_column/metadata.json +++ b/parser/testdata/02900_window_function_with_sparse_column/metadata.json @@ -1,9 +1,5 @@ { "explain_todo": { - "stmt3": true, - "stmt4": true, - "stmt5": true, - "stmt7": true, - "stmt8": true + "stmt7": true } } diff --git a/parser/testdata/02922_respect_nulls_extensive/metadata.json b/parser/testdata/02922_respect_nulls_extensive/metadata.json index a5d10c255a..3268fa43a8 100644 --- a/parser/testdata/02922_respect_nulls_extensive/metadata.json +++ b/parser/testdata/02922_respect_nulls_extensive/metadata.json @@ -1,31 +1,13 @@ { "explain_todo": { - "stmt1": true, - "stmt10": true, - "stmt11": true, - "stmt12": true, - "stmt13": true, - "stmt14": true, - "stmt15": true, - "stmt2": true, - "stmt3": true, - "stmt32": true, - "stmt33": true, - "stmt34": true, - "stmt35": true, "stmt36": true, "stmt38": true, - "stmt4": true, "stmt40": true, "stmt41": true, "stmt42": true, "stmt44": true, "stmt46": true, "stmt47": true, - "stmt5": true, - "stmt6": true, - "stmt7": true, - "stmt8": true, - "stmt9": true + "stmt6": true } } diff --git a/parser/testdata/02962_parallel_window_functions_different_partitioning/metadata.json b/parser/testdata/02962_parallel_window_functions_different_partitioning/metadata.json index 0f293987f1..0967ef424b 100644 --- a/parser/testdata/02962_parallel_window_functions_different_partitioning/metadata.json +++ b/parser/testdata/02962_parallel_window_functions_different_partitioning/metadata.json @@ -1,6 +1 @@ -{ - "explain_todo": { - "stmt5": true, - "stmt6": true - } -} +{} diff --git a/parser/testdata/03037_precent_rank/metadata.json b/parser/testdata/03037_precent_rank/metadata.json index 4ec8630990..0967ef424b 100644 --- a/parser/testdata/03037_precent_rank/metadata.json +++ b/parser/testdata/03037_precent_rank/metadata.json @@ -1,6 +1 @@ -{ - "explain_todo": { - "stmt12": true, - "stmt9": true - } -} +{} diff --git a/parser/testdata/03095_window_functions_qualify/metadata.json b/parser/testdata/03095_window_functions_qualify/metadata.json index 87947ce4d5..0967ef424b 100644 --- a/parser/testdata/03095_window_functions_qualify/metadata.json +++ b/parser/testdata/03095_window_functions_qualify/metadata.json @@ -1,8 +1 @@ -{ - "explain_todo": { - "stmt12": true, - "stmt14": true, - "stmt2": true, - "stmt4": true - } -} +{} diff --git a/parser/testdata/03112_analyzer_not_found_column_in_block/metadata.json b/parser/testdata/03112_analyzer_not_found_column_in_block/metadata.json index 3a06a4a1ac..0967ef424b 100644 --- a/parser/testdata/03112_analyzer_not_found_column_in_block/metadata.json +++ b/parser/testdata/03112_analyzer_not_found_column_in_block/metadata.json @@ -1,5 +1 @@ -{ - "explain_todo": { - "stmt5": true - } -} +{} diff --git a/parser/testdata/03122_analyzer_collate_in_window_function/metadata.json b/parser/testdata/03122_analyzer_collate_in_window_function/metadata.json index dbdbb76d4f..0967ef424b 100644 --- a/parser/testdata/03122_analyzer_collate_in_window_function/metadata.json +++ b/parser/testdata/03122_analyzer_collate_in_window_function/metadata.json @@ -1,5 +1 @@ -{ - "explain_todo": { - "stmt6": true - } -} +{} diff --git a/parser/testdata/03146_tpc_ds_grouping/metadata.json b/parser/testdata/03146_tpc_ds_grouping/metadata.json index 7b4ddafa53..0967ef424b 100644 --- a/parser/testdata/03146_tpc_ds_grouping/metadata.json +++ b/parser/testdata/03146_tpc_ds_grouping/metadata.json @@ -1,6 +1 @@ -{ - "explain_todo": { - "stmt3": true, - "stmt4": true - } -} +{} diff --git a/parser/testdata/03165_distinct_with_window_func_crash/metadata.json b/parser/testdata/03165_distinct_with_window_func_crash/metadata.json index 3a06a4a1ac..0967ef424b 100644 --- a/parser/testdata/03165_distinct_with_window_func_crash/metadata.json +++ b/parser/testdata/03165_distinct_with_window_func_crash/metadata.json @@ -1,5 +1 @@ -{ - "explain_todo": { - "stmt5": true - } -} +{} diff --git a/parser/testdata/03173_forbid_qualify/metadata.json b/parser/testdata/03173_forbid_qualify/metadata.json index 8f6d4ba033..b563327205 100644 --- a/parser/testdata/03173_forbid_qualify/metadata.json +++ b/parser/testdata/03173_forbid_qualify/metadata.json @@ -1,7 +1,5 @@ { "explain_todo": { - "stmt5": true, - "stmt6": true, "stmt7": true } } diff --git a/parser/testdata/03205_parallel_window_finctions_and_column_sparse_bug/metadata.json b/parser/testdata/03205_parallel_window_finctions_and_column_sparse_bug/metadata.json index 4f516b9957..364c0f8d2e 100644 --- a/parser/testdata/03205_parallel_window_finctions_and_column_sparse_bug/metadata.json +++ b/parser/testdata/03205_parallel_window_finctions_and_column_sparse_bug/metadata.json @@ -2,9 +2,6 @@ "explain_todo": { "stmt12": true, "stmt13": true, - "stmt19": true, - "stmt2": true, - "stmt7": true, - "stmt9": true + "stmt2": true } } diff --git a/parser/testdata/03213_denseRank_percentRank_alias/metadata.json b/parser/testdata/03213_denseRank_percentRank_alias/metadata.json index c45b7602ba..0967ef424b 100644 --- a/parser/testdata/03213_denseRank_percentRank_alias/metadata.json +++ b/parser/testdata/03213_denseRank_percentRank_alias/metadata.json @@ -1,5 +1 @@ -{ - "explain_todo": { - "stmt12": true - } -} +{} diff --git a/parser/testdata/03262_common_expression_optimization/metadata.json b/parser/testdata/03262_common_expression_optimization/metadata.json index f584a20c95..6df1df2aa6 100644 --- a/parser/testdata/03262_common_expression_optimization/metadata.json +++ b/parser/testdata/03262_common_expression_optimization/metadata.json @@ -43,8 +43,6 @@ "stmt66": true, "stmt69": true, "stmt7": true, - "stmt70": true, - "stmt71": true, "stmt72": true, "stmt8": true, "stmt9": true diff --git a/parser/testdata/03447_window_functions_distinct/metadata.json b/parser/testdata/03447_window_functions_distinct/metadata.json index 34dfcd0759..342b3ff5b4 100644 --- a/parser/testdata/03447_window_functions_distinct/metadata.json +++ b/parser/testdata/03447_window_functions_distinct/metadata.json @@ -1,9 +1,5 @@ { "explain_todo": { - "stmt10": true, - "stmt3": true, - "stmt4": true, - "stmt6": true, "stmt8": true } } diff --git a/parser/testdata/03448_window_functions_distinct_distributed/metadata.json b/parser/testdata/03448_window_functions_distinct_distributed/metadata.json index 75570071c7..0967ef424b 100644 --- a/parser/testdata/03448_window_functions_distinct_distributed/metadata.json +++ b/parser/testdata/03448_window_functions_distinct_distributed/metadata.json @@ -1,10 +1 @@ -{ - "explain_todo": { - "stmt10": true, - "stmt3": true, - "stmt4": true, - "stmt5": true, - "stmt8": true, - "stmt9": true - } -} +{} diff --git a/parser/testdata/03538_analyzer_lag_lead_functions/metadata.json b/parser/testdata/03538_analyzer_lag_lead_functions/metadata.json index ef58f80315..0967ef424b 100644 --- a/parser/testdata/03538_analyzer_lag_lead_functions/metadata.json +++ b/parser/testdata/03538_analyzer_lag_lead_functions/metadata.json @@ -1,5 +1 @@ -{ - "explain_todo": { - "stmt2": true - } -} +{} diff --git a/parser/testdata/03549_window_collation/metadata.json b/parser/testdata/03549_window_collation/metadata.json index 3455a1864a..0967ef424b 100644 --- a/parser/testdata/03549_window_collation/metadata.json +++ b/parser/testdata/03549_window_collation/metadata.json @@ -1,8 +1 @@ -{ - "explain_todo": { - "stmt2": true, - "stmt3": true, - "stmt4": true, - "stmt5": true - } -} +{} diff --git a/parser/testdata/03611_window_definition_parsing/metadata.json b/parser/testdata/03611_window_definition_parsing/metadata.json index 47b9f27593..0967ef424b 100644 --- a/parser/testdata/03611_window_definition_parsing/metadata.json +++ b/parser/testdata/03611_window_definition_parsing/metadata.json @@ -1 +1 @@ -{"explain_todo":{"stmt2":true,"stmt3":true}} +{} diff --git a/parser/testdata/03624_resource_exhaustion_window_function/metadata.json b/parser/testdata/03624_resource_exhaustion_window_function/metadata.json index 1295a45747..0967ef424b 100644 --- a/parser/testdata/03624_resource_exhaustion_window_function/metadata.json +++ b/parser/testdata/03624_resource_exhaustion_window_function/metadata.json @@ -1,5 +1 @@ -{ - "explain_todo": { - "stmt3": true - } -} +{} diff --git a/parser/testdata/03631_select_replace_comprehensive/metadata.json b/parser/testdata/03631_select_replace_comprehensive/metadata.json index cce15a381e..7bf4b04abe 100644 --- a/parser/testdata/03631_select_replace_comprehensive/metadata.json +++ b/parser/testdata/03631_select_replace_comprehensive/metadata.json @@ -1,6 +1,5 @@ { "explain_todo": { - "stmt33": true, - "stmt36": true + "stmt33": true } } diff --git a/parser/testdata/03701_optimize_inverse_dictionary_lookup_basic/metadata.json b/parser/testdata/03701_optimize_inverse_dictionary_lookup_basic/metadata.json index 277e18d49f..6da5f6faef 100644 --- a/parser/testdata/03701_optimize_inverse_dictionary_lookup_basic/metadata.json +++ b/parser/testdata/03701_optimize_inverse_dictionary_lookup_basic/metadata.json @@ -1 +1,7 @@ -{"explain_todo":{"stmt118":true,"stmt120":true,"stmt122":true,"stmt124":true,"stmt78":true,"stmt80":true,"stmt9":true}} +{ + "explain_todo": { + "stmt118": true, + "stmt120": true, + "stmt9": true + } +} diff --git a/parser/testdata/03719_ntile_no_partition_by_check/metadata.json b/parser/testdata/03719_ntile_no_partition_by_check/metadata.json index 9a8cc69c0b..0967ef424b 100644 --- a/parser/testdata/03719_ntile_no_partition_by_check/metadata.json +++ b/parser/testdata/03719_ntile_no_partition_by_check/metadata.json @@ -1,6 +1 @@ -{ - "explain_todo": { - "stmt2": true, - "stmt4": true - } -} +{}