@@ -216,6 +216,97 @@ LogicalProject(HIREDATE=[$1])
216216 LogicalProject(MGR=[$3])
217217 LogicalFilter(condition=[AND(IS NULL($3), =($4, CURRENT_TIMESTAMP))])
218218 LogicalTableScan(table=[[CATALOG, SALES, EMP]])
219+ ]]>
220+ </Resource>
221+ </TestCase>
222+ <TestCase name="testAggregateExtractLiteralAggRule1">
223+ <Resource name="sql">
224+ <![CDATA[select deptno, name = ANY (
225+ select mgr from emp)
226+ from dept]]>
227+ </Resource>
228+ <Resource name="planBefore">
229+ <![CDATA[
230+ LogicalProject(DEPTNO=[$0], EXPR$1=[IN($1, {
231+ LogicalProject(MGR=[$3])
232+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
233+ })])
234+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
235+ ]]>
236+ </Resource>
237+ <Resource name="planMid">
238+ <![CDATA[
239+ LogicalProject(DEPTNO=[$0], EXPR$1=[OR(AND(IS NOT NULL($5), <>($2, 0)), AND(<($3, $2), null, <>($2, 0), IS NULL($5)))])
240+ LogicalJoin(condition=[=($1, $4)], joinType=[left])
241+ LogicalJoin(condition=[true], joinType=[inner])
242+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
243+ LogicalAggregate(group=[{}], c=[COUNT()], ck=[COUNT($0)])
244+ LogicalProject(MGR=[$3])
245+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
246+ LogicalAggregate(group=[{0}], i=[LITERAL_AGG(true)])
247+ LogicalProject(MGR=[$3])
248+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
249+ ]]>
250+ </Resource>
251+ <Resource name="planAfter">
252+ <![CDATA[
253+ LogicalProject(DEPTNO=[$0], EXPR$1=[OR(AND(IS NOT NULL($5), <>($2, 0)), AND(<($3, $2), null, <>($2, 0), IS NULL($5)))])
254+ LogicalJoin(condition=[=($1, $4)], joinType=[left])
255+ LogicalJoin(condition=[true], joinType=[inner])
256+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
257+ LogicalAggregate(group=[{}], c=[COUNT()], ck=[COUNT($0)])
258+ LogicalProject(MGR=[$3])
259+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
260+ LogicalProject(MGR=[$0], $f1=[true])
261+ LogicalAggregate(group=[{0}])
262+ LogicalProject(MGR=[$3])
263+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
264+ ]]>
265+ </Resource>
266+ </TestCase>
267+ <TestCase name="testAggregateExtractLiteralAggRule2">
268+ <Resource name="sql">
269+ <![CDATA[select empno
270+ from sales.emp
271+ where deptno in (select deptno from sales.emp where empno < 20)
272+ or emp.sal < 100]]>
273+ </Resource>
274+ <Resource name="planBefore">
275+ <![CDATA[
276+ LogicalProject(EMPNO=[$0])
277+ LogicalFilter(condition=[OR(IN($7, {
278+ LogicalProject(DEPTNO=[$7])
279+ LogicalFilter(condition=[<($0, 20)])
280+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
281+ }), <($5, 100))])
282+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
283+ ]]>
284+ </Resource>
285+ <Resource name="planMid">
286+ <![CDATA[
287+ LogicalProject(EMPNO=[$0])
288+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
289+ LogicalFilter(condition=[OR(IS NOT NULL($10), <($5, 100))])
290+ LogicalJoin(condition=[=($7, $9)], joinType=[left])
291+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
292+ LogicalAggregate(group=[{0}], i=[LITERAL_AGG(true)])
293+ LogicalProject(DEPTNO=[$7])
294+ LogicalFilter(condition=[<($0, 20)])
295+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
296+ ]]>
297+ </Resource>
298+ <Resource name="planAfter">
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+ LogicalProject(DEPTNO=[$0], $f1=[true])
306+ LogicalAggregate(group=[{0}])
307+ LogicalProject(DEPTNO=[$7])
308+ LogicalFilter(condition=[<($0, 20)])
309+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
219310]]>
220311 </Resource>
221312 </TestCase>
0 commit comments