private RexCallTupleExpression getRexCallTupleExpression(RexCall call) { List<TupleExpression> children = Lists.newArrayListWithExpectedSize(call.getOperands().size()); for (RexNode rexNode : call.operands) { children.add(rexNode.accept(this)); } RexCallTupleExpression tuple = new RexCallTupleExpression(children); tuple.setDigest(call.toString()); return tuple; }
@Override public TupleExpression visitRexCall(RexCallTupleExpression rexCallExpr) { for (TupleExpression child : rexCallExpr.getChildren()) { child.accept(this); } return rexCallExpr; }
/** * Fake ColumnRowType for Union, all the columns are inner columns. */ private ColumnRowType buildColumnRowType() { ColumnRowType inputColumnRowType = ((OLAPRel) getInput(0)).getColumnRowType(); List<TblColRef> columns = Lists.newArrayList(); List<TupleExpression> sourceColumns = Lists.newArrayList(); for (TblColRef tblColRef : inputColumnRowType.getAllColumns()) { columns.add(TblColRef.newInnerColumn(tblColRef.getName(), TblColRef.InnerDataTypeEnum.LITERAL)); } for (RelNode child : getInputs()) { OLAPRel olapChild = (OLAPRel) child; List<TblColRef> innerCols = olapChild.getColumnRowType().getAllColumns(); List<TupleExpression> children = Lists.newArrayListWithExpectedSize(innerCols.size()); for (TblColRef innerCol : innerCols) { children.add(new ColumnTupleExpression(innerCol)); } sourceColumns.add(new RexCallTupleExpression(children)); } ColumnRowType fackColumnRowType = new ColumnRowType(columns, sourceColumns); return fackColumnRowType; }
/** * Fake ColumnRowType for Union, all the columns are inner columns. */ private ColumnRowType buildColumnRowType() { ColumnRowType inputColumnRowType = ((OLAPRel) getInput(0)).getColumnRowType(); List<TblColRef> columns = Lists.newArrayList(); List<TupleExpression> sourceColumns = Lists.newArrayList(); for (TblColRef tblColRef : inputColumnRowType.getAllColumns()) { columns.add(TblColRef.newInnerColumn(tblColRef.getName(), TblColRef.InnerDataTypeEnum.LITERAL)); } for (RelNode child : getInputs()) { OLAPRel olapChild = (OLAPRel) child; List<TblColRef> innerCols = olapChild.getColumnRowType().getAllColumns(); List<TupleExpression> children = Lists.newArrayListWithExpectedSize(innerCols.size()); for (TblColRef innerCol : innerCols) { children.add(new ColumnTupleExpression(innerCol)); } sourceColumns.add(new RexCallTupleExpression(children)); } ColumnRowType fackColumnRowType = new ColumnRowType(columns, sourceColumns); return fackColumnRowType; }
private RexCallTupleExpression getRexCallTupleExpression(RexCall call) { List<TupleExpression> children = Lists.newArrayListWithExpectedSize(call.getOperands().size()); for (RexNode rexNode : call.operands) { children.add(rexNode.accept(this)); } RexCallTupleExpression tuple = new RexCallTupleExpression(children); tuple.setDigest(call.toString()); return tuple; }
@Override public TupleExpression visitRexCall(RexCallTupleExpression rexCallExpr) { for (TupleExpression child : rexCallExpr.getChildren()) { child.accept(this); } return rexCallExpr; }