From eed00ff86af1d453b1541ea4e5fd0a60452005eb Mon Sep 17 00:00:00 2001 From: Dennis Felsing Date: Wed, 11 Mar 2026 09:13:09 +0000 Subject: [PATCH 1/2] sql: Fix autorouting for expensive functions Only top-level expensive functions were considered in the auto-routing Broken in https://github.com/MaterializeInc/materialize/pull/20994 One line fix, the rest is adding tests that actually made me find this. --- src/sql/src/plan/hir.rs | 2 +- .../explain/auto_route_expensive.slt | 75 +++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 test/sqllogictest/explain/auto_route_expensive.slt diff --git a/src/sql/src/plan/hir.rs b/src/sql/src/plan/hir.rs index e48786f14aee8..d07c634dbe4ef 100644 --- a/src/sql/src/plan/hir.rs +++ b/src/sql/src/plan/hir.rs @@ -2391,7 +2391,7 @@ impl HirRelationExpr { use HirRelationExpr::*; use HirScalarExpr::*; - self.visit_children(|scalar: &HirScalarExpr| { + e.visit_children(|scalar: &HirScalarExpr| { if let Err(_) = scalar.visit_pre(&mut |scalar: &HirScalarExpr| { result |= match scalar { Column(..) diff --git a/test/sqllogictest/explain/auto_route_expensive.slt b/test/sqllogictest/explain/auto_route_expensive.slt new file mode 100644 index 0000000000000..f022cacc77624 --- /dev/null +++ b/test/sqllogictest/explain/auto_route_expensive.slt @@ -0,0 +1,75 @@ +# Copyright Materialize, Inc. and contributors. All rights reserved. +# +# Use of this software is governed by the Business Source License +# included in the LICENSE file at the root of this repository. +# +# As of the Change Date specified in that file, in accordance with +# the Business Source License, use of this software will be governed +# by the Apache License, Version 2.0. + +# Test auto-routing to mz_catalog_server + +mode cockroach + +reset-server + +query T multiline +EXPLAIN OPTIMIZED PLAN WITH(humanized expressions) AS VERBOSE TEXT FOR +SELECT 1 +---- +Explained Query (fast path): + Constant + - (1) + +Target cluster: mz_catalog_server + +EOF + +query T multiline +EXPLAIN OPTIMIZED PLAN WITH(humanized expressions) AS VERBOSE TEXT FOR +SELECT 1 / 1 +---- +Explained Query (fast path): + Constant + - (1) + +Target cluster: quickstart + +EOF + +query T multiline +EXPLAIN OPTIMIZED PLAN WITH(humanized expressions) AS VERBOSE TEXT FOR +(SELECT 1) UNION ALL (SELECT 1 + 2) +---- +Explained Query (fast path): + Constant + - (1) + - (3) + +Target cluster: quickstart + +EOF + +query T multiline +EXPLAIN OPTIMIZED PLAN WITH(humanized expressions) AS VERBOSE TEXT FOR +SELECT 1 WHERE EXISTS (SELECT 1 + 2) +---- +Explained Query (fast path): + Constant + - (1) + +Target cluster: quickstart + +EOF + +query T multiline +EXPLAIN OPTIMIZED PLAN WITH(humanized expressions) AS VERBOSE TEXT FOR +SELECT 1 WHERE (SELECT 1 + 2) > 0 +---- +Explained Query (fast path): + Constant + - (1) + +Target cluster: quickstart + +EOF From 0af11cee29aae9a46202019f6b47c7b4729d3367 Mon Sep 17 00:00:00 2001 From: Dennis Felsing Date: Wed, 11 Mar 2026 09:45:18 +0000 Subject: [PATCH 2/2] Rewrite other SLT tests --- .../{explain => }/auto_route_expensive.slt | 0 test/sqllogictest/explain/physical_plan_as_text.slt | 2 +- .../explain/physical_plan_as_text_redacted.slt | 2 +- test/sqllogictest/explain/raw_plan_as_text.slt | 2 +- test/sqllogictest/transform/normalize_lets.slt | 12 ++++++------ 5 files changed, 9 insertions(+), 9 deletions(-) rename test/sqllogictest/{explain => }/auto_route_expensive.slt (100%) diff --git a/test/sqllogictest/explain/auto_route_expensive.slt b/test/sqllogictest/auto_route_expensive.slt similarity index 100% rename from test/sqllogictest/explain/auto_route_expensive.slt rename to test/sqllogictest/auto_route_expensive.slt diff --git a/test/sqllogictest/explain/physical_plan_as_text.slt b/test/sqllogictest/explain/physical_plan_as_text.slt index 920423403b739..f0ababbd1cfa8 100644 --- a/test/sqllogictest/explain/physical_plan_as_text.slt +++ b/test/sqllogictest/explain/physical_plan_as_text.slt @@ -1650,7 +1650,7 @@ SELECT * FROM ( Explained Query (fast path): Constant -Target cluster: mz_catalog_server +Target cluster: quickstart EOF diff --git a/test/sqllogictest/explain/physical_plan_as_text_redacted.slt b/test/sqllogictest/explain/physical_plan_as_text_redacted.slt index 20b19899aafea..8fd8cdfd608a7 100644 --- a/test/sqllogictest/explain/physical_plan_as_text_redacted.slt +++ b/test/sqllogictest/explain/physical_plan_as_text_redacted.slt @@ -1635,7 +1635,7 @@ SELECT * FROM ( Explained Query (fast path): Constant -Target cluster: mz_catalog_server +Target cluster: quickstart EOF diff --git a/test/sqllogictest/explain/raw_plan_as_text.slt b/test/sqllogictest/explain/raw_plan_as_text.slt index 161ba2c595bc9..1b503ac0426a3 100644 --- a/test/sqllogictest/explain/raw_plan_as_text.slt +++ b/test/sqllogictest/explain/raw_plan_as_text.slt @@ -329,7 +329,7 @@ Return Get l0 Get l1 -Target cluster: mz_catalog_server +Target cluster: quickstart EOF diff --git a/test/sqllogictest/transform/normalize_lets.slt b/test/sqllogictest/transform/normalize_lets.slt index 580cbd061328e..23ca867a91f94 100644 --- a/test/sqllogictest/transform/normalize_lets.slt +++ b/test/sqllogictest/transform/normalize_lets.slt @@ -75,7 +75,7 @@ SELECT * FROM foo; Explained Query (fast path): Constant -Target cluster: mz_catalog_server +Target cluster: quickstart EOF @@ -262,7 +262,7 @@ Explained Query: Return Get l0 -Target cluster: mz_catalog_server +Target cluster: quickstart EOF @@ -289,7 +289,7 @@ Explained Query: Return Get l0 -Target cluster: mz_catalog_server +Target cluster: quickstart EOF @@ -316,7 +316,7 @@ Explained Query: Return Get l0 -Target cluster: mz_catalog_server +Target cluster: quickstart EOF @@ -339,7 +339,7 @@ SELECT * FROM ( Explained Query (fast path): Constant -Target cluster: mz_catalog_server +Target cluster: quickstart EOF @@ -363,7 +363,7 @@ SELECT * FROM ( Explained Query (fast path): Constant -Target cluster: mz_catalog_server +Target cluster: quickstart EOF