public void rewriteGeneric(RelNode rel) { RelNode newRel = rel.copy(rel.getTraitSet(), rel.getInputs()); List<RelNode> oldInputs = rel.getInputs(); for (int i = 0; i < oldInputs.size(); ++i) { newRel.replaceInput( i, getNewForOldRel(oldInputs.get(i))); } setNewForOldRel(rel, newRel); }
public void rewriteGeneric(RelNode rel) { RelNode newRel = rel.copy(rel.getTraitSet(), rel.getInputs()); List<RelNode> oldInputs = rel.getInputs(); for (int i = 0; i < oldInputs.size(); ++i) { newRel.replaceInput( i, getNewForOldRel(oldInputs.get(i))); } setNewForOldRel(rel, newRel); }
public void rewriteRel(LogicalJoin rel) { LogicalJoin newRel = LogicalJoin.create(getNewForOldRel(rel.getLeft()), getNewForOldRel(rel.getRight()), rel.getCondition().accept(new RewriteRexShuttle()), rel.getVariablesSet(), rel.getJoinType()); setNewForOldRel(rel, newRel); }
public void rewriteRel(LogicalJoin rel) { LogicalJoin newRel = LogicalJoin.create(getNewForOldRel(rel.getLeft()), getNewForOldRel(rel.getRight()), rel.getCondition().accept(new RewriteRexShuttle()), rel.getVariablesSet(), rel.getJoinType()); setNewForOldRel(rel, newRel); }
/** * Returns a mapping between old and new fields. * * @param oldRel Old relational expression * @return Mapping between fields of old and new */ private Mappings.TargetMapping getNewForOldInputMapping(RelNode oldRel) { final RelNode newRel = getNewForOldRel(oldRel); return Mappings.target( this::getNewForOldInput, oldRel.getRowType().getFieldCount(), newRel.getRowType().getFieldCount()); }
/** * Returns a mapping between old and new fields. * * @param oldRel Old relational expression * @return Mapping between fields of old and new */ private Mappings.TargetMapping getNewForOldInputMapping(RelNode oldRel) { final RelNode newRel = getNewForOldRel(oldRel); return Mappings.target( this::getNewForOldInput, oldRel.getRowType().getFieldCount(), newRel.getRowType().getFieldCount()); }
public void rewriteRel(LogicalFilter rel) { RelNode newRel = rel.copy(rel.getTraitSet(), getNewForOldRel(rel.getInput()), rel.getCondition().accept(new RewriteRexShuttle())); setNewForOldRel(rel, newRel); }
public void rewriteRel(LogicalFilter rel) { RelNode newRel = rel.copy(rel.getTraitSet(), getNewForOldRel(rel.getInput()), rel.getCondition().accept(new RewriteRexShuttle())); setNewForOldRel(rel, newRel); }
public void rewriteRel(LogicalProject rel) { final List<Pair<RexNode, String>> flattenedExpList = new ArrayList<>(); flattenProjections(new RewriteRexShuttle(), rel.getProjects(), rel.getRowType().getFieldNames(), "", flattenedExpList); relBuilder.push(getNewForOldRel(rel.getInput())) .projectNamed(Pair.left(flattenedExpList), Pair.right(flattenedExpList), true); setNewForOldRel(rel, relBuilder.build()); }
public void rewriteRel(LogicalProject rel) { final List<Pair<RexNode, String>> flattenedExpList = new ArrayList<>(); flattenProjections(new RewriteRexShuttle(), rel.getProjects(), rel.getRowType().getFieldNames(), "", flattenedExpList); relBuilder.push(getNewForOldRel(rel.getInput())) .projectNamed(Pair.left(flattenedExpList), Pair.right(flattenedExpList), true); setNewForOldRel(rel, relBuilder.build()); }
public void rewriteRel(LogicalTableModify rel) { LogicalTableModify newRel = LogicalTableModify.create( rel.getTable(), rel.getCatalogReader(), getNewForOldRel(rel.getInput()), rel.getOperation(), rel.getUpdateColumnList(), rel.getSourceExpressionList(), true); setNewForOldRel(rel, newRel); }
public void rewriteRel(LogicalTableModify rel) { LogicalTableModify newRel = LogicalTableModify.create( rel.getTable(), rel.getCatalogReader(), getNewForOldRel(rel.getInput()), rel.getOperation(), rel.getUpdateColumnList(), rel.getSourceExpressionList(), true); setNewForOldRel(rel, newRel); }
public void rewriteRel(LogicalCorrelate rel) { ImmutableBitSet.Builder newPos = ImmutableBitSet.builder(); for (int pos : rel.getRequiredColumns()) { RelDataType corrFieldType = rel.getLeft().getRowType().getFieldList().get(pos) .getType(); if (corrFieldType.isStruct()) { throw Util.needToImplement("correlation on structured type"); } newPos.set(getNewForOldInput(pos)); } LogicalCorrelate newRel = LogicalCorrelate.create(getNewForOldRel(rel.getLeft()), getNewForOldRel(rel.getRight()), rel.getCorrelationId(), newPos.build(), rel.getJoinType()); setNewForOldRel(rel, newRel); }
public void rewriteRel(LogicalCorrelate rel) { ImmutableBitSet.Builder newPos = ImmutableBitSet.builder(); for (int pos : rel.getRequiredColumns()) { RelDataType corrFieldType = rel.getLeft().getRowType().getFieldList().get(pos) .getType(); if (corrFieldType.isStruct()) { throw Util.needToImplement("correlation on structured type"); } newPos.set(getNewForOldInput(pos)); } LogicalCorrelate newRel = LogicalCorrelate.create(getNewForOldRel(rel.getLeft()), getNewForOldRel(rel.getRight()), rel.getCorrelationId(), newPos.build(), rel.getJoinType()); setNewForOldRel(rel, newRel); }
public void rewriteRel(Sort rel) { RelCollation oldCollation = rel.getCollation(); final RelNode oldChild = rel.getInput(); final RelNode newChild = getNewForOldRel(oldChild); final Mappings.TargetMapping mapping = getNewForOldInputMapping(oldChild); // validate for (RelFieldCollation field : oldCollation.getFieldCollations()) { int oldInput = field.getFieldIndex(); RelDataType sortFieldType = oldChild.getRowType().getFieldList().get(oldInput).getType(); if (sortFieldType.isStruct()) { // TODO jvs 10-Feb-2005 throw Util.needToImplement("sorting on structured types"); } } RelCollation newCollation = RexUtil.apply(mapping, oldCollation); Sort newRel = LogicalSort.create(newChild, newCollation, rel.offset, rel.fetch); setNewForOldRel(rel, newRel); }
public void rewriteRel(Sort rel) { RelCollation oldCollation = rel.getCollation(); final RelNode oldChild = rel.getInput(); final RelNode newChild = getNewForOldRel(oldChild); final Mappings.TargetMapping mapping = getNewForOldInputMapping(oldChild); // validate for (RelFieldCollation field : oldCollation.getFieldCollations()) { int oldInput = field.getFieldIndex(); RelDataType sortFieldType = oldChild.getRowType().getFieldList().get(oldInput).getType(); if (sortFieldType.isStruct()) { // TODO jvs 10-Feb-2005 throw Util.needToImplement("sorting on structured types"); } } RelCollation newCollation = RexUtil.apply(mapping, oldCollation); Sort newRel = LogicalSort.create(newChild, newCollation, rel.offset, rel.fetch); setNewForOldRel(rel, newRel); }
RelNode newInput = null; for (RelNode oldInput1 : currentRel.getInputs()) { newInput = getNewForOldRel(oldInput1); RelDataType oldInputType = oldInput1.getRowType(); int n = oldInputType.getFieldCount();
public RelNode rewrite(RelNode root) { // Perform flattening. final RewriteRelVisitor visitor = new RewriteRelVisitor(); visitor.visit(root, 0, null); RelNode flattened = getNewForOldRel(root); flattenedRootType = flattened.getRowType(); // If requested, add an additional projection which puts // everything back into structured form for return to the // client. restructured = false; List<RexNode> structuringExps = null; if (restructure) { iRestructureInput = 0; structuringExps = restructureFields(root.getRowType()); } if (restructured) { // REVIEW jvs 23-Mar-2005: How do we make sure that this // implementation stays in Java? Fennel can't handle // structured types. return relBuilder.push(flattened) .projectNamed(structuringExps, root.getRowType().getFieldNames(), true) .build(); } else { return flattened; } }
public RelNode rewrite(RelNode root) { // Perform flattening. final RewriteRelVisitor visitor = new RewriteRelVisitor(); visitor.visit(root, 0, null); RelNode flattened = getNewForOldRel(root); flattenedRootType = flattened.getRowType(); // If requested, add an additional projection which puts // everything back into structured form for return to the // client. restructured = false; List<RexNode> structuringExps = null; if (restructure) { iRestructureInput = 0; structuringExps = restructureFields(root.getRowType()); } if (restructured) { // REVIEW jvs 23-Mar-2005: How do we make sure that this // implementation stays in Java? Fennel can't handle // structured types. return relBuilder.push(flattened) .projectNamed(structuringExps, root.getRowType().getFieldNames(), true) .build(); } else { return flattened; } }
public void rewriteRel(LogicalCalc rel) { final RelNode newInput = getNewForOldRel(rel.getInput());