private TupleExpression visitIndependent(TupleExpression expression) { boolean ifToCntO = ifToCnt; boolean ifCntSetO = ifCntSet; TupleExpression ret = expression.accept(this); ifToCnt = ifToCntO; ifCntSet = ifCntSetO; return ret; }
private void calculateDynamics() { for (int c : tupleExpressionMap.keySet()) { TupleExpression tupleExpr = tupleExpressionMap.get(c); Object rtResult = tupleExpr.calculate(oneTuple, filterCodeSystem); next.setValue(c, rtResult); } } };
private static void serializeExpression(int flag, TupleExpression expr, ByteBuffer buffer, IFilterCodeSystem<?> cs) { if (flag < 0) { BytesUtil.writeVInt(-1, buffer); } else { int opVal = expr.getOperator().getValue(); BytesUtil.writeVInt(opVal, buffer); expr.serialize(cs, buffer); BytesUtil.writeVInt(flag, buffer); } }
tuple.deserialize(cs, buffer); parentExpression.addChild(tuple);
IFilterCodeSystem filterCodeSystem = PowerMockito.mock(IFilterCodeSystem.class); t5 = PowerMockito.spy(t5); PowerMockito.when(t5.calculate(evaluatableTuple, filterCodeSystem)).thenReturn(new BigDecimal(3)); TupleExpression ret = b61.accept(cntDistributor); assertTrue(cntDistributor.ifCntSet()); assertEquals(new BigDecimal(223), ret.calculate(evaluatableTuple, filterCodeSystem)); assertEquals(new BigDecimal(481), ret.calculate(evaluatableTuple, filterCodeSystem)); assertEquals(new BigDecimal(196), ret.calculate(evaluatableTuple, filterCodeSystem));
ColumnTupleExpression cntExpr = new ColumnTupleExpression(SumDynamicFunctionDesc.mockCntCol); ExpressionCountDistributor cntDistributor = new ExpressionCountDistributor(cntExpr); tupleExpr = tupleExpr.accept(cntDistributor); SumDynamicFunctionDesc sumDynFunc = new SumDynamicFunctionDesc(parameter, tupleExpr); this.aggregations.add(sumDynFunc); tupleExpr = getCountColumnExpression(srcCol); TblColRef column = TblColRef.newInnerColumn(tupleExpr.getDigest(), TblColRef.InnerDataTypeEnum.LITERAL);
if (this.context.groupByExpression == false && !(COLUMN.equals(tupleExpression.getOperator()) && tupleExpression.getChildren().isEmpty())) { this.context.groupByExpression = true;
protected boolean ifAbleToPushDown() { if (ifAbleToPushDown == null) { for (TupleExpression child : children) { ifAbleToPushDown = child.ifAbleToPushDown(); if (!ifAbleToPushDown) { break; } } if (ifAbleToPushDown == null) { ifAbleToPushDown = true; } } return ifAbleToPushDown; }
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()); }
if (this.context.isDynamicColumnEnabled() && tupleExpr.ifForDynamicColumn()) { SqlTypeName fSqlType = columnField.getType().getSqlTypeName(); String dataType = OLAPTable.DATATYPE_MAPPING.get(fSqlType);
IFilterCodeSystem filterCodeSystem = PowerMockito.mock(IFilterCodeSystem.class); t3 = PowerMockito.spy(t3); PowerMockito.when(t3.calculate(evaluatableTuple, filterCodeSystem)).thenReturn(new BigDecimal(3)); TupleExpression ret = b51.accept(cntDistributor); assertTrue(cntDistributor.ifCntSet()); assertEquals(new BigDecimal(1363), ret.calculate(evaluatableTuple, filterCodeSystem));
ColumnTupleExpression cntExpr = new ColumnTupleExpression(SumDynamicFunctionDesc.mockCntCol); ExpressionCountDistributor cntDistributor = new ExpressionCountDistributor(cntExpr); tupleExpr = tupleExpr.accept(cntDistributor); SumDynamicFunctionDesc sumDynFunc = new SumDynamicFunctionDesc(parameter, tupleExpr); this.aggregations.add(sumDynFunc); tupleExpr = getCountColumnExpression(srcCol); TblColRef column = TblColRef.newInnerColumn(tupleExpr.getDigest(), TblColRef.InnerDataTypeEnum.LITERAL);
if (this.context.groupByExpression == false && !(COLUMN.equals(tupleExpression.getOperator()) && tupleExpression.getChildren().isEmpty())) { this.context.groupByExpression = true;
tuple.deserialize(cs, buffer); parentExpression.addChild(tuple);
@Override protected boolean ifAbleToPushDown() { if (ifAbleToPushDown == null) { for (Pair<TupleFilter, TupleExpression> whenEntry : whenList) { ifAbleToPushDown = whenEntry.getSecond().ifAbleToPushDown(); if (!ifAbleToPushDown) { break; } } if (elseExpr != null && Boolean.TRUE.equals(ifAbleToPushDown)) { ifAbleToPushDown = elseExpr.ifAbleToPushDown(); } if (ifAbleToPushDown == null) { ifAbleToPushDown = true; } } return ifAbleToPushDown; }
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()); }
if (this.context.isDynamicColumnEnabled() && tupleExpr.ifForDynamicColumn()) { SqlTypeName fSqlType = columnField.getType().getSqlTypeName(); String dataType = OLAPTable.DATATYPE_MAPPING.get(fSqlType);
public static Set<TblColRef> collectFilterColumns(TupleExpression tupleExpression) { ExpressionColCollector collector = new ExpressionColCollector(); collector.ifMCols = false; tupleExpression.accept(collector); return collector.filterColumns; }
@Override public Object calculate(IEvaluatableTuple tuple, IFilterCodeSystem<?> cs) { for (Pair<TupleFilter, TupleExpression> entry : whenList) { if (entry.getFirst().evaluate(tuple, cs)) { return entry.getSecond().calculate(tuple, cs); } } if (elseExpr != null) { return elseExpr.calculate(tuple, cs); } return null; }
private static void serializeExpression(int flag, TupleExpression expr, ByteBuffer buffer, IFilterCodeSystem<?> cs) { if (flag < 0) { BytesUtil.writeVInt(-1, buffer); } else { int opVal = expr.getOperator().getValue(); BytesUtil.writeVInt(opVal, buffer); expr.serialize(cs, buffer); BytesUtil.writeVInt(flag, buffer); } }