Skip to content

Commit 02c176a

Browse files
committed
[CALCITE-7345] Quidem test support for Field Trimmer
1 parent fcb86f0 commit 02c176a

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

core/src/main/java/org/apache/calcite/tools/Programs.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,11 @@ public static Program standard() {
286286
return standard(DefaultRelMetadataProvider.INSTANCE, true);
287287
}
288288

289+
/** Returns the standard program with enableFieldTrimming config. */
290+
public static Program standard(Boolean enableFieldTrimming) {
291+
return standard(DefaultRelMetadataProvider.INSTANCE, enableFieldTrimming);
292+
}
293+
289294
/** Returns the standard program with user metadata provider. */
290295
public static Program standard(RelMetadataProvider metadataProvider) {
291296
return standard(metadataProvider, true);

core/src/test/resources/sql/join.iq

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1137,4 +1137,30 @@ SELECT * FROM (VALUES (NULLIF(5, 5)), (NULLIF(5, 5))) a, (VALUES (NULLIF(5, 5)),
11371137

11381138
!ok
11391139

1140+
# [CALCITE-7345] Quidem test support for Field Trimmer
1141+
!use scott
1142+
!set trimfields false
1143+
1144+
select distinct dept.deptno, emp.deptno
1145+
from "scott".emp join "scott".dept using (deptno);
1146+
1147+
EnumerableAggregate(group=[{0, 10}])
1148+
EnumerableHashJoin(condition=[=($0, $10)], joinType=[inner])
1149+
EnumerableTableScan(table=[[scott, DEPT]])
1150+
EnumerableTableScan(table=[[scott, EMP]])
1151+
!plan
1152+
1153+
!set trimfields true
1154+
1155+
select distinct dept.deptno, emp.deptno
1156+
from "scott".emp join "scott".dept using (deptno);
1157+
1158+
EnumerableAggregate(group=[{0, 2}])
1159+
EnumerableHashJoin(condition=[=($0, $2)], joinType=[inner])
1160+
EnumerableCalc(expr#0..2=[{inputs}], DEPTNO=[$t0])
1161+
EnumerableTableScan(table=[[scott, DEPT]])
1162+
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], DEPTNO=[$t7])
1163+
EnumerableTableScan(table=[[scott, EMP]])
1164+
!plan
1165+
11401166
# End join.iq

testkit/src/main/java/org/apache/calcite/test/QuidemTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.apache.calcite.sql.parser.SqlParserImplFactory;
4040
import org.apache.calcite.sql.pretty.SqlPrettyWriter;
4141
import org.apache.calcite.sql.type.SqlTypeName;
42+
import org.apache.calcite.sql2rel.SqlToRelConverter;
4243
import org.apache.calcite.test.schemata.catchall.CatchallSchema;
4344
import org.apache.calcite.tools.Frameworks;
4445
import org.apache.calcite.tools.Planner;
@@ -246,6 +247,17 @@ protected void checkRun(String path) throws Exception {
246247
int thresholdValue = ((BigDecimal) value).intValue();
247248
closer.add(Prepare.THREAD_INSUBQUERY_THRESHOLD.push(thresholdValue));
248249
}
250+
if (propertyName.equals("trimfields")) {
251+
final boolean b = value instanceof Boolean
252+
&& (Boolean) value;
253+
closer.add(
254+
Hook.SQL2REL_CONVERTER_CONFIG_BUILDER.addThread(
255+
(Consumer<Holder<SqlToRelConverter.Config>>) configHolder ->
256+
configHolder.set(configHolder.get().withTrimUnusedFields(b))));
257+
closer.add(
258+
Hook.PROGRAM.addThread((Consumer<Holder<Program>>)
259+
holder -> holder.set(Programs.standard(b))));
260+
}
249261
// Configures query planner rules via "!set planner-rules" command.
250262
// The value can be set as follows:
251263
// - Add rule: "+EnumerableRules.ENUMERABLE_INTERSECT_RULE"

0 commit comments

Comments
 (0)