@Override public ILogicalOperator visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, Void arg) throws AlgebricksException { List<Mutable<ILogicalExpression>> newKeyExpressions = new ArrayList<>(); deepCopyExpressionRefs(newKeyExpressions, op.getPrimaryKeyExpressions()); List<Mutable<ILogicalExpression>> newLSMComponentFilterExpressions = new ArrayList<>(); deepCopyExpressionRefs(newKeyExpressions, op.getAdditionalFilteringExpressions()); InsertDeleteUpsertOperator insertDeleteOp = new InsertDeleteUpsertOperator(op.getDataSource(), deepCopyExpressionRef(op.getPayloadExpression()), newKeyExpressions, op.getOperation(), op.isBulkload()); insertDeleteOp.setAdditionalFilteringExpressions(newLSMComponentFilterExpressions); return insertDeleteOp; }
@Override public Void visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, Void arg) { // 1. The record variable op.getPayloadExpression().getValue().getUsedVariables(usedVariables); // 2. The primary key variables for (Mutable<ILogicalExpression> e : op.getPrimaryKeyExpressions()) { e.getValue().getUsedVariables(usedVariables); } // 3. The filters variables if (op.getAdditionalFilteringExpressions() != null) { for (Mutable<ILogicalExpression> e : op.getAdditionalFilteringExpressions()) { e.getValue().getUsedVariables(usedVariables); } } // 4. The Other variables (Not key, Not payload, and Not Filter) if (op.getAdditionalNonFilteringExpressions() != null) { for (Mutable<ILogicalExpression> e : op.getAdditionalNonFilteringExpressions()) { e.getValue().getUsedVariables(usedVariables); } } return null; }
filteringExpressions = new ArrayList<>(); for (Mutable<ILogicalExpression> filteringExpression : primaryIndexModificationOp .getAdditionalFilteringExpressions()) { filteringExpression.getValue().getUsedVariables(filteringVars); for (LogicalVariable var : filteringVars) {
if (opLoad.getAdditionalFilteringExpressions() != null) { additionalFilteringKeys = new ArrayList<LogicalVariable>(); getKeys(opLoad.getAdditionalFilteringExpressions(), additionalFilteringKeys);