@@ -229,6 +229,97 @@ LogicalProject(HIREDATE=[$1])
229229 LogicalProject(MGR=[$3])
230230 LogicalFilter(condition=[AND(IS NULL($3), =($4, CURRENT_TIMESTAMP))])
231231 LogicalTableScan(table=[[CATALOG, SALES, EMP]])
232+ ]]>
233+ </Resource>
234+ </TestCase>
235+ <TestCase name="testAggregateExtractLiteralAggRule1">
236+ <Resource name="sql">
237+ <![CDATA[select deptno, name = ANY (
238+ select mgr from emp)
239+ from dept]]>
240+ </Resource>
241+ <Resource name="planBefore">
242+ <![CDATA[
243+ LogicalProject(DEPTNO=[$0], EXPR$1=[IN($1, {
244+ LogicalProject(MGR=[$3])
245+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
246+ })])
247+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
248+ ]]>
249+ </Resource>
250+ <Resource name="planMid">
251+ <![CDATA[
252+ LogicalProject(DEPTNO=[$0], EXPR$1=[OR(AND(IS NOT NULL($5), <>($2, 0)), AND(<($3, $2), null, <>($2, 0), IS NULL($5)))])
253+ LogicalJoin(condition=[=($1, $4)], joinType=[left])
254+ LogicalJoin(condition=[true], joinType=[inner])
255+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
256+ LogicalAggregate(group=[{}], c=[COUNT()], ck=[COUNT($0)])
257+ LogicalProject(MGR=[$3])
258+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
259+ LogicalAggregate(group=[{0}], i=[LITERAL_AGG(true)])
260+ LogicalProject(MGR=[$3])
261+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
262+ ]]>
263+ </Resource>
264+ <Resource name="planAfter">
265+ <![CDATA[
266+ LogicalProject(DEPTNO=[$0], EXPR$1=[OR(AND(IS NOT NULL($5), <>($2, 0)), AND(<($3, $2), null, <>($2, 0), IS NULL($5)))])
267+ LogicalJoin(condition=[=($1, $4)], joinType=[left])
268+ LogicalJoin(condition=[true], joinType=[inner])
269+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
270+ LogicalAggregate(group=[{}], c=[COUNT()], ck=[COUNT($0)])
271+ LogicalProject(MGR=[$3])
272+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
273+ LogicalProject(MGR=[$0], $f1=[true])
274+ LogicalAggregate(group=[{0}])
275+ LogicalProject(MGR=[$3])
276+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
277+ ]]>
278+ </Resource>
279+ </TestCase>
280+ <TestCase name="testAggregateExtractLiteralAggRule2">
281+ <Resource name="sql">
282+ <![CDATA[select empno
283+ from sales.emp
284+ where deptno in (select deptno from sales.emp where empno < 20)
285+ or emp.sal < 100]]>
286+ </Resource>
287+ <Resource name="planBefore">
288+ <![CDATA[
289+ LogicalProject(EMPNO=[$0])
290+ LogicalFilter(condition=[OR(IN($7, {
291+ LogicalProject(DEPTNO=[$7])
292+ LogicalFilter(condition=[<($0, 20)])
293+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
294+ }), <($5, 100))])
295+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
296+ ]]>
297+ </Resource>
298+ <Resource name="planMid">
299+ <![CDATA[
300+ LogicalProject(EMPNO=[$0])
301+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
302+ LogicalFilter(condition=[OR(IS NOT NULL($10), <($5, 100))])
303+ LogicalJoin(condition=[=($7, $9)], joinType=[left])
304+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
305+ LogicalAggregate(group=[{0}], i=[LITERAL_AGG(true)])
306+ LogicalProject(DEPTNO=[$7])
307+ LogicalFilter(condition=[<($0, 20)])
308+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
309+ ]]>
310+ </Resource>
311+ <Resource name="planAfter">
312+ <![CDATA[
313+ LogicalProject(EMPNO=[$0])
314+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
315+ LogicalFilter(condition=[OR(IS NOT NULL($10), <($5, 100))])
316+ LogicalJoin(condition=[=($7, $9)], joinType=[left])
317+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
318+ LogicalProject(DEPTNO=[$0], $f1=[true])
319+ LogicalAggregate(group=[{0}])
320+ LogicalProject(DEPTNO=[$7])
321+ LogicalFilter(condition=[<($0, 20)])
322+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
232323]]>
233324 </Resource>
234325 </TestCase>
0 commit comments