[teiid-issues] [JBoss JIRA] Resolved: (TEIID-1376) Add support for pushing joins through a union
Steven Hawkins (JIRA)
jira-events at lists.jboss.org
Fri Dec 17 12:57:18 EST 2010
[ https://issues.jboss.org/browse/TEIID-1376?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Steven Hawkins resolved TEIID-1376.
-----------------------------------
Resolution: Done
Added RuleDecomposeJoin to handle this situation. The decision to decompose is based upon detecting that each side of the join is a partitioned union (note that non-ansi joins of more than 2 tables may cause the optimization to not detect the appropriate join). Union partitioning is inferred from the transformation/inline view. If one (or more) of the union columns is defined by constants and/or has IN predicates in the WHERE clause that make each branch mutually exclusive, then the union is considered partitioned. e.g. "select 1 as x, y from foo union all select z, a from foo1 where z in (2, 3)" would be considered partitioned on x. Note that more advanced or explicit partition could be considered in the future.
The rule currently only looks for situations where at most 1 partition matches from each side. This is a simplifying assumption based upon the lack of arbitrary sub-plan cloning and potentially making the decision costing dependent.
The release notes have been updated, but the docs still need to add the concept of a partitioned union. The concept of partitioning will also be used so that views with unions can be inherently insertable.
> Add support for pushing joins through a union
> ---------------------------------------------
>
> Key: TEIID-1376
> URL: https://issues.jboss.org/browse/TEIID-1376
> Project: Teiid
> Issue Type: Feature Request
> Components: Query Engine
> Affects Versions: 7.2
> Reporter: Steven Hawkins
> Assignee: Steven Hawkins
> Fix For: 7.3
>
>
> Given a query structure such as:
> inner join
> union all
> a
> b
> union all
> c
> d
> where a,b,c,d are access nodes to a source that supports joins and there is a constant column projected by each union branch and that column is used in the join predicates, then we should be able examine
> union all
> inner join
> a
> b
> inner join
> a
> c
> ...
> to determine if any of the joins will no longer be necessary.
> This is a possible pattern in a multi-source or partitioning scenario.
> In some scenarios there may not be an actual projected literal, which could be accommodated if a foreign key could be marked as partitioned.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the teiid-issues
mailing list