private TupleExpression visitIndependent(TupleExpression expression) { boolean ifToCntO = ifToCnt; boolean ifCntSetO = ifCntSet; TupleExpression ret = expression.accept(this); ifToCnt = ifToCntO; ifCntSet = ifCntSetO; return ret; }
public static Set<TblColRef> collectFilterColumns(TupleExpression tupleExpression) { ExpressionColCollector collector = new ExpressionColCollector(); collector.ifMCols = false; tupleExpression.accept(collector); return collector.filterColumns; }
public static Set<TblColRef> collectMeasureColumns(TupleExpression tupleExpression) { ExpressionColCollector collector = new ExpressionColCollector(); collector.ifFCols = false; tupleExpression.accept(collector); return collector.measureColumns; }
@Override public TupleExpression visitRexCall(RexCallTupleExpression rexCallExpr) { for (TupleExpression child : rexCallExpr.getChildren()) { child.accept(this); } return rexCallExpr; }
public static byte[] serialize(TupleExpression rootExpr, Decorator decorator, IFilterCodeSystem<?> cs) { ByteBuffer buffer; int bufferSize = BUFFER_SIZE; while (true) { try { buffer = ByteBuffer.allocate(bufferSize); Serializer serializer = new Serializer(decorator, cs, buffer); rootExpr.accept(serializer); break; } catch (BufferOverflowException e) { logger.info("Buffer size {} cannot hold the expression, resizing to 4 times", bufferSize); bufferSize *= 4; } } byte[] result = new byte[buffer.position()]; System.arraycopy(buffer.array(), 0, result, 0, buffer.position()); return result; }
@Override public TupleExpression visitBinary(BinaryTupleExpression binaryExpr) { // serialize expression+true serializeExpression(1, binaryExpr, buffer, cs); // serialize children TupleExpression left = binaryExpr.getLeft().accept(this); TupleExpression right = binaryExpr.getRight().accept(this); // serialize none serializeExpression(-1, binaryExpr, buffer, cs); return decorator == null ? binaryExpr : new BinaryTupleExpression(binaryExpr.getOperator(), Lists.newArrayList(left, right)); }
public static Pair<Set<TblColRef>, Set<TblColRef>> collectColumnsPair(TupleExpression tupleExpression) { ExpressionColCollector collector = new ExpressionColCollector(); tupleExpression.accept(collector); return new Pair<>(collector.filterColumns, collector.measureColumns); }
@Override public TupleExpression visitCaseCall(CaseTupleExpression caseExpr) { for (Pair<TupleFilter, TupleExpression> entry : caseExpr.getWhenList()) { TupleFilter filter = entry.getFirst(); if (ifFCols) { TupleFilter.collectColumns(filter, filterColumns); } entry.getSecond().accept(this); } if (caseExpr.getElseExpr() != null) { caseExpr.getElseExpr().accept(this); } return caseExpr; }
case MINUS: boolean ifCntSetO = ifCntSet; leftCopy = binaryExpr.getLeft().accept(this); ifToCnt = ifToCntO; ifCntSet = ifCntSetO; rightCopy = binaryExpr.getRight().accept(this); break; case MULTIPLE: ifToCnt = ExpressionColCollector.collectMeasureColumns(binaryExpr.getRight()).isEmpty(); leftCopy = binaryExpr.getLeft().accept(this); rightCopy = binaryExpr.getRight().accept(this); ifCntSet = ifToCntO && (ifCntSet || !ifToCnt); break;
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);
TupleExpression ret = b61.accept(cntDistributor); assertTrue(cntDistributor.ifCntSet());
TupleExpression ret = b51.accept(cntDistributor); assertTrue(cntDistributor.ifCntSet());
private TupleExpression visitIndependent(TupleExpression expression) { boolean ifToCntO = ifToCnt; boolean ifCntSetO = ifCntSet; TupleExpression ret = expression.accept(this); ifToCnt = ifToCntO; ifCntSet = ifCntSetO; return ret; }
public static Set<TblColRef> collectMeasureColumns(TupleExpression tupleExpression) { ExpressionColCollector collector = new ExpressionColCollector(); collector.ifFCols = false; tupleExpression.accept(collector); return collector.measureColumns; }
@Override public TupleExpression visitRexCall(RexCallTupleExpression rexCallExpr) { for (TupleExpression child : rexCallExpr.getChildren()) { child.accept(this); } return rexCallExpr; }
public static Set<TblColRef> collectFilterColumns(TupleExpression tupleExpression) { ExpressionColCollector collector = new ExpressionColCollector(); collector.ifMCols = false; tupleExpression.accept(collector); return collector.filterColumns; }
@Override public TupleExpression visitBinary(BinaryTupleExpression binaryExpr) { // serialize expression+true serializeExpression(1, binaryExpr, buffer, cs); // serialize children TupleExpression left = binaryExpr.getLeft().accept(this); TupleExpression right = binaryExpr.getRight().accept(this); // serialize none serializeExpression(-1, binaryExpr, buffer, cs); return decorator == null ? binaryExpr : new BinaryTupleExpression(binaryExpr.getOperator(), Lists.newArrayList(left, right)); }
public static Pair<Set<TblColRef>, Set<TblColRef>> collectColumnsPair(TupleExpression tupleExpression) { ExpressionColCollector collector = new ExpressionColCollector(); tupleExpression.accept(collector); return new Pair<>(collector.filterColumns, collector.measureColumns); }