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(createIdAtom(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(createIdAtom(RECORD_LIMIT_ID), upper, ob_private); dataset = createDataset(no_choosen, dataset, upper); dataset = createSymbol(createIdAtom("_Filtered_"), dataset, ob_private); return dataset; }
IHqlExpression * buildWorkUnitViewerEcl(IHqlExpression * record, const char * wuid, unsigned sequence, const char * name) { OwnedHqlExpr newRecord = createSymbol(createIdAtom("_SourceRecord_"), LINK(record), ob_private); IHqlExpression * arg = name ? createConstant(name) : createConstant((int)sequence); OwnedHqlExpr dataset = createDataset(no_workunit_dataset, newRecord.getLink(), createComma(createConstant(wuid), arg)); OwnedHqlExpr projected = addSimplifyProject(dataset); OwnedHqlExpr output = addOutput(projected); return output.getClear(); }
IHqlExpression * addSimplifyProject(IHqlExpression * dataset) { IHqlExpression * record = dataset->queryRecord(); IHqlExpression * projectRecord = getFileViewerRecord(record, false); if (!projectRecord) return LINK(dataset); projectRecord = createSymbol(createIdAtom("_TargetRecord_"), projectRecord, ob_private); return createDataset(no_newusertable, LINK(dataset), createComma(projectRecord, getSimplifiedTransform(projectRecord, record, dataset))); }
IHqlExpression * buildDiskFileViewerEcl(const char * logicalName, IHqlExpression * record) { //Add filepos to the incomming record structure... IHqlExpression * filePosAttr = createAttribute(virtualAtom, createAttribute(filepositionAtom)); OwnedHqlExpr filepos = createField(fileposId, makeIntType(8, false), NULL, filePosAttr); IHqlExpression * sizeofAttr = createAttribute(virtualAtom, createAttribute(sizeofAtom)); OwnedHqlExpr reclen = createField(recordlenName, makeIntType(2, false), NULL, sizeofAttr); HqlExprArray fields; unwindChildren(fields, record); fields.append(*filepos.getLink()); fields.append(*reclen.getLink()); OwnedHqlExpr newRecord = createRecord(fields); newRecord.setown(createSymbol(createIdAtom("_SourceRecord_"), newRecord.getLink(), ob_private)); OwnedHqlExpr dataset = createNewDataset(createConstant(logicalName), newRecord.getLink(), createValue(no_thor), NULL, NULL, NULL); OwnedHqlExpr filtered = addFilter(dataset, filepos); OwnedHqlExpr projected = addSimplifyProject(filtered); OwnedHqlExpr output = addOutput(projected); return output.getClear(); }
IIdAtom * xmlEncodeUStrId; //=========================================================================== //MORE: Need to change many MAKEATOM to MAKEID in this file, and most of the explicit calls should be removed/changed #define MAKEID(x) x##Id = createIdAtom(#x) #define MAKEATOM(x) x##Atom = createLowerCaseAtom(#x) #define MAKESYSATOM(x) _##x##_Atom = createLowerCaseAtom("$_" #x "_") MODULE_INIT(INIT_PRIORITY_HQLATOM-1) { MAKEID(clibExp); MAKEID(_fail); acosId = createIdAtom("_acos"); MAKEID(addAggregateRow); MAKEID(addAll); MAKEID(addRange); MAKEID(addWorkunitAssertFailure); MAKEID(an2b); MAKEID(an2f); MAKEID(an2l4); MAKEID(an2l8); MAKEID(an2ls4); MAKEID(an2ls8); MAKEID(appendRowsToRowset); MAKEID(appendSetX); MAKEID(ascii2ebcdic); asinId = createIdAtom("_asin"); atan2Id = createIdAtom("_atan2");
extractor.addRootReference(mappedDefault); } } extractor.extractWebServiceInfo(); StringPairArray results; extractor.getResults(results); ForEachItemIn(i, results) { StringPairItem & cur = results.item(i); webServicesInfo->setInfo(cur.first, cur.second); } //Names are currently stored case insensitively, we want the case sensitive variant. OwnedHqlExpr s1 = ctx.queryRepository()->queryRootScope()->lookupSymbol(createIdAtom(moduleName.str()), LSFpublic, ctx); if (s1 && s1->queryScope()) { const char *caseSensitiveModuleName = s1->queryScope()->queryFullName(); webServicesInfo->setModuleName(caseSensitiveModuleName); } unsigned version = extractor.getVersion(); webServicesInfo->setWebServicesCRC(version); // const char *caseSensitiveAttrName = attrCache->queryProp("Module/Attribute/@name"); // if (caseSensitiveAttrName) // webServicesInfo->setAttributeName(caseSensitiveAttrName); return true; }