private static boolean |
AbstractMaterializedViewRule.compensatePartial(java.util.Set<RexTableInputRef.RelTableRef> sourceTableRefs,
AbstractMaterializedViewRule.EquivalenceClasses sourceEC,
java.util.Set<RexTableInputRef.RelTableRef> targetTableRefs,
com.google.common.collect.Multimap<RexTableInputRef,RexTableInputRef> compensationEquiColumns) |
It checks whether the target can be rewritten using the source even though the
source uses additional tables.
|
protected abstract AbstractMaterializedViewRule.ViewPartialRewriting |
AbstractMaterializedViewRule.compensateViewPartial(RelBuilder relBuilder,
RexBuilder rexBuilder,
RelMetadataQuery mq,
RelNode input,
Project topProject,
RelNode node,
java.util.Set<RexTableInputRef.RelTableRef> queryTableRefs,
AbstractMaterializedViewRule.EquivalenceClasses queryEC,
Project topViewProject,
RelNode viewNode,
java.util.Set<RexTableInputRef.RelTableRef> viewTableRefs) |
It checks whether the query can be rewritten using the view even though the
query uses additional tables.
|
protected AbstractMaterializedViewRule.ViewPartialRewriting |
AbstractMaterializedViewRule.MaterializedViewAggregateRule.compensateViewPartial(RelBuilder relBuilder,
RexBuilder rexBuilder,
RelMetadataQuery mq,
RelNode input,
Project topProject,
RelNode node,
java.util.Set<RexTableInputRef.RelTableRef> queryTableRefs,
AbstractMaterializedViewRule.EquivalenceClasses queryEC,
Project topViewProject,
RelNode viewNode,
java.util.Set<RexTableInputRef.RelTableRef> viewTableRefs) |
|
protected AbstractMaterializedViewRule.ViewPartialRewriting |
AbstractMaterializedViewRule.MaterializedViewJoinRule.compensateViewPartial(RelBuilder relBuilder,
RexBuilder rexBuilder,
RelMetadataQuery mq,
RelNode input,
Project topProject,
RelNode node,
java.util.Set<RexTableInputRef.RelTableRef> queryTableRefs,
AbstractMaterializedViewRule.EquivalenceClasses queryEC,
Project topViewProject,
RelNode viewNode,
java.util.Set<RexTableInputRef.RelTableRef> viewTableRefs) |
|
private static org.apache.commons.lang3.tuple.Triple<RexNode,RexNode,RexNode> |
AbstractMaterializedViewRule.computeCompensationPredicates(RexBuilder rexBuilder,
RexSimplify simplify,
AbstractMaterializedViewRule.EquivalenceClasses sourceEC,
org.apache.commons.lang3.tuple.Triple<RexNode,RexNode,RexNode> sourcePreds,
AbstractMaterializedViewRule.EquivalenceClasses targetEC,
org.apache.commons.lang3.tuple.Triple<RexNode,RexNode,RexNode> targetPreds,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> sourceToTargetTableMapping) |
We check whether the predicates in the source are contained in the predicates
in the target.
|
protected static AbstractMaterializedViewRule.EquivalenceClasses |
AbstractMaterializedViewRule.EquivalenceClasses.copy(AbstractMaterializedViewRule.EquivalenceClasses ec) |
|
private static RexNode |
AbstractMaterializedViewRule.generateEquivalenceClasses(RexBuilder rexBuilder,
AbstractMaterializedViewRule.EquivalenceClasses sourceEC,
AbstractMaterializedViewRule.EquivalenceClasses targetEC) |
Given the equi-column predicates of the source and the target and the
computed equivalence classes, it extracts possible mappings between
the equivalence classes.
|
protected com.google.common.collect.Multimap<java.lang.Integer,java.lang.Integer> |
AbstractMaterializedViewRule.MaterializedViewAggregateRule.generateMapping(RexBuilder rexBuilder,
RexSimplify simplify,
RelMetadataQuery mq,
RelNode node,
RelNode target,
ImmutableBitSet positions,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> tableMapping,
AbstractMaterializedViewRule.EquivalenceClasses sourceEC,
java.util.List<RexNode> additionalExprs) |
Mapping from node expressions to target expressions.
|
private static AbstractMaterializedViewRule.NodeLineage |
AbstractMaterializedViewRule.generateSwapColumnTableReferencesLineage(RexBuilder rexBuilder,
RelMetadataQuery mq,
RelNode node,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> tableMapping,
AbstractMaterializedViewRule.EquivalenceClasses ec,
java.util.List<RexNode> nodeExprs) |
It swaps the column references and then the table references of the input
expressions using the equivalence classes and the table mapping.
|
private static AbstractMaterializedViewRule.NodeLineage |
AbstractMaterializedViewRule.generateSwapTableColumnReferencesLineage(RexBuilder rexBuilder,
RelMetadataQuery mq,
RelNode node,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> tableMapping,
AbstractMaterializedViewRule.EquivalenceClasses ec,
java.util.List<RexNode> nodeExprs) |
It swaps the table references and then the column references of the input
expressions using the table mapping and the equivalence classes.
|
private static RexNode |
AbstractMaterializedViewRule.rewriteExpression(RexBuilder rexBuilder,
RelMetadataQuery mq,
RelNode targetNode,
RelNode node,
java.util.List<RexNode> nodeExprs,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> tableMapping,
AbstractMaterializedViewRule.EquivalenceClasses ec,
boolean swapTableColumn,
RexNode exprToRewrite) |
First, the method takes the node expressions nodeExprs and swaps the table
and column references using the table mapping and the equivalence classes.
|
private static java.util.List<RexNode> |
AbstractMaterializedViewRule.rewriteExpressions(RexBuilder rexBuilder,
RelMetadataQuery mq,
RelNode targetNode,
RelNode node,
java.util.List<RexNode> nodeExprs,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> tableMapping,
AbstractMaterializedViewRule.EquivalenceClasses ec,
boolean swapTableColumn,
java.util.List<RexNode> exprsToRewrite) |
First, the method takes the node expressions nodeExprs and swaps the table
and column references using the table mapping and the equivalence classes.
|
protected RelNode |
AbstractMaterializedViewRule.MaterializedViewAggregateRule.rewriteQuery(RelBuilder relBuilder,
RexBuilder rexBuilder,
RexSimplify simplify,
RelMetadataQuery mq,
RexNode compensationColumnsEquiPred,
RexNode otherCompensationPred,
Project topProject,
RelNode node,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> queryToViewTableMapping,
AbstractMaterializedViewRule.EquivalenceClasses viewEC,
AbstractMaterializedViewRule.EquivalenceClasses queryEC) |
|
protected RelNode |
AbstractMaterializedViewRule.MaterializedViewJoinRule.rewriteQuery(RelBuilder relBuilder,
RexBuilder rexBuilder,
RexSimplify simplify,
RelMetadataQuery mq,
RexNode compensationColumnsEquiPred,
RexNode otherCompensationPred,
Project topProject,
RelNode node,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> viewToQueryTableMapping,
AbstractMaterializedViewRule.EquivalenceClasses viewEC,
AbstractMaterializedViewRule.EquivalenceClasses queryEC) |
|
protected abstract RelNode |
AbstractMaterializedViewRule.rewriteQuery(RelBuilder relBuilder,
RexBuilder rexBuilder,
RexSimplify simplify,
RelMetadataQuery mq,
RexNode compensationColumnsEquiPred,
RexNode otherCompensationPred,
Project topProject,
RelNode node,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> viewToQueryTableMapping,
AbstractMaterializedViewRule.EquivalenceClasses viewEC,
AbstractMaterializedViewRule.EquivalenceClasses queryEC) |
If the view will be used in a union rewriting, this method is responsible for
rewriting the query branch of the union using the given compensation predicate.
|
protected RelNode |
AbstractMaterializedViewRule.MaterializedViewAggregateRule.rewriteView(RelBuilder relBuilder,
RexBuilder rexBuilder,
RexSimplify simplify,
RelMetadataQuery mq,
AbstractMaterializedViewRule.MatchModality matchModality,
boolean unionRewriting,
RelNode input,
Project topProject,
RelNode node,
Project topViewProject,
RelNode viewNode,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> queryToViewTableMapping,
AbstractMaterializedViewRule.EquivalenceClasses queryEC) |
|
protected RelNode |
AbstractMaterializedViewRule.MaterializedViewJoinRule.rewriteView(RelBuilder relBuilder,
RexBuilder rexBuilder,
RexSimplify simplify,
RelMetadataQuery mq,
AbstractMaterializedViewRule.MatchModality matchModality,
boolean unionRewriting,
RelNode input,
Project topProject,
RelNode node,
Project topViewProject,
RelNode viewNode,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> queryToViewTableMapping,
AbstractMaterializedViewRule.EquivalenceClasses queryEC) |
|
protected abstract RelNode |
AbstractMaterializedViewRule.rewriteView(RelBuilder relBuilder,
RexBuilder rexBuilder,
RexSimplify simplify,
RelMetadataQuery mq,
AbstractMaterializedViewRule.MatchModality matchModality,
boolean unionRewriting,
RelNode input,
Project topProject,
RelNode node,
Project topViewProject,
RelNode viewNode,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> queryToViewTableMapping,
AbstractMaterializedViewRule.EquivalenceClasses queryEC) |
Rewrites the query using the given view query.
|