This is an automated email from the ASF dual-hosted git repository.
xiong pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/main by this push:
new 02c176a556 [CALCITE-7345] Quidem test support for Field Trimmer
02c176a556 is described below
commit 02c176a556a13f0a4d8f6bd33b38bd2f1496e2fa
Author: Xiong Duan <[email protected]>
AuthorDate: Thu Dec 25 17:05:14 2025 +0800
[CALCITE-7345] Quidem test support for Field Trimmer
---
.../java/org/apache/calcite/tools/Programs.java | 5 +++++
core/src/test/resources/sql/join.iq | 26 ++++++++++++++++++++++
.../java/org/apache/calcite/test/QuidemTest.java | 12 ++++++++++
3 files changed, 43 insertions(+)
diff --git a/core/src/main/java/org/apache/calcite/tools/Programs.java
b/core/src/main/java/org/apache/calcite/tools/Programs.java
index af6d62a5cb..d473e54f4f 100644
--- a/core/src/main/java/org/apache/calcite/tools/Programs.java
+++ b/core/src/main/java/org/apache/calcite/tools/Programs.java
@@ -286,6 +286,11 @@ public static Program standard() {
return standard(DefaultRelMetadataProvider.INSTANCE, true);
}
+ /** Returns the standard program with enableFieldTrimming config. */
+ public static Program standard(Boolean enableFieldTrimming) {
+ return standard(DefaultRelMetadataProvider.INSTANCE, enableFieldTrimming);
+ }
+
/** Returns the standard program with user metadata provider. */
public static Program standard(RelMetadataProvider metadataProvider) {
return standard(metadataProvider, true);
diff --git a/core/src/test/resources/sql/join.iq
b/core/src/test/resources/sql/join.iq
index ea04212757..35363424e9 100644
--- a/core/src/test/resources/sql/join.iq
+++ b/core/src/test/resources/sql/join.iq
@@ -1137,4 +1137,30 @@ SELECT * FROM (VALUES (NULLIF(5, 5)), (NULLIF(5, 5))) a,
(VALUES (NULLIF(5, 5)),
!ok
+# [CALCITE-7345] Quidem test support for Field Trimmer
+!use scott
+!set trimfields false
+
+select distinct dept.deptno, emp.deptno
+from "scott".emp join "scott".dept using (deptno);
+
+EnumerableAggregate(group=[{0, 10}])
+ EnumerableHashJoin(condition=[=($0, $10)], joinType=[inner])
+ EnumerableTableScan(table=[[scott, DEPT]])
+ EnumerableTableScan(table=[[scott, EMP]])
+!plan
+
+!set trimfields true
+
+select distinct dept.deptno, emp.deptno
+from "scott".emp join "scott".dept using (deptno);
+
+EnumerableAggregate(group=[{0, 2}])
+ EnumerableHashJoin(condition=[=($0, $2)], joinType=[inner])
+ EnumerableCalc(expr#0..2=[{inputs}], DEPTNO=[$t0])
+ EnumerableTableScan(table=[[scott, DEPT]])
+ EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], DEPTNO=[$t7])
+ EnumerableTableScan(table=[[scott, EMP]])
+!plan
+
# End join.iq
diff --git a/testkit/src/main/java/org/apache/calcite/test/QuidemTest.java
b/testkit/src/main/java/org/apache/calcite/test/QuidemTest.java
index d4ec9d2ba9..bc0b94f14f 100644
--- a/testkit/src/main/java/org/apache/calcite/test/QuidemTest.java
+++ b/testkit/src/main/java/org/apache/calcite/test/QuidemTest.java
@@ -39,6 +39,7 @@
import org.apache.calcite.sql.parser.SqlParserImplFactory;
import org.apache.calcite.sql.pretty.SqlPrettyWriter;
import org.apache.calcite.sql.type.SqlTypeName;
+import org.apache.calcite.sql2rel.SqlToRelConverter;
import org.apache.calcite.test.schemata.catchall.CatchallSchema;
import org.apache.calcite.tools.Frameworks;
import org.apache.calcite.tools.Planner;
@@ -246,6 +247,17 @@ protected void checkRun(String path) throws Exception {
int thresholdValue = ((BigDecimal) value).intValue();
closer.add(Prepare.THREAD_INSUBQUERY_THRESHOLD.push(thresholdValue));
}
+ if (propertyName.equals("trimfields")) {
+ final boolean b = value instanceof Boolean
+ && (Boolean) value;
+ closer.add(
+ Hook.SQL2REL_CONVERTER_CONFIG_BUILDER.addThread(
+ (Consumer<Holder<SqlToRelConverter.Config>>) configHolder ->
+
configHolder.set(configHolder.get().withTrimUnusedFields(b))));
+ closer.add(
+ Hook.PROGRAM.addThread((Consumer<Holder<Program>>)
+ holder -> holder.set(Programs.standard(b))));
+ }
// Configures query planner rules via "!set planner-rules" command.
// The value can be set as follows:
// - Add rule: "+EnumerableRules.ENUMERABLE_INTERSECT_RULE"