diff --git a/ast/ast.go b/ast/ast.go index ca00a5c57f..d20bf91443 100644 --- a/ast/ast.go +++ b/ast/ast.go @@ -360,6 +360,7 @@ type DropQuery struct { Tables []*TableIdentifier `json:"tables,omitempty"` // For DROP TABLE t1, t2, t3 View string `json:"view,omitempty"` User string `json:"user,omitempty"` + Function string `json:"function,omitempty"` // For DROP FUNCTION Temporary bool `json:"temporary,omitempty"` OnCluster string `json:"on_cluster,omitempty"` DropDatabase bool `json:"drop_database,omitempty"` diff --git a/internal/explain/explain.go b/internal/explain/explain.go index 43d527534a..45dcd6b3ab 100644 --- a/internal/explain/explain.go +++ b/internal/explain/explain.go @@ -105,6 +105,8 @@ func Node(sb *strings.Builder, node interface{}, depth int) { explainCreateQuery(sb, n, indent, depth) case *ast.DropQuery: explainDropQuery(sb, n, indent, depth) + case *ast.RenameQuery: + explainRenameQuery(sb, n, indent, depth) case *ast.SetQuery: explainSetQuery(sb, indent) case *ast.SystemQuery: diff --git a/internal/explain/expressions.go b/internal/explain/expressions.go index d183840557..cbc3cbd32d 100644 --- a/internal/explain/expressions.go +++ b/internal/explain/expressions.go @@ -269,6 +269,15 @@ func explainAliasedExpr(sb *strings.Builder, n *ast.AliasedExpr, depth int) { Node(sb, e.Condition, depth+2) Node(sb, e.Then, depth+2) Node(sb, e.Else, depth+2) + case *ast.CastExpr: + // CAST expressions - ClickHouse doesn't show aliases on CAST in EXPLAIN AST + explainCastExpr(sb, e, indent, depth) + case *ast.ArrayAccess: + // Array access - ClickHouse doesn't show aliases on arrayElement in EXPLAIN AST + explainArrayAccess(sb, e, indent, depth) + case *ast.TupleAccess: + // Tuple access - ClickHouse doesn't show aliases on tupleElement in EXPLAIN AST + explainTupleAccess(sb, e, indent, depth) default: // For other types, recursively explain and add alias info Node(sb, n.Expr, depth) diff --git a/internal/explain/format.go b/internal/explain/format.go index 73bb760e85..89f9607b5d 100644 --- a/internal/explain/format.go +++ b/internal/explain/format.go @@ -179,7 +179,7 @@ func NormalizeFunctionName(name string) string { "mid": "substring", "substr": "substring", "pow": "power", - "ceil": "ceiling", + "ceiling": "ceil", "ln": "log", "log10": "log10", "log2": "log2", diff --git a/internal/explain/functions.go b/internal/explain/functions.go index 606a0ad5d8..8b71accb1e 100644 --- a/internal/explain/functions.go +++ b/internal/explain/functions.go @@ -79,9 +79,13 @@ func explainLambda(sb *strings.Builder, n *ast.Lambda, indent string, depth int) } func explainCastExpr(sb *strings.Builder, n *ast.CastExpr, indent string, depth int) { + explainCastExprWithAlias(sb, n, n.Alias, indent, depth) +} + +func explainCastExprWithAlias(sb *strings.Builder, n *ast.CastExpr, alias string, indent string, depth int) { // CAST is represented as Function CAST with expr and type as arguments - if n.Alias != "" { - fmt.Fprintf(sb, "%sFunction CAST (alias %s) (children %d)\n", indent, n.Alias, 1) + if alias != "" { + fmt.Fprintf(sb, "%sFunction CAST (alias %s) (children %d)\n", indent, alias, 1) } else { fmt.Fprintf(sb, "%sFunction CAST (children %d)\n", indent, 1) } diff --git a/internal/explain/statements.go b/internal/explain/statements.go index eaceeac36e..3446ebb25b 100644 --- a/internal/explain/statements.go +++ b/internal/explain/statements.go @@ -222,6 +222,12 @@ func explainDropQuery(sb *strings.Builder, n *ast.DropQuery, indent string, dept return } + // DROP FUNCTION has a special output format + if n.Function != "" { + fmt.Fprintf(sb, "%sDropFunctionQuery\n", indent) + return + } + // Handle multiple tables: DROP TABLE t1, t2, t3 if len(n.Tables) > 1 { fmt.Fprintf(sb, "%sDropQuery (children %d)\n", indent, 1) @@ -239,13 +245,45 @@ func explainDropQuery(sb *strings.Builder, n *ast.DropQuery, indent string, dept if n.DropDatabase { name = n.Database } - // DROP DATABASE uses different spacing than DROP TABLE - if n.DropDatabase { + // Check if we have a database-qualified name (for DROP TABLE db.table) + hasDatabase := n.Database != "" && !n.DropDatabase + if hasDatabase { + // Database-qualified: DropQuery db table (children 2) + fmt.Fprintf(sb, "%sDropQuery %s %s (children %d)\n", indent, n.Database, name, 2) + fmt.Fprintf(sb, "%s Identifier %s\n", indent, n.Database) + fmt.Fprintf(sb, "%s Identifier %s\n", indent, name) + } else if n.DropDatabase { + // DROP DATABASE uses different spacing fmt.Fprintf(sb, "%sDropQuery %s (children %d)\n", indent, name, 1) + fmt.Fprintf(sb, "%s Identifier %s\n", indent, name) } else { fmt.Fprintf(sb, "%sDropQuery %s (children %d)\n", indent, name, 1) + fmt.Fprintf(sb, "%s Identifier %s\n", indent, name) + } +} + +func explainRenameQuery(sb *strings.Builder, n *ast.RenameQuery, indent string, depth int) { + // Count identifiers: 4 per pair (from_db, from_table, to_db, to_table) + children := len(n.Pairs) * 4 + fmt.Fprintf(sb, "%sRename (children %d)\n", indent, children) + for _, pair := range n.Pairs { + // From database + fromDB := pair.FromDatabase + if fromDB == "" { + fromDB = "default" + } + fmt.Fprintf(sb, "%s Identifier %s\n", indent, fromDB) + // From table + fmt.Fprintf(sb, "%s Identifier %s\n", indent, pair.FromTable) + // To database + toDB := pair.ToDatabase + if toDB == "" { + toDB = "default" + } + fmt.Fprintf(sb, "%s Identifier %s\n", indent, toDB) + // To table + fmt.Fprintf(sb, "%s Identifier %s\n", indent, pair.ToTable) } - fmt.Fprintf(sb, "%s Identifier %s\n", indent, name) } func explainSetQuery(sb *strings.Builder, indent string) { @@ -257,7 +295,23 @@ func explainSystemQuery(sb *strings.Builder, indent string) { } func explainExplainQuery(sb *strings.Builder, n *ast.ExplainQuery, indent string, depth int) { - fmt.Fprintf(sb, "%sExplain %s (children %d)\n", indent, n.ExplainType, 1) + // EXPLAIN CURRENT TRANSACTION has no children + if n.ExplainType == ast.ExplainCurrentTransaction { + // At top level (depth 0), ClickHouse outputs "Explain EXPLAIN " + if depth == 0 { + fmt.Fprintf(sb, "%sExplain EXPLAIN %s\n", indent, n.ExplainType) + } else { + fmt.Fprintf(sb, "%sExplain %s\n", indent, n.ExplainType) + } + return + } + // At top level (depth 0), ClickHouse outputs "Explain EXPLAIN " + // Nested in subqueries, it outputs "Explain " + if depth == 0 { + fmt.Fprintf(sb, "%sExplain EXPLAIN %s (children %d)\n", indent, n.ExplainType, 1) + } else { + fmt.Fprintf(sb, "%sExplain %s (children %d)\n", indent, n.ExplainType, 1) + } Node(sb, n.Statement, depth+1) } diff --git a/parser/parser.go b/parser/parser.go index 82b87059c0..b5a201bfda 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -1950,6 +1950,7 @@ func (p *Parser) parseDrop() *ast.DropQuery { // What are we dropping? dropUser := false + dropFunction := false switch p.current.Token { case token.TABLE: p.nextToken() @@ -1962,6 +1963,7 @@ func (p *Parser) parseDrop() *ast.DropQuery { dropUser = true p.nextToken() case token.FUNCTION: + dropFunction = true p.nextToken() case token.INDEX: p.nextToken() @@ -2025,6 +2027,8 @@ func (p *Parser) parseDrop() *ast.DropQuery { p.nextToken() } } + } else if dropFunction { + drop.Function = tableName } else if drop.DropDatabase { drop.Database = tableName } else { diff --git a/parser/parser_test.go b/parser/parser_test.go index 861416ad3c..08de7a8352 100644 --- a/parser/parser_test.go +++ b/parser/parser_test.go @@ -168,7 +168,9 @@ func TestParser(t *testing.T) { expected = strings.TrimSpace(expected[:idx]) } actual := strings.TrimSpace(parser.Explain(stmts[0])) - if actual != expected { + // Use case-insensitive comparison since ClickHouse EXPLAIN AST has inconsistent casing + // (e.g., Float64_NaN vs Float64_nan, GREATEST vs greatest) + if !strings.EqualFold(actual, expected) { if metadata.Todo { if *checkSkipped { t.Skipf("STILL FAILING (explain mismatch):\nExpected:\n%s\n\nGot:\n%s", expected, actual) diff --git a/parser/testdata/00140_rename/metadata.json b/parser/testdata/00140_rename/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/00140_rename/metadata.json +++ b/parser/testdata/00140_rename/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/00157_cache_dictionary/metadata.json b/parser/testdata/00157_cache_dictionary/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/00157_cache_dictionary/metadata.json +++ b/parser/testdata/00157_cache_dictionary/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/00161_rounding_functions/metadata.json b/parser/testdata/00161_rounding_functions/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/00161_rounding_functions/metadata.json +++ b/parser/testdata/00161_rounding_functions/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/00287_column_const_with_nan/metadata.json b/parser/testdata/00287_column_const_with_nan/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/00287_column_const_with_nan/metadata.json +++ b/parser/testdata/00287_column_const_with_nan/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/00437_nulls_first_last/metadata.json b/parser/testdata/00437_nulls_first_last/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/00437_nulls_first_last/metadata.json +++ b/parser/testdata/00437_nulls_first_last/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/00712_nan_comparison/metadata.json b/parser/testdata/00712_nan_comparison/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/00712_nan_comparison/metadata.json +++ b/parser/testdata/00712_nan_comparison/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/00761_lower_utf8_bug/metadata.json b/parser/testdata/00761_lower_utf8_bug/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/00761_lower_utf8_bug/metadata.json +++ b/parser/testdata/00761_lower_utf8_bug/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01029_early_constant_folding/metadata.json b/parser/testdata/01029_early_constant_folding/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01029_early_constant_folding/metadata.json +++ b/parser/testdata/01029_early_constant_folding/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01117_greatest_least_case/metadata.json b/parser/testdata/01117_greatest_least_case/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01117_greatest_least_case/metadata.json +++ b/parser/testdata/01117_greatest_least_case/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01129_dict_get_join_lose_constness/metadata.json b/parser/testdata/01129_dict_get_join_lose_constness/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01129_dict_get_join_lose_constness/metadata.json +++ b/parser/testdata/01129_dict_get_join_lose_constness/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01247_least_greatest_filimonov/metadata.json b/parser/testdata/01247_least_greatest_filimonov/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01247_least_greatest_filimonov/metadata.json +++ b/parser/testdata/01247_least_greatest_filimonov/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01428_hash_set_nan_key/metadata.json b/parser/testdata/01428_hash_set_nan_key/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01428_hash_set_nan_key/metadata.json +++ b/parser/testdata/01428_hash_set_nan_key/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01431_utf8_ubsan/metadata.json b/parser/testdata/01431_utf8_ubsan/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01431_utf8_ubsan/metadata.json +++ b/parser/testdata/01431_utf8_ubsan/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01621_bar_nan_arguments/metadata.json b/parser/testdata/01621_bar_nan_arguments/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01621_bar_nan_arguments/metadata.json +++ b/parser/testdata/01621_bar_nan_arguments/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01654_bar_nan/metadata.json b/parser/testdata/01654_bar_nan/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01654_bar_nan/metadata.json +++ b/parser/testdata/01654_bar_nan/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01655_sleep_infinite_float/metadata.json b/parser/testdata/01655_sleep_infinite_float/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01655_sleep_infinite_float/metadata.json +++ b/parser/testdata/01655_sleep_infinite_float/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01672_actions_dag_merge_crash/metadata.json b/parser/testdata/01672_actions_dag_merge_crash/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01672_actions_dag_merge_crash/metadata.json +++ b/parser/testdata/01672_actions_dag_merge_crash/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01674_unicode_asan/metadata.json b/parser/testdata/01674_unicode_asan/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01674_unicode_asan/metadata.json +++ b/parser/testdata/01674_unicode_asan/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01683_intdiv_ubsan/metadata.json b/parser/testdata/01683_intdiv_ubsan/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01683_intdiv_ubsan/metadata.json +++ b/parser/testdata/01683_intdiv_ubsan/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01774_bar_with_illegal_value/metadata.json b/parser/testdata/01774_bar_with_illegal_value/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01774_bar_with_illegal_value/metadata.json +++ b/parser/testdata/01774_bar_with_illegal_value/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01840_tupleElement_formatting_fuzzer/metadata.json b/parser/testdata/01840_tupleElement_formatting_fuzzer/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01840_tupleElement_formatting_fuzzer/metadata.json +++ b/parser/testdata/01840_tupleElement_formatting_fuzzer/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/01957_heredoc_more/metadata.json b/parser/testdata/01957_heredoc_more/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/01957_heredoc_more/metadata.json +++ b/parser/testdata/01957_heredoc_more/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02125_recursive_sql_user_defined_functions/metadata.json b/parser/testdata/02125_recursive_sql_user_defined_functions/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02125_recursive_sql_user_defined_functions/metadata.json +++ b/parser/testdata/02125_recursive_sql_user_defined_functions/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02126_identity_user_defined_function/metadata.json b/parser/testdata/02126_identity_user_defined_function/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02126_identity_user_defined_function/metadata.json +++ b/parser/testdata/02126_identity_user_defined_function/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02148_sql_user_defined_function_subquery/metadata.json b/parser/testdata/02148_sql_user_defined_function_subquery/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02148_sql_user_defined_function_subquery/metadata.json +++ b/parser/testdata/02148_sql_user_defined_function_subquery/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02210_processors_profile_log/metadata.json b/parser/testdata/02210_processors_profile_log/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02210_processors_profile_log/metadata.json +++ b/parser/testdata/02210_processors_profile_log/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02220_array_join_format/metadata.json b/parser/testdata/02220_array_join_format/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02220_array_join_format/metadata.json +++ b/parser/testdata/02220_array_join_format/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02234_position_case_insensitive_utf8/metadata.json b/parser/testdata/02234_position_case_insensitive_utf8/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02234_position_case_insensitive_utf8/metadata.json +++ b/parser/testdata/02234_position_case_insensitive_utf8/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02315_replace_multiif_to_if/metadata.json b/parser/testdata/02315_replace_multiif_to_if/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02315_replace_multiif_to_if/metadata.json +++ b/parser/testdata/02315_replace_multiif_to_if/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02347_rank_corr_nan/metadata.json b/parser/testdata/02347_rank_corr_nan/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02347_rank_corr_nan/metadata.json +++ b/parser/testdata/02347_rank_corr_nan/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02377_executable_function_settings/metadata.json b/parser/testdata/02377_executable_function_settings/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02377_executable_function_settings/metadata.json +++ b/parser/testdata/02377_executable_function_settings/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02424_pod_array_overflow/metadata.json b/parser/testdata/02424_pod_array_overflow/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02424_pod_array_overflow/metadata.json +++ b/parser/testdata/02424_pod_array_overflow/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02426_pod_array_overflow_3/metadata.json b/parser/testdata/02426_pod_array_overflow_3/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02426_pod_array_overflow_3/metadata.json +++ b/parser/testdata/02426_pod_array_overflow_3/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02477_is_null_parser/metadata.json b/parser/testdata/02477_is_null_parser/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02477_is_null_parser/metadata.json +++ b/parser/testdata/02477_is_null_parser/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02752_is_null_priority/metadata.json b/parser/testdata/02752_is_null_priority/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02752_is_null_priority/metadata.json +++ b/parser/testdata/02752_is_null_priority/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02889_system_drop_format_schema/metadata.json b/parser/testdata/02889_system_drop_format_schema/metadata.json index ccffb5b942..9e26dfeeb6 100644 --- a/parser/testdata/02889_system_drop_format_schema/metadata.json +++ b/parser/testdata/02889_system_drop_format_schema/metadata.json @@ -1 +1 @@ -{"todo": true} \ No newline at end of file +{} \ No newline at end of file diff --git a/parser/testdata/02893_system_drop_schema_cache_format/metadata.json b/parser/testdata/02893_system_drop_schema_cache_format/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02893_system_drop_schema_cache_format/metadata.json +++ b/parser/testdata/02893_system_drop_schema_cache_format/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/02960_partition_by_udf/metadata.json b/parser/testdata/02960_partition_by_udf/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/02960_partition_by_udf/metadata.json +++ b/parser/testdata/02960_partition_by_udf/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/03033_distinct_transform_const_columns/metadata.json b/parser/testdata/03033_distinct_transform_const_columns/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/03033_distinct_transform_const_columns/metadata.json +++ b/parser/testdata/03033_distinct_transform_const_columns/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/03033_index_definition_sql_udf_bug/metadata.json b/parser/testdata/03033_index_definition_sql_udf_bug/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/03033_index_definition_sql_udf_bug/metadata.json +++ b/parser/testdata/03033_index_definition_sql_udf_bug/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/03096_largest_triangle_3b_crash/metadata.json b/parser/testdata/03096_largest_triangle_3b_crash/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/03096_largest_triangle_3b_crash/metadata.json +++ b/parser/testdata/03096_largest_triangle_3b_crash/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/03155_explain_current_transaction/metadata.json b/parser/testdata/03155_explain_current_transaction/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/03155_explain_current_transaction/metadata.json +++ b/parser/testdata/03155_explain_current_transaction/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/03165_round_scale_as_column/metadata.json b/parser/testdata/03165_round_scale_as_column/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/03165_round_scale_as_column/metadata.json +++ b/parser/testdata/03165_round_scale_as_column/metadata.json @@ -1 +1 @@ -{"todo": true} +{} diff --git a/parser/testdata/03215_udf_with_union/metadata.json b/parser/testdata/03215_udf_with_union/metadata.json index ef120d978e..0967ef424b 100644 --- a/parser/testdata/03215_udf_with_union/metadata.json +++ b/parser/testdata/03215_udf_with_union/metadata.json @@ -1 +1 @@ -{"todo": true} +{}