/** * Whether the expression contains a missing filtering * * @param expr * @return true if the expression contains a missing filtering function call; false otherwise. */ private boolean containsMissingFiltering(ILogicalExpression expr) { if (expr.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) { return false; } ScalarFunctionCallExpression func = (ScalarFunctionCallExpression) expr; if (func.getFunctionIdentifier() == AlgebricksBuiltinFunctions.AND) { for (Mutable<ILogicalExpression> argumentRef : func.getArguments()) { if (containsMissingFiltering(argumentRef.getValue())) { return true; } } return false; } if (func.getFunctionIdentifier() != AlgebricksBuiltinFunctions.IS_MISSING) { return false; } return true; } }
if (func.getFunctionIdentifier() == AlgebricksBuiltinFunctions.AND) { for (Mutable<ILogicalExpression> argumentRef : func.getArguments()) { if (containsNotMissingFiltering(argumentRef.getValue())) { if (func.getFunctionIdentifier() != AlgebricksBuiltinFunctions.NOT) { return false; if (func2.getFunctionIdentifier() != AlgebricksBuiltinFunctions.IS_MISSING) { return false;
ScalarFunctionCallExpression funcExpr = (ScalarFunctionCallExpression) assignOp.getExpressions() .get(expectedRecordIndex).getValue(); fid = funcExpr.getFunctionIdentifier();
if (FUNC_ID_SET_THAT_SHOULD_NOT_BE_APPLIED.contains(expr.getFunctionIdentifier())) { return new Pair<>(false, null); if (expr.getFunctionIdentifier().equals(BuiltinFunctions.UNORDERED_LIST_CONSTRUCTOR) || expr.getFunctionIdentifier().equals(BuiltinFunctions.ORDERED_LIST_CONSTRUCTOR)) { AbstractCollectionType listType = (AbstractCollectionType) TypeCastUtils.getRequiredType(expr); if (listType != null && (listType.getItemType().getTypeTag() == ATypeTag.ANY if (expr.getFunctionIdentifier().equals(BuiltinFunctions.FIELD_ACCESS_BY_NAME)) { ARecordType rt = (ARecordType) _emptyTypeEnv.getType(expr.getArguments().get(0).getValue()); String str = ConstantExpressionUtil.getStringConstant(expr.getArguments().get(1).getValue()); IAObject c = FUNC_ID_TO_CONSTANT.get(expr.getFunctionIdentifier()); if (c != null) { return new Pair<>(true, new ConstantExpression(new AsterixConstantValue(c)));