private AssignOperator createAssignOperator(List<IOptimizableFuncExpr> optFuncExprs, List<LogicalVariable> minFilterVars, List<LogicalVariable> maxFilterVars, IOptimizationContext context, SourceLocation sourceLoc) { List<LogicalVariable> assignKeyVarList = new ArrayList<>(); List<Mutable<ILogicalExpression>> assignKeyExprList = new ArrayList<>(); for (IOptimizableFuncExpr optFuncExpr : optFuncExprs) { ComparisonKind ck = AlgebricksBuiltinFunctions.getComparisonType(optFuncExpr.getFuncExpr().getFunctionIdentifier()); ILogicalExpression searchKeyExpr = optFuncExpr.getConstantExpr(0); LogicalVariable var = context.newVar(); assignKeyExprList.add(new MutableObject<>(searchKeyExpr)); assignKeyVarList.add(var); if (ck == ComparisonKind.GE || ck == ComparisonKind.GT) { minFilterVars.add(var); } else if (ck == ComparisonKind.LE || ck == ComparisonKind.LT) { maxFilterVars.add(var); } else if (ck == ComparisonKind.EQ) { minFilterVars.add(var); maxFilterVars.add(var); } } AssignOperator assignOp = new AssignOperator(assignKeyVarList, assignKeyExprList); assignOp.setSourceLocation(sourceLoc); return assignOp; }
} else if (AlgebricksBuiltinFunctions.isComparisonFunction(fi)) { for (Mutable<ILogicalExpression> exprRef : fexp.getArguments()) { if (exprRef.getValue().getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
AbstractFunctionCallExpression f = (AbstractFunctionCallExpression) expr; FunctionIdentifier fi = f.getFunctionIdentifier(); if (AlgebricksBuiltinFunctions.isComparisonFunction(fi)) { boolean b1 = pushFieldLoads(f.getArguments().get(0), topOp, context); boolean b2 = pushFieldLoads(f.getArguments().get(1), topOp, context);
} else if (AlgebricksBuiltinFunctions.isComparisonFunction(fi) || isComparisonFunction(fi)) { for (Mutable<ILogicalExpression> exprRef : fexp.getArguments()) { if (exprRef.getValue().getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
ComparisonKind ck = AlgebricksBuiltinFunctions.getComparisonType(fi); if (ck != ComparisonKind.EQ) { return false;
private LimitType getLimitType(IOptimizableFuncExpr optFuncExpr, OptimizableOperatorSubTree probeSubTree) { ComparisonKind ck = AlgebricksBuiltinFunctions.getComparisonType(optFuncExpr.getFuncExpr().getFunctionIdentifier()); LimitType limit = null; switch (ck) {
ComparisonKind cKind = AlgebricksBuiltinFunctions.getComparisonType(functionID);