public TupleExpression getSourceColumnsByIndex(int i) { TupleExpression result = null; if (sourceColumns != null) { result = sourceColumns.get(i); } if (result == null || result instanceof NoneTupleExpression) { result = new ColumnTupleExpression(getColumnByIndex(i)); } return result; }
@Override public TupleExpression visitColumn(ColumnTupleExpression colExpr) { return new ColumnTupleExpression(colExpr.getColumn()); }
@Override public TupleExpression visitColumn(ColumnTupleExpression colExpr) { if (ifMCols) { measureColumns.add(colExpr.getColumn()); } return colExpr; }
private TblColRef translateRexNode(TupleExpression tupleExpr, String fieldName) { if (tupleExpr instanceof ColumnTupleExpression) { return ((ColumnTupleExpression) tupleExpr).getColumn(); } else if (tupleExpr instanceof NumberTupleExpression) { Object value = ((NumberTupleExpression) tupleExpr).getValue(); return TblColRef.newInnerColumn(value == null ? "null" : value.toString(), InnerDataTypeEnum.LITERAL); } else if (tupleExpr instanceof StringTupleExpression) { Object value = ((StringTupleExpression) tupleExpr).getValue(); return TblColRef.newInnerColumn(value == null ? "null" : value.toString(), InnerDataTypeEnum.LITERAL); } return TblColRef.newInnerColumn(fieldName, InnerDataTypeEnum.LITERAL, tupleExpr.getDigest()); }
@Override public TupleExpression visitInputRef(RexInputRef inputRef) { int index = inputRef.getIndex(); // check it for rewrite count if (index < inputRowType.size()) { TblColRef column = inputRowType.getColumnByIndex(index); TupleExpression tuple = new ColumnTupleExpression(column); tuple.setDigest(inputRef.toString()); return tuple; } else { throw new IllegalStateException("Can't find " + inputRef + " from child columnrowtype"); } }
@Override public TupleExpression visitColumn(ColumnTupleExpression colExpr) { if (decorator != null) { colExpr = new ColumnTupleExpression(decorator.mapCol(colExpr.getColumn())); } serializeExpression(0, colExpr, buffer, cs); return colExpr; }
this.groups.add(((ColumnTupleExpression) tupleExpression).getColumn()); } else if (this.context.isDynamicColumnEnabled()) { Pair<Set<TblColRef>, Set<TblColRef>> cols = ExpressionColCollector.collectColumnsPair(tupleExpression);
break; case COLUMN: tuple = new ColumnTupleExpression(null); break; case CASE:
ColumnTupleExpression cntExpr = new ColumnTupleExpression(SumDynamicFunctionDesc.mockCntCol); ExpressionCountDistributor cntDistributor = new ExpressionCountDistributor(cntExpr); tupleExpr = tupleExpr.accept(cntDistributor); TblColRef srcCol = ((ColumnTupleExpression) tupleExpr).getColumn(); if (this.context.belongToFactTableDims(srcCol)) { tupleExpr = getCountColumnExpression(srcCol);
@Override public TupleExpression visitColumn(ColumnTupleExpression colExpr) { if (ifMCols) { measureColumns.add(colExpr.getColumn()); } return colExpr; }
/** * 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; }
@Override public TupleExpression visitColumn(ColumnTupleExpression colExpr) { return new ColumnTupleExpression(colExpr.getColumn()); }
private TblColRef translateRexNode(TupleExpression tupleExpr, String fieldName) { if (tupleExpr instanceof ColumnTupleExpression) { return ((ColumnTupleExpression) tupleExpr).getColumn(); } else if (tupleExpr instanceof NumberTupleExpression) { Object value = ((NumberTupleExpression) tupleExpr).getValue(); return TblColRef.newInnerColumn(value == null ? "null" : value.toString(), InnerDataTypeEnum.LITERAL); } else if (tupleExpr instanceof StringTupleExpression) { Object value = ((StringTupleExpression) tupleExpr).getValue(); return TblColRef.newInnerColumn(value == null ? "null" : value.toString(), InnerDataTypeEnum.LITERAL); } return TblColRef.newInnerColumn(fieldName, InnerDataTypeEnum.LITERAL, tupleExpr.getDigest()); }
private TupleExpression getCountColumnExpression(TblColRef colRef) { List<Pair<TupleFilter, TupleExpression>> whenList = Lists.newArrayListWithExpectedSize(1); TupleFilter whenFilter = new CompareTupleFilter(TupleFilter.FilterOperatorEnum.ISNULL); whenFilter.addChild(new ColumnTupleFilter(colRef)); whenList.add(new Pair<TupleFilter, TupleExpression>(whenFilter, new NumberTupleExpression(0))); TupleExpression elseExpr = new ColumnTupleExpression(SumDynamicFunctionDesc.mockCntCol); TupleExpression ret = new CaseTupleExpression(whenList, elseExpr); ret.setDigest("_KY_COUNT(" + colRef.getName() + ")"); return ret; } }
@Override public TupleExpression visitColumn(ColumnTupleExpression colExpr) { if (decorator != null) { colExpr = new ColumnTupleExpression(decorator.mapCol(colExpr.getColumn())); } serializeExpression(0, colExpr, buffer, cs); return colExpr; }
this.groups.add(((ColumnTupleExpression) tupleExpression).getColumn()); } else if (this.context.isDynamicColumnEnabled()) { Pair<Set<TblColRef>, Set<TblColRef>> cols = ExpressionColCollector.collectColumnsPair(tupleExpression);
ColumnTupleExpression colTuple1 = new ColumnTupleExpression(col1); ColumnTupleExpression colTuple2 = new ColumnTupleExpression(col2);
ColumnTupleExpression cntExpr = new ColumnTupleExpression(SumDynamicFunctionDesc.mockCntCol); ExpressionCountDistributor cntDistributor = new ExpressionCountDistributor(cntExpr); tupleExpr = tupleExpr.accept(cntDistributor); TblColRef srcCol = ((ColumnTupleExpression) tupleExpr).getColumn(); if (this.context.belongToFactTableDims(srcCol)) { tupleExpr = getCountColumnExpression(srcCol);
@Test public void testSerialization() { TblColRef colD = TblColRef.mockup(t, 1, "C1", "decimal"); TblColRef colM = TblColRef.mockup(t, 2, "C2", "string"); BigDecimal value = BigDecimal.valueOf(10L); ColumnTupleFilter colFilter = new ColumnTupleFilter(colD); ConstantTupleFilter constFilter = new ConstantTupleFilter("col"); CompareTupleFilter compareFilter = new CompareTupleFilter(TupleFilter.FilterOperatorEnum.EQ); compareFilter.addChild(colFilter); compareFilter.addChild(constFilter); ColumnTupleExpression colTuple = new ColumnTupleExpression(colM); NumberTupleExpression constTuple = new NumberTupleExpression(value); Pair<TupleFilter, TupleExpression> whenEntry = new Pair<TupleFilter, TupleExpression>(compareFilter, colTuple); CaseTupleExpression caseTuple = new CaseTupleExpression(Lists.newArrayList(whenEntry), constTuple); byte[] result = TupleExpressionSerializer.serialize(caseTuple, StringCodeSystem.INSTANCE); TupleExpression desTuple = TupleExpressionSerializer.deserialize(result, StringCodeSystem.INSTANCE); assertEquals(caseTuple, desTuple); } }
TupleExpression t5 = new ColumnTupleExpression(c); IEvaluatableTuple evaluatableTuple = PowerMockito.mock(IEvaluatableTuple.class); IFilterCodeSystem filterCodeSystem = PowerMockito.mock(IFilterCodeSystem.class);