public CodegenExpression underlyingExistsCodegen(CodegenExpression underlyingExpression, CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope) { return constantFalse(); }
public CodegenExpression evaluateCodegenUninstrumented(Class requiredType, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { if (isAlwaysFalse) { return constantFalse(); } return ExprBetweenNodeForgeEval.codegen(this, codegenMethodScope, exprSymbol, codegenClassScope); }
public CodegenExpression iteratorCodegen() { return newInstance(AggregationStateSortedIterator.class, sorted, constantFalse()); }
public void isGroupedCodegen(CodegenMethod method, CodegenClassScope classScope) { method.getBlock().methodReturn(constantFalse()); }
public void isGroupedCodegen(CodegenMethod method, CodegenClassScope classScope) { method.getBlock().methodReturn(constantFalse()); }
public void clearCodegen(CodegenMethod method, CodegenClassScope classScope) { method.getBlock().assignRef(leaving, constantFalse()); }
protected void clearWODistinct(CodegenMethod method, CodegenClassScope classScope) { method.getBlock().assignRef(firstValue, constantNull()) .assignRef(isSet, constantFalse()); }
public void applyLeaveCodegen(CodegenMethod method, CodegenClassScope classScope, CodegenNamedMethods namedMethods, AggregationClassNames classNames) { method.getBlock().apply(instblock(classScope, "qAggregationGroupedApplyEnterLeave", constantFalse(), constant(-1), constant(-1), REF_GROUPKEY)); applyCodegen(false, method, classScope, namedMethods, classNames); method.getBlock().apply(instblock(classScope, "aAggregationGroupedApplyEnterLeave", constantFalse())); }
public void applyLeaveCodegen(CodegenMethod method, CodegenClassScope classScope, CodegenNamedMethods namedMethods, AggregationClassNames classNames) { method.getBlock() .apply(instblock(classScope, "qAggregationUngroupedApplyEnterLeave", constantFalse(), constant(rowStateDesc.getNumMethods()), constant(rowStateDesc.getNumAccess()))) .exprDotMethod(REF_ROW, "applyLeave", REF_EPS, REF_EXPREVALCONTEXT) .apply(instblock(classScope, "aAggregationUngroupedApplyEnterLeave", constantFalse())); }
public CodegenExpression evaluateMatchesCodegen(CodegenMethodScope parent, ExprSubselectEvalMatchSymbol symbols, CodegenClassScope classScope) { CodegenMethod method = parent.makeChild(boolean.class, this.getClass(), classScope); CodegenExpression aggService = classScope.getPackageScope().addOrGetFieldWellKnown(new CodegenFieldNameSubqueryAgg(subselect.getSubselectNumber()), AggregationResultFuture.class); method.getBlock().applyTri(new SubselectForgeCodegenUtil.ReturnIfNoMatch(constantFalse(), constantFalse()), method, symbols); method.getBlock().methodReturn(not(exprDotMethodChain(aggService).add("getGroupKeys", symbols.getAddExprEvalCtx(method)).add("isEmpty"))); return localMethod(method); } }
public CodegenExpression evaluateMatchesCodegen(CodegenMethodScope parent, ExprSubselectEvalMatchSymbol symbols, CodegenClassScope classScope) { CodegenMethod method = parent.makeChild(boolean.class, this.getClass(), classScope); CodegenMethod havingMethod = CodegenLegoMethodExpression.codegenExpression(havingEval, method, classScope); CodegenExpression having = localMethod(havingMethod, REF_EVENTS_SHIFTED, symbols.getAddIsNewData(method), symbols.getAddExprEvalCtx(method)); method.getBlock().applyTri(DECLARE_EVENTS_SHIFTED, method, symbols); CodegenLegoBooleanExpression.codegenReturnValueIfNullOrNotPass(method.getBlock(), Boolean.class, having, constantFalse()); method.getBlock().methodReturn(constantTrue()); return localMethod(method); } }
private CodegenMethod isExistsPropertyCodegen(CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope) { CodegenBlock block = codegenMethodScope.makeChild(boolean.class, this.getClass(), codegenClassScope).addParam(Map.class, "map").getBlock() .declareVar(Object.class, "value", exprDotMethod(ref("map"), "get", constant(propertyMap))) .ifRefNullReturnFalse("value") .ifRefNotTypeReturnConst("value", Map.class, false); if (nestedGetter instanceof MapEventPropertyGetter) { return block.methodReturn(((MapEventPropertyGetter) nestedGetter).underlyingExistsCodegen(cast(Map.class, ref("value")), codegenMethodScope, codegenClassScope)); } return block.methodReturn(constantFalse()); }
private CodegenExpression cacheAndExistsCodegen(CodegenExpression underlyingExpression, CodegenMethodScope parent, CodegenClassScope codegenClassScope) { CodegenExpression memberCache = codegenClassScope.addOrGetFieldSharable(sharableCode); CodegenMethod method = parent.makeChild(boolean.class, DynamicPropertyGetterBase.class, codegenClassScope).addParam(Object.class, "object"); method.getBlock() .declareVar(DynamicPropertyDescriptor.class, "desc", getPopulateCacheCodegen(memberCache, ref("object"), method, codegenClassScope)) .ifCondition(equalsNull(exprDotMethod(ref("desc"), "getMethod"))).blockReturn(constantFalse()) .methodReturn(constant(true)); return localMethod(method, underlyingExpression); }
private static CodegenMethod obtainIteratorCodegen(ResultSetProcessorRowForAllForge forge, CodegenClassScope classScope, CodegenMethod parent, CodegenInstanceAux instance) { CodegenMethod selectList = getSelectListEventsAsArrayCodegen(forge, classScope, instance); CodegenMethod method = parent.makeChild(Iterator.class, ResultSetProcessorRowForAllImpl.class, classScope); method.getBlock().declareVar(EventBean[].class, "events", localMethod(selectList, constantTrue(), constantTrue(), constantFalse())) .ifRefNull("events") .blockReturn(enumValue(CollectionUtil.class, "NULL_EVENT_ITERATOR")) .methodReturn(newInstance(SingleEventIterator.class, arrayAtIndex(ref("events"), constant(0)))); return method; }
public static void processJoinResultCodegen(ResultSetProcessorAggregateGroupedForge forge, CodegenClassScope classScope, CodegenMethod method, CodegenInstanceAux instance) { CodegenMethod generateGroupKeyArrayJoin = generateGroupKeyArrayJoinCodegen(forge.getGroupKeyNodeExpressions(), classScope, instance); CodegenMethod generateOutputEventsJoin = generateOutputEventsJoinCodegen(forge, classScope, instance); method.getBlock().declareVar(Object[].class, "newDataGroupByKeys", localMethod(generateGroupKeyArrayJoin, REF_NEWDATA, constantTrue())) .declareVar(Object[].class, "oldDataGroupByKeys", localMethod(generateGroupKeyArrayJoin, REF_OLDDATA, constantFalse())); if (forge.isUnidirectional()) { method.getBlock().exprDotMethod(ref("this"), "clear"); } method.getBlock().staticMethod(ResultSetProcessorGroupedUtil.class, METHOD_APPLYAGGJOINRESULTKEYEDJOIN, REF_AGGREGATIONSVC, REF_AGENTINSTANCECONTEXT, REF_NEWDATA, ref("newDataGroupByKeys"), REF_OLDDATA, ref("oldDataGroupByKeys")); method.getBlock().declareVar(EventBean[].class, "selectOldEvents", forge.isSelectRStream() ? localMethod(generateOutputEventsJoin, REF_OLDDATA, ref("oldDataGroupByKeys"), constantFalse(), REF_ISSYNTHESIZE) : constantNull()) .declareVar(EventBean[].class, "selectNewEvents", localMethod(generateOutputEventsJoin, REF_NEWDATA, ref("newDataGroupByKeys"), constantTrue(), REF_ISSYNTHESIZE)) .methodReturn(staticMethod(ResultSetProcessorUtil.class, METHOD_TOPAIRNULLIFALLNULL, ref("selectNewEvents"), ref("selectOldEvents"))); }
public static void processJoinResultCodegen(ResultSetProcessorRowPerGroupForge forge, CodegenClassScope classScope, CodegenMethod method, CodegenInstanceAux instance) { CodegenMethod generateGroupKeyArrayJoin = generateGroupKeyArrayJoinTakingMapCodegen(forge, classScope, instance); CodegenMethod generateOutputEventsJoin = generateOutputEventsJoinCodegen(forge, classScope, instance); method.getBlock().declareVar(Map.class, "keysAndEvents", newInstance(HashMap.class)) .declareVar(Object[].class, "newDataMultiKey", localMethod(generateGroupKeyArrayJoin, REF_NEWDATA, ref("keysAndEvents"), constantTrue())) .declareVar(Object[].class, "oldDataMultiKey", localMethod(generateGroupKeyArrayJoin, REF_OLDDATA, ref("keysAndEvents"), constantFalse())); if (forge.isUnidirectional()) { method.getBlock().exprDotMethod(ref("this"), "clear"); } method.getBlock().declareVar(EventBean[].class, "selectOldEvents", forge.isSelectRStream() ? localMethod(generateOutputEventsJoin, ref("keysAndEvents"), constantFalse(), REF_ISSYNTHESIZE) : constantNull()) .staticMethod(ResultSetProcessorGroupedUtil.class, METHOD_APPLYAGGJOINRESULTKEYEDJOIN, REF_AGGREGATIONSVC, REF_AGENTINSTANCECONTEXT, REF_NEWDATA, ref("newDataMultiKey"), REF_OLDDATA, ref("oldDataMultiKey")) .declareVar(EventBean[].class, "selectNewEvents", localMethod(generateOutputEventsJoin, ref("keysAndEvents"), constantTrue(), REF_ISSYNTHESIZE)) .methodReturn(staticMethod(ResultSetProcessorUtil.class, METHOD_TOPAIRNULLIFALLNULL, ref("selectNewEvents"), ref("selectOldEvents"))); }
static void processViewResultCodegen(ResultSetProcessorRowPerGroupRollupForge forge, CodegenClassScope classScope, CodegenMethod method, CodegenInstanceAux instance) { addEventPerGroupBufCodegen(NAME_EVENTPERGROUPBUFVIEW, forge, instance, method, classScope); CodegenMethod resetEventPerGroupBufView = resetEventPerGroupBufCodegen(NAME_EVENTPERGROUPBUFVIEW, classScope, instance); CodegenMethod generateGroupKeysView = generateGroupKeysViewCodegen(forge, classScope, instance); CodegenMethod generateOutputEventsView = generateOutputEventsViewCodegen(forge, classScope, instance); method.getBlock().localMethod(resetEventPerGroupBufView) .declareVar(Object[][].class, "newDataMultiKey", localMethod(generateGroupKeysView, REF_NEWDATA, ref(NAME_EVENTPERGROUPBUFVIEW), constantTrue())) .declareVar(Object[][].class, "oldDataMultiKey", localMethod(generateGroupKeysView, REF_OLDDATA, ref(NAME_EVENTPERGROUPBUFVIEW), constantFalse())) .declareVar(EventBean[].class, "selectOldEvents", forge.isSelectRStream() ? localMethod(generateOutputEventsView, ref(NAME_EVENTPERGROUPBUFVIEW), constantFalse(), REF_ISSYNTHESIZE) : constantNull()) .declareVar(EventBean[].class, "eventsPerStream", newArrayByLength(EventBean.class, constant(1))) .staticMethod(ResultSetProcessorGroupedUtil.class, METHOD_APPLYAGGVIEWRESULTKEYEDVIEW, REF_AGGREGATIONSVC, REF_AGENTINSTANCECONTEXT, REF_NEWDATA, ref("newDataMultiKey"), REF_OLDDATA, ref("oldDataMultiKey"), ref("eventsPerStream")) .declareVar(EventBean[].class, "selectNewEvents", localMethod(generateOutputEventsView, ref(NAME_EVENTPERGROUPBUFVIEW), constantTrue(), REF_ISSYNTHESIZE)) .methodReturn(staticMethod(ResultSetProcessorUtil.class, METHOD_TOPAIRNULLIFALLNULL, ref("selectNewEvents"), ref("selectOldEvents"))); }
private CodegenMethod handleRemovedKeysCodegen(CodegenMethod scope, CodegenClassScope classScope) { CodegenMethod method = scope.makeChild(void.class, this.getClass(), classScope); method.getBlock().ifCondition(not(REF_HASREMOVEDKEY)) .blockReturnNoValue() .assignRef(REF_HASREMOVEDKEY, constantFalse()) .forLoopIntSimple("i", arrayLength(REF_REMOVEDKEYS)) .ifCondition(exprDotMethod(arrayAtIndex(REF_REMOVEDKEYS, ref("i")), "isEmpty")) .blockContinue() .forEach(Object.class, "removedKey", arrayAtIndex(REF_REMOVEDKEYS, ref("i"))) .exprDotMethod(arrayAtIndex(REF_AGGREGATORSPERGROUP, ref("i")), "remove", ref("removedKey")) .blockEnd() .exprDotMethod(arrayAtIndex(REF_REMOVEDKEYS, ref("i")), "clear"); return method; } }
static void applyViewResultUnboundCodegen(ResultSetProcessorRowPerGroupRollupForge forge, CodegenClassScope classScope, CodegenMethod method, CodegenInstanceAux instance) { CodegenMethod generateGroupKeysView = generateGroupKeysViewCodegen(forge, classScope, instance); method.getBlock() .declareVar(Object[][].class, "newDataMultiKey", localMethod(generateGroupKeysView, REF_NEWDATA, exprDotMethod(ref(NAME_UNBOUNDHELPER), "getBuffer"), constantTrue())) .declareVar(Object[][].class, "oldDataMultiKey", localMethod(generateGroupKeysView, REF_OLDDATA, exprDotMethod(ref(NAME_UNBOUNDHELPER), "getBuffer"), constantFalse())) .declareVar(EventBean[].class, "eventsPerStream", newArrayByLength(EventBean.class, constant(1))) .staticMethod(ResultSetProcessorGroupedUtil.class, METHOD_APPLYAGGVIEWRESULTKEYEDVIEW, REF_AGGREGATIONSVC, REF_AGENTINSTANCECONTEXT, REF_NEWDATA, ref("newDataMultiKey"), REF_OLDDATA, ref("oldDataMultiKey"), ref("eventsPerStream")); }
public static CodegenExpression codegen(EnumAnyOfEventsForge forge, EnumForgeCodegenParams args, CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope) { ExprForgeCodegenSymbol scope = new ExprForgeCodegenSymbol(false, null); CodegenMethod methodNode = codegenMethodScope.makeChildWithScope(boolean.class, EnumAnyOfEventsForgeEval.class, scope, codegenClassScope).addParam(EnumForgeCodegenNames.PARAMS); CodegenBlock block = methodNode.getBlock() .ifConditionReturnConst(exprDotMethod(EnumForgeCodegenNames.REF_ENUMCOLL, "isEmpty"), false); CodegenBlock forEach = block.forEach(EventBean.class, "next", EnumForgeCodegenNames.REF_ENUMCOLL) .assignArrayElement(EnumForgeCodegenNames.REF_EPS, constant(forge.streamNumLambda), ref("next")); CodegenLegoBooleanExpression.codegenReturnBoolIfNullOrBool(forEach, forge.innerExpression.getEvaluationType(), forge.innerExpression.evaluateCodegen(Boolean.class, methodNode, scope, codegenClassScope), false, null, true, true); block.methodReturn(constantFalse()); return localMethod(methodNode, args.getEps(), args.getEnumcoll(), args.getIsNewData(), args.getExprCtx()); } }