Re: Why we cannot get all predicates for outer join query?

2023-01-17 Thread Jiajun Xie
Hi, Benchao and Renhe Thanks for your information. They are useful for me.

Re: Why we cannot get all predicates for outer join query?

2023-01-16 Thread 徐仁和
Hi jiajun Here is a jira about this problem. JIRA: https://issues.apache.org/jira/browse/CALCITE-5109 I've been too busy for a while, and I will continue to improve this jira in the next month. Best, XuRenhe Benchao Li 于2023年1月17日周二 10:21写道: > The comment for `AllPredicates`[1] has explained

Re: Why we cannot get all predicates for outer join query?

2023-01-16 Thread Benchao Li
The comment for `AllPredicates`[1] has explained the difference. Can this answer your question? The difference with respect to BuiltInMetadata.Predicates provider is that > this provider tries to extract ALL predicates even if they are not applied > on the output expressions of the relational

Re: Why we cannot get all predicates for outer join query?

2023-01-16 Thread Jiajun Xie
Hi Benchao, Thanks very much for your email. I understand `RelMetadataQuery#getAllPredicates` cannot get all predicates because some optimized cases cannot push/pull predicates. But I think the function name and code comment[1] are misleading, *getAllPredicates* cannot get all predicates. And

Re: Why we cannot get all predicates for outer join query?

2023-01-15 Thread Benchao Li
Hi Jiajun, For outer join, the semantic is different for predicates in condition and where, for example: Q1: select * from emp left join dept on emp.deptno = dept.deptno Q2: select * from emp left join dept on true where emp.deptno = dept.deptno The semantic is different for Q1 and Q2. Q1 will

Why we cannot get all predicates for outer join query?

2023-01-12 Thread Jiajun Xie
Hello, all. I try to use RelMetadataQuery#getAllPredicates get predicate, but I get null for outer join query that left column name is same as right column name. ``` final RelNode rel = sql("select name as dname from emp left outer join dept" + " on emp.deptno = dept.deptno").toRel(); final