void CColumnInfo::buildDeserializeChildLoop(HqlCppTranslator & translator, BuildCtx & loopctx, IReferenceSelector * selector, IHqlExpression * helper, IAtom * serializeForm) { OwnedHqlExpr endMarker = loopctx.getTempDeclare(sizetType, NULL); HqlExprArray args; args.append(*LINK(helper)); OwnedHqlExpr beginCall = translator.bindTranslatedFunctionCall(deserializerBeginNestedId, args); loopctx.addAssign(endMarker, beginCall); args.append(*LINK(helper)); args.append(*LINK(endMarker)); OwnedHqlExpr loopCall = createBoolExpr(no_not, translator.bindTranslatedFunctionCall(deserializerFinishedNestedId, args)); loopctx.addLoop(loopCall, NULL, false); }
IHqlExpression * addFilter(IHqlExpression * dataset, IHqlExpression * limitField) { IHqlExpression * lower = createConstant(limitField->queryType()->castFrom(true, (__int64)0)); lower = createValue(no_colon, lower, createValue(no_stored, createConstant(LOWER_LIMIT_ID))); lower = createSymbol(createIdentifierAtom(LOWER_LIMIT_ID), lower, ob_private); dataset = createDataset(no_filter, LINK(dataset), createBoolExpr(no_ge, LINK(limitField), lower)); IHqlExpression * upper = createConstant((int)DISKREAD_PAGE_SIZE); upper = createValue(no_colon, upper, createValue(no_stored, createConstant(RECORD_LIMIT_ID))); upper = createSymbol(createIdentifierAtom(RECORD_LIMIT_ID), upper, ob_private); dataset = createDataset(no_choosen, dataset, upper); dataset = createSymbol(createIdentifierAtom("_Filtered_"), dataset, ob_private); return dataset; }