[
https://issues.apache.org/jira/browse/CALCITE-7341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yu Xu resolved CALCITE-7341.
----------------------------
Fix Version/s: 1.43.0
Resolution: Fixed
Fixed in
[https://github.com/apache/calcite/commit/d54d50cebbc3e0f554647483a0312ba13c32e9e4]
Thank you reported this Jira [~nobigo]
Thank you for the review [~mbudiu]
> RelFieldTrimmer should trim Scalar sub-query
> --------------------------------------------
>
> Key: CALCITE-7341
> URL: https://issues.apache.org/jira/browse/CALCITE-7341
> Project: Calcite
> Issue Type: Bug
> Reporter: xiong duan
> Assignee: Yu Xu
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.43.0
>
>
> The unit test in RelFieldTrimmerTest:
> {code:java}
> @Test void testTrimCorrelatedSubquery() {
> final RelBuilder builder = RelBuilder.create(config().build());
> final Holder<@Nullable RexCorrelVariable> v = Holder.empty();
> RelNode root = builder.scan("EMP")
> .variable(v::set)
> .filter(
> builder.call(SqlStdOperatorTable.GREATER_THAN, builder.field(5),
> builder.literal(10)))
> .project(ImmutableSet.of(v.get().id),
> builder.field(0),
> builder.scalarQuery(
> b2 -> builder.scan("EMP").filter(
> builder.call(SqlStdOperatorTable.LESS_THAN,
> builder.field(3), builder.field(v.get(), "MGR")))
> .project(builder.field(0))
> .aggregate(builder.groupKey(), builder.countStar("c"))
> .build()))
> .build();
> String origTree = ""
> + "LogicalProject(variablesSet=[[$cor0]], EMPNO=[$0],
> $f1=[$SCALAR_QUERY({\n"
> + "LogicalAggregate(group=[{}], c=[COUNT()])\n"
> + " LogicalFilter(condition=[<($3, $cor0.MGR)])\n"
> + " LogicalTableScan(table=[[scott, EMP]])\n})])\n"
> + " LogicalFilter(condition=[>($5, 10)])\n"
> + " LogicalTableScan(table=[[scott, EMP]])\n";
> assertThat(root, hasTree(origTree));
> final RelFieldTrimmer fieldTrimmer = new RelFieldTrimmer(null, builder);
> final RelNode trimmed = fieldTrimmer.trim(root);
> final String expected = ""
> + "LogicalProject(variablesSet=[[$cor0]], EMPNO=[$0],
> $f1=[$SCALAR_QUERY({\n"
> + "LogicalAggregate(group=[{}], c=[COUNT()])\n"
> + " LogicalFilter(condition=[<($3, $cor0.MGR)])\n"
> + " LogicalTableScan(table=[[scott, EMP]])\n"
> + "})])\n"
> + " LogicalFilter(condition=[>($2, 10)])\n"
> + " LogicalProject(EMPNO=[$0], MGR=[$3], SAL=[$5])\n"
> + " LogicalTableScan(table=[[scott, EMP]])\n";
> assertThat(trimmed, hasTree(expected));
> } {code}
> The LogicalTableScan in SCALAR_QUERY should have a LogicalProject to identify
> the required columns
--
This message was sent by Atlassian Jira
(v8.20.10#820010)