|
@@ -1824,6 +1824,14 @@ void ActivityInstance::addAttributeBool(const char * name, bool value)
|
|
|
addGraphAttributeBool(graphNode, name, value);
|
|
|
}
|
|
|
|
|
|
+void ActivityInstance::addAttribute(const char * name, IHqlExpression * expr)
|
|
|
+{
|
|
|
+ StringBuffer temp;
|
|
|
+ IValue * value = expr->queryValue();
|
|
|
+ assertex(value);
|
|
|
+ value->getStringValue(temp);
|
|
|
+ addGraphAttribute(graphNode, name, temp);
|
|
|
+}
|
|
|
|
|
|
void ActivityInstance::addLocationAttribute(IHqlExpression * location)
|
|
|
{
|
|
@@ -5734,15 +5742,15 @@ void dumpActivityCounts()
|
|
|
|
|
|
|
|
|
|
|
|
-bool HqlCppTranslator::buildCode(HqlQueryContext & query, const char * embeddedLibraryName, bool isEmbeddedLibrary)
|
|
|
+bool HqlCppTranslator::buildCode(HqlQueryContext & query, const char * embeddedLibraryName, const char * embeddedGraphName)
|
|
|
{
|
|
|
cycle_t startCycles = get_cycles_now();
|
|
|
WorkflowArray workflow;
|
|
|
- bool ok = prepareToGenerate(query, workflow, isEmbeddedLibrary);
|
|
|
+ bool ok = prepareToGenerate(query, workflow, (embeddedLibraryName != NULL));
|
|
|
if (ok)
|
|
|
{
|
|
|
//This is done late so that pickBestEngine has decided which engine we are definitely targeting.
|
|
|
- if (!isEmbeddedLibrary)
|
|
|
+ if (!embeddedLibraryName)
|
|
|
updateClusterType();
|
|
|
|
|
|
noteFinishedTiming("compile:tree transform", startCycles);
|
|
@@ -5778,7 +5786,7 @@ bool HqlCppTranslator::buildCode(HqlQueryContext & query, const char * embeddedL
|
|
|
}
|
|
|
|
|
|
BuildCtx ctx(*code, goAtom);
|
|
|
- buildLibraryGraph(ctx, graph, embeddedLibraryName);
|
|
|
+ buildLibraryGraph(ctx, graph, embeddedGraphName);
|
|
|
}
|
|
|
else
|
|
|
buildWorkflow(workflow);
|
|
@@ -5829,10 +5837,15 @@ bool HqlCppTranslator::buildCpp(IHqlCppInstance & _code, HqlQueryContext & query
|
|
|
|
|
|
StringBuffer internalLibraryName;
|
|
|
name->queryValue()->getStringValue(internalLibraryName);
|
|
|
+ //Use a graph number that couldn't possibly clash with any graphs generated by the main query
|
|
|
+ StringBuffer embeddedGraphName;
|
|
|
+ embeddedGraphName.append("graph").append(EMBEDDED_GRAPH_DELTA+i+1);
|
|
|
+
|
|
|
overrideOptionsForLibrary();
|
|
|
HqlQueryContext libraryQuery;
|
|
|
libraryQuery.expr.set(definition);
|
|
|
- if (!buildCode(libraryQuery, internalLibraryName.str(), true))
|
|
|
+
|
|
|
+ if (!buildCode(libraryQuery, internalLibraryName.str(), embeddedGraphName.str()))
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -5840,7 +5853,7 @@ bool HqlCppTranslator::buildCpp(IHqlCppInstance & _code, HqlQueryContext & query
|
|
|
overrideOptionsForLibrary();
|
|
|
else
|
|
|
overrideOptionsForQuery();
|
|
|
- if (!buildCode(query, NULL, false))
|
|
|
+ if (!buildCode(query, NULL, NULL))
|
|
|
return false;
|
|
|
|
|
|
//Return early if iteratively generating the field usage statistics
|