[ https://issues.apache.org/jira/browse/CALCITE-1965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16145256#comment-16145256 ]
Christian Beikov commented on CALCITE-1965: ------------------------------------------- By the way, found a paper from a co-author of the paper we were discussind that seems to provide an approach for outer joins. Reading it now: http://webcache.googleusercontent.com/search?q=cache:gT2fJv28YvwJ:citeseerx.ist.psu.edu/viewdoc/download%3Bjsessionid%3DA83B59DDEFE8F2BEC86FA2D77880AC6A%3Fdoi%3D10.1.1.85.7733%26rep%3Drep1%26type%3Dpdf+&cd=6&hl=de&ct=clnk&gl=at&lr=lang_de%7Clang_en > Support outer joins for materialized views > ------------------------------------------ > > Key: CALCITE-1965 > URL: https://issues.apache.org/jira/browse/CALCITE-1965 > Project: Calcite > Issue Type: Improvement > Components: core > Reporter: Christian Beikov > Assignee: Julian Hyde > > Currently, only inner joins are supported for materialized view > substitutions. The support for outer joins involves creating new pulled up > predicates in case of outer joins that represent semantics of the join. For a > join predicate like "a.id = b.id" the inner join just pulls up that > predicate. When having a left join like e.g. {{select * from a left join b on > a.id = b.id}}, the actual pulled up predicate would be {{OR(=(a.id, > b.id),ISNULL(b.id))}}. For a right join it would be {{OR(=(a.id, > b.id),ISNULL(a.id))}} and for a full outer join it would be {{OR(=(a.id, > b.id),ISNULL(a.id),ISNULL(b.id))}} -- This message was sent by Atlassian JIRA (v6.4.14#64029)