Skip to content

Commit 5c6456d

Browse files
xiedeyantuxuzifu666
authored andcommitted
[CALCITE-2274] Filter predicates aren't inferred while using dynamic star in subquery
1 parent e4b2baa commit 5c6456d

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

core/src/test/java/org/apache/calcite/test/RelOptRulesTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6455,6 +6455,17 @@ private HepProgram getTransitiveProgram() {
64556455
.check();
64566456
}
64576457

6458+
/** Test case for
6459+
* <a href="https://issues.apache.org/jira/browse/CALCITE-2274">[CALCITE-2274]
6460+
* Filter predicates aren't inferred while using dynamic star in subquery</a>. */
6461+
@Test void testTransitiveInferenceJoinUsingStar() {
6462+
final String sql = "SELECT * FROM sales.emp d JOIN\n"
6463+
+ "(SELECT * FROM sales.emp WHERE deptno = 4) e\n"
6464+
+ "ON e.deptno = d.deptno";
6465+
sql(sql).withPre(getTransitiveProgram())
6466+
.withRule(CoreRules.JOIN_PUSH_TRANSITIVE_PREDICATES).check();
6467+
}
6468+
64586469
/** Tests propagation of a filter derived from an "IS NOT DISTINCT FROM"
64596470
* predicate.
64606471
*

core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20521,6 +20521,34 @@ LogicalProject(EXPR$0=[1])
2052120521
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
2052220522
LogicalFilter(condition=[>($7, 7)])
2052320523
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
20524+
]]>
20525+
</Resource>
20526+
</TestCase>
20527+
<TestCase name="testTransitiveInferenceJoinUsingStar">
20528+
<Resource name="sql">
20529+
<![CDATA[SELECT * FROM sales.emp d JOIN
20530+
(SELECT * FROM sales.emp WHERE deptno = 4) e
20531+
ON e.deptno = d.deptno]]>
20532+
</Resource>
20533+
<Resource name="planBefore">
20534+
<![CDATA[
20535+
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], EMPNO0=[$9], ENAME0=[$10], JOB0=[$11], MGR0=[$12], HIREDATE0=[$13], SAL0=[$14], COMM0=[$15], DEPTNO0=[$16], SLACKER0=[$17])
20536+
LogicalJoin(condition=[=($16, $7)], joinType=[inner])
20537+
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
20538+
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
20539+
LogicalFilter(condition=[=($7, 4)])
20540+
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
20541+
]]>
20542+
</Resource>
20543+
<Resource name="planAfter">
20544+
<![CDATA[
20545+
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], EMPNO0=[$9], ENAME0=[$10], JOB0=[$11], MGR0=[$12], HIREDATE0=[$13], SAL0=[$14], COMM0=[$15], DEPTNO0=[$16], SLACKER0=[$17])
20546+
LogicalJoin(condition=[=($16, $7)], joinType=[inner])
20547+
LogicalFilter(condition=[=($7, 4)])
20548+
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
20549+
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
20550+
LogicalFilter(condition=[=($7, 4)])
20551+
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
2052420552
]]>
2052520553
</Resource>
2052620554
</TestCase>

0 commit comments

Comments
 (0)