public CodegenExpression codegen(CodegenExpression leftStart, CodegenExpression leftEnd, CodegenExpression rightStart, CodegenExpression rightEnd, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { return and(relational(leftStart, LT, rightStart), equalsIdentity(leftEnd, rightEnd)); } }
public CodegenExpression codegen(CodegenExpression leftStart, CodegenExpression leftEnd, CodegenExpression rightStart, CodegenExpression rightEnd, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { return and(relational(rightStart, LT, leftStart), relational(leftEnd, LT, rightEnd)); } }
public CodegenExpression codegen(CodegenExpression leftStart, CodegenExpression leftEnd, CodegenExpression rightStart, CodegenExpression rightEnd, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { return and(relational(leftStart, LT, rightStart), relational(rightEnd, LT, leftEnd)); } }
public CodegenExpression codegen(CodegenExpression leftStart, CodegenExpression leftEnd, CodegenExpression rightStart, CodegenExpression rightEnd, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { return and(equalsIdentity(leftStart, rightStart), relational(leftEnd, LT, rightEnd)); } }
public CodegenExpression codegen(CodegenExpression leftStart, CodegenExpression leftEnd, CodegenExpression rightStart, CodegenExpression rightEnd, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { return and(equalsIdentity(leftStart, rightStart), relational(leftEnd, GT, rightEnd)); } }
public CodegenExpression codegen(CodegenExpression leftStart, CodegenExpression leftEnd, CodegenExpression rightStart, CodegenExpression rightEnd, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { return and(relational(rightStart, LT, leftStart), equalsIdentity(leftEnd, rightEnd)); } }
public CodegenExpression codegen(CodegenExpression leftStart, CodegenExpression leftEnd, CodegenExpression rightStart, CodegenExpression rightEnd, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { return and(equalsIdentity(leftStart, rightStart), equalsIdentity(leftEnd, rightEnd)); }
public CodegenExpression codegen(CodegenExpression leftStart, CodegenExpression leftEnd, CodegenExpression rightStart, CodegenExpression rightEnd, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { return and( relational(leftStart, LT, rightStart), relational(rightStart, LT, leftEnd), relational(leftEnd, LT, rightEnd)); } }
public CodegenExpression codegen(CodegenExpression leftStart, CodegenExpression leftEnd, CodegenExpression rightStart, CodegenExpression rightEnd, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { return and( relational(rightStart, LT, leftStart), relational(leftStart, LT, rightEnd), relational(rightEnd, LT, leftEnd)); } }
public CodegenExpression codegenLong(CodegenExpression inner, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { return and(relational(constant(first), LE, inner), relational(inner, LE, constant(second))); }
protected static CodegenExpression pairNotNull(String name, String get) { return and(notEqualsNull(ref(name)), notEqualsNull(exprDotMethod(ref(name), get))); } }
public CodegenExpression evaluateCodegen(Class requiredType, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { CodegenMethod methodNode = codegenMethodScope.makeChild(EventBean[].class, this.getClass(), codegenClassScope); methodNode.getBlock() .declareVar(Object.class, "result", enumerationForge.evaluateGetROCollectionEventsCodegen(methodNode, exprSymbol, codegenClassScope)) .ifCondition(and(notEqualsNull(ref("result")), instanceOf(ref("result"), Collection.class))) .declareVar(Collection.class, EventBean.class, "events", cast(Collection.class, ref("result"))) .blockReturn(cast(EventBean[].class, exprDotMethod(ref("events"), "toArray", newArrayByLength(EventBean.class, exprDotMethod(ref("events"), "size"))))) .methodReturn(cast(EventBean[].class, ref("result"))); return localMethod(methodNode); }
static void sortPlainCodegenCodegen(OrderByProcessorOrderedLimitForge forge, CodegenMethod method, CodegenClassScope classScope, CodegenNamedMethods namedMethods) { CodegenExpression limit1 = equalsIdentity(exprDotMethod(REF_ROWLIMITPROCESSOR, "getCurrentRowLimit"), constant(1)); CodegenExpression offset0 = equalsIdentity(exprDotMethod(REF_ROWLIMITPROCESSOR, "getCurrentOffset"), constant(0)); CodegenExpression haveOutgoing = and(notEqualsNull(REF_OUTGOINGEVENTS), relational(arrayLength(REF_OUTGOINGEVENTS), GT, constant(1))); CodegenMethod determineLocalMinMax = OrderByProcessorImpl.determineLocalMinMaxCodegen(forge.getOrderByProcessorForge(), classScope, namedMethods); CodegenMethod sortPlain = method.makeChild(EventBean[].class, OrderByProcessorOrderedLimit.class, classScope).addParam(SORTPLAIN_PARAMS); OrderByProcessorImpl.sortPlainCodegen(forge.getOrderByProcessorForge(), sortPlain, classScope, namedMethods); method.getBlock().exprDotMethod(REF_ROWLIMITPROCESSOR, "determineCurrentLimit") .ifCondition(and(limit1, offset0, haveOutgoing)) .declareVar(EventBean.class, "minmax", localMethod(determineLocalMinMax, REF_OUTGOINGEVENTS, REF_GENERATINGEVENTS, REF_ISNEWDATA, REF_EXPREVALCONTEXT, REF_AGGREGATIONSVC)) .blockReturn(newArrayWithInit(EventBean.class, ref("minmax"))) .declareVar(EventBean[].class, "sorted", localMethod(sortPlain, REF_OUTGOINGEVENTS, REF_GENERATINGEVENTS, REF_ISNEWDATA, REF_EXPREVALCONTEXT, REF_AGGREGATIONSVC)) .methodReturn(exprDotMethod(REF_ROWLIMITPROCESSOR, "applyLimit", ref("sorted"))); }
private void generateRSPCall(String rspMethod, CodegenMethod method, CodegenClassScope classScope) { method.getBlock() .declareVar(boolean.class, "isGenerateSynthetic", exprDotMethod(ref("o." + NAME_STATEMENTRESULTSVC), "isMakeSynthetic")) .declareVar(boolean.class, "isGenerateNatural", exprDotMethod(ref("o." + NAME_STATEMENTRESULTSVC), "isMakeNatural")) .declareVar(UniformPair.class, EventBean[].class, "newOldEvents", exprDotMethod(ref(NAME_RESULTSETPROCESSOR), rspMethod, REF_NEWDATA, REF_OLDDATA, ref("isGenerateSynthetic"))) .ifCondition(and(not(ref("isGenerateSynthetic")), not(ref("isGenerateNatural")))).blockReturnNoValue(); } }
public static CodegenExpression codegen(ExprCaseNodeForge forge, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { Class evaluationType = forge.getEvaluationType() == null ? Map.class : forge.getEvaluationType(); CodegenMethod methodNode = codegenMethodScope.makeChild(evaluationType, ExprCaseNodeForgeEvalSyntax1.class, codegenClassScope); CodegenBlock block = methodNode.getBlock().declareVar(Boolean.class, "when", constantFalse()); for (UniformPair<ExprNode> pair : forge.getWhenThenNodeList()) { block.assignRef("when", pair.getFirst().getForge().evaluateCodegen(Boolean.class, methodNode, exprSymbol, codegenClassScope)); block.ifCondition(and(notEqualsNull(ref("when")), ref("when"))) .blockReturn(codegenToType(forge, pair.getSecond(), methodNode, exprSymbol, codegenClassScope)); } if (forge.getOptionalElseExprNode() != null) { block.methodReturn(codegenToType(forge, forge.getOptionalElseExprNode(), methodNode, exprSymbol, codegenClassScope)); } else { block.methodReturn(constantNull()); } return localMethod(methodNode); }
public static void processViewResultCodegen(ResultSetProcessorRowForAllForge forge, CodegenClassScope classScope, CodegenMethod method, CodegenInstanceAux instance) { CodegenMethod selectList = getSelectListEventsAsArrayCodegen(forge, classScope, instance); CodegenExpression selectOld; if (forge.isSelectRStream()) { selectOld = localMethod(selectList, constantFalse(), REF_ISSYNTHESIZE, constantFalse()); } else { selectOld = constantNull(); } method.getBlock() .declareVar(EventBean[].class, "selectOldEvents", selectOld) .declareVar(EventBean[].class, "eventsPerStream", newArrayByLength(EventBean.class, constant(1))) .staticMethod(ResultSetProcessorUtil.class, METHOD_APPLYAGGVIEWRESULT, REF_AGGREGATIONSVC, REF_AGENTINSTANCECONTEXT, REF_NEWDATA, REF_OLDDATA, ref("eventsPerStream")) .declareVar(EventBean[].class, "selectNewEvents", localMethod(selectList, constantTrue(), REF_ISSYNTHESIZE, constantFalse())) .ifCondition(and(equalsNull(ref("selectNewEvents")), equalsNull(ref("selectOldEvents")))) .blockReturn(constantNull()) .methodReturn(newInstance(UniformPair.class, ref("selectNewEvents"), ref("selectOldEvents"))); }
public void processCodegen(CodegenMethod method, CodegenClassScope classScope) { method.getBlock().apply(instblock(classScope, "qOutputProcessNonBufferedJoin", REF_NEWDATA, REF_OLDDATA)); generateRSPCall("processJoinResult", method, classScope); method.getBlock().ifRefNull("newOldEvents") .apply(instblock(classScope, "aOutputProcessNonBufferedJoin")) .blockReturnNoValue(); if (postProcess != null) { method.getBlock().expression(localMethod(postProcess.postProcessCodegenMayNullMayForce(classScope, method), constantFalse(), ref("newOldEvents"))); } else { CodegenBlock ifPairHasData = method.getBlock().ifCondition(or(notEqualsNull(exprDotMethod(ref("newOldEvents"), "getFirst")), notEqualsNull(exprDotMethod(ref("newOldEvents"), "getSecond")))); ifPairHasData.exprDotMethod(REF_CHILD, "newResult", ref("newOldEvents")) .ifElseIf(and(equalsNull(ref("newData")), equalsNull(ref("oldData")))) .exprDotMethod(REF_CHILD, "newResult", ref("newOldEvents")); } method.getBlock().apply(instblock(classScope, "aOutputProcessNonBufferedJoin")); }
public static void applyJoinResultCodegen(ResultSetProcessorRowPerGroupForge forge, CodegenClassScope classScope, CodegenMethod method, CodegenInstanceAux instance) { CodegenMethod generateGroupKeySingle = generateGroupKeySingleCodegen(forge.getGroupKeyNodeExpressions(), classScope, instance); method.getBlock() .ifCondition(not(exprDotMethod(REF_NEWDATA, "isEmpty"))) .forEach(MultiKey.class, "aNewEvent", REF_NEWDATA) .declareVar(EventBean[].class, "eventsPerStream", cast(EventBean[].class, exprDotMethod(ref("aNewEvent"), "getArray"))) .declareVar(Object.class, "mk", localMethod(generateGroupKeySingle, ref("eventsPerStream"), constantTrue())) .exprDotMethod(REF_AGGREGATIONSVC, "applyEnter", ref("eventsPerStream"), ref("mk"), REF_AGENTINSTANCECONTEXT) .blockEnd() .blockEnd() .ifCondition(and(notEqualsNull(REF_OLDDATA), not(exprDotMethod(REF_OLDDATA, "isEmpty")))) .forEach(MultiKey.class, "anOldEvent", REF_OLDDATA) .declareVar(EventBean[].class, "eventsPerStream", cast(EventBean[].class, exprDotMethod(ref("anOldEvent"), "getArray"))) .declareVar(Object.class, "mk", localMethod(generateGroupKeySingle, ref("eventsPerStream"), constantFalse())) .exprDotMethod(REF_AGGREGATIONSVC, "applyLeave", ref("eventsPerStream"), ref("mk"), REF_AGENTINSTANCECONTEXT) .blockEnd() .blockEnd(); }
public static void applyJoinResultCodegen(ResultSetProcessorAggregateGroupedForge forge, CodegenClassScope classScope, CodegenMethod method, CodegenInstanceAux instance) { CodegenMethod generateGroupKeySingle = generateGroupKeySingleCodegen(forge.getGroupKeyNodeExpressions(), classScope, instance); method.getBlock() .ifCondition(not(exprDotMethod(REF_NEWDATA, "isEmpty"))) .forEach(MultiKey.class, "aNewEvent", REF_NEWDATA) .declareVar(EventBean[].class, "eventsPerStream", cast(EventBean[].class, exprDotMethod(ref("aNewEvent"), "getArray"))) .declareVar(Object.class, "mk", localMethod(generateGroupKeySingle, ref("eventsPerStream"), constantTrue())) .exprDotMethod(REF_AGGREGATIONSVC, "applyEnter", ref("eventsPerStream"), ref("mk"), REF_AGENTINSTANCECONTEXT) .blockEnd() .blockEnd() .ifCondition(and(notEqualsNull(REF_OLDDATA), not(exprDotMethod(REF_OLDDATA, "isEmpty")))) .forEach(MultiKey.class, "anOldEvent", REF_OLDDATA) .declareVar(EventBean[].class, "eventsPerStream", cast(EventBean[].class, exprDotMethod(ref("anOldEvent"), "getArray"))) .declareVar(Object.class, "mk", localMethod(generateGroupKeySingle, ref("eventsPerStream"), constantFalse())) .exprDotMethod(REF_AGGREGATIONSVC, "applyLeave", ref("eventsPerStream"), ref("mk"), REF_AGENTINSTANCECONTEXT) .blockEnd() .blockEnd(); }
public static void processViewResultCodegen(ResultSetProcessorAggregateGroupedForge forge, CodegenClassScope classScope, CodegenMethod method, CodegenInstanceAux instance) { CodegenMethod generateGroupKeyArrayView = generateGroupKeyArrayViewCodegen(forge.getGroupKeyNodeExpressions(), classScope, instance); CodegenMethod generateOutputEventsView = generateOutputEventsViewCodegen(forge, classScope, instance); CodegenMethod processViewResultNewDepthOne = processViewResultNewDepthOneCodegen(forge, classScope, instance); CodegenMethod processViewResultPairDepthOneNoRStream = processViewResultPairDepthOneCodegen(forge, classScope, instance); CodegenBlock ifShortcut = method.getBlock().ifCondition(and(notEqualsNull(REF_NEWDATA), equalsIdentity(arrayLength(REF_NEWDATA), constant(1)))); ifShortcut.ifCondition(or(equalsNull(REF_OLDDATA), equalsIdentity(arrayLength(REF_OLDDATA), constant(0)))) .blockReturn(localMethod(processViewResultNewDepthOne, REF_NEWDATA, REF_ISSYNTHESIZE)) .ifCondition(equalsIdentity(arrayLength(REF_OLDDATA), constant(1))) .blockReturn(localMethod(processViewResultPairDepthOneNoRStream, REF_NEWDATA, REF_OLDDATA, REF_ISSYNTHESIZE)); method.getBlock().declareVar(Object[].class, "newDataGroupByKeys", localMethod(generateGroupKeyArrayView, REF_NEWDATA, constantTrue())) .declareVar(Object[].class, "oldDataGroupByKeys", localMethod(generateGroupKeyArrayView, REF_OLDDATA, constantFalse())) .declareVar(EventBean[].class, "eventsPerStream", newArrayByLength(EventBean.class, constant(1))) .staticMethod(ResultSetProcessorGroupedUtil.class, METHOD_APPLYAGGVIEWRESULTKEYEDVIEW, REF_AGGREGATIONSVC, REF_AGENTINSTANCECONTEXT, REF_NEWDATA, ref("newDataGroupByKeys"), REF_OLDDATA, ref("oldDataGroupByKeys"), ref("eventsPerStream")); method.getBlock().declareVar(EventBean[].class, "selectOldEvents", forge.isSelectRStream() ? localMethod(generateOutputEventsView, REF_OLDDATA, ref("oldDataGroupByKeys"), constantFalse(), REF_ISSYNTHESIZE, ref("eventsPerStream")) : constantNull()) .declareVar(EventBean[].class, "selectNewEvents", localMethod(generateOutputEventsView, REF_NEWDATA, ref("newDataGroupByKeys"), constantTrue(), REF_ISSYNTHESIZE, ref("eventsPerStream"))) .methodReturn(staticMethod(ResultSetProcessorUtil.class, METHOD_TOPAIRNULLIFALLNULL, ref("selectNewEvents"), ref("selectOldEvents"))); }