소스 검색

Merge pull request #5421 from ghalliday/issue10876

HPCC-10876 Fix various issues highlighted by coverity scan

Reviewed-By: Jamie Noss <james.noss@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 11 년 전
부모
커밋
c2ae818786

+ 3 - 5
ecl/hql/hqlexpr.cpp

@@ -4691,7 +4691,7 @@ bool CHqlNamedExpression::equals(const IHqlExpression & r) const
 void CHqlNamedExpression::sethash()
 {
     CHqlExpression::sethash();
-    hashcode = HASHFIELD(id);
+    HASHFIELD(id);
 }
 
 IHqlExpression *createNamedValue(node_operator op, ITypeInfo *type, IIdAtom * id, HqlExprArray & args)
@@ -10037,8 +10037,6 @@ CHqlAlienType::CHqlAlienType(IIdAtom * _id, IHqlScope *_scope, IHqlExpression *
     scope = _scope;
     funcdef = _funcdef;
 
-    if (!scope)
-        return;
     if (!funcdef)
         funcdef = this;
 
@@ -10189,11 +10187,13 @@ size32_t CHqlAlienType::getSize()
 /* in parm _scope: linked */
 extern IHqlExpression *createAlienType(IIdAtom * _id, IHqlScope *_scope)
 {
+    assertex(_scope);
     return new CHqlAlienType(_id, _scope, NULL);
 }
 
 extern IHqlExpression *createAlienType(IIdAtom * id, IHqlScope * scope, HqlExprArray &newkids, IHqlExpression * funcdef)
 {
+    assertex(scope);
 //  assertex(!funcdef);     // I'm not sure what value this has...
     IHqlExpression * ret = new CHqlAlienType(id, scope, funcdef);
     ForEachItemIn(idx2, newkids)
@@ -12141,7 +12141,6 @@ IHqlExpression * ensureDataset(IHqlExpression * expr)
         return createDatasetFromRow(LINK(expr));
 
     throwUnexpected();
-    return createNullDataset();
 }
 
 
@@ -13750,7 +13749,6 @@ static bool removeVirtualAttributes(HqlExprArray & fields, IHqlExpression * cur,
                             break;
                         case type_record:
                             throwUnexpected();
-                            targetType.set(newRecord->queryType());
                             break;
                         }
                     }

+ 2 - 3
ecl/hql/hqlfold.cpp

@@ -1903,9 +1903,8 @@ IHqlExpression * foldConstantOperator(IHqlExpression * expr, unsigned foldOption
         {
             IValue * t0 = expr->queryChild(0)->queryValue();
             IValue * t1 = expr->queryChild(1)->queryValue();
-            IHqlExpression * c2 = queryRealChild(expr, 2);
-            IValue * t2 = c2 ? c2->queryValue() : NULL;
-            if (t0 && t1 && (!c2 || t2))
+            IValue * t2 = expr->queryChild(2)->queryValue();
+            if (t0 && t1 && t2)
             {
                 IValue * result;
                 if(isUnicodeType(t0->queryType()))

+ 0 - 5
ecl/hql/hqlgram.hpp

@@ -358,7 +358,6 @@ public:
     bool hasAnyActiveParameters();
 public:
     CIArrayOf<ActiveScopeInfo> defineScopes;
-    IEclRepository *dataServer;
     HqlScopeArray defaultScopes;
     Owned<IHqlScope> globalScope;
     Linked<ISourcePath> sourcePath;
@@ -842,7 +841,6 @@ protected:
     IIdAtom * moduleName;
     IIdAtom * current_id;
     IIdAtom * expectedAttribute;
-    int current_flags;
     IHqlScope *transformScope;
     PointerArray savedIds;
     UnsignedArray savedLastpos;
@@ -865,8 +863,6 @@ protected:
     CIArrayOf<ActiveScopeInfo> defineScopes;
     OwnedHqlExpr curList;
     BoolArray wasInEvaluate;
-    HqlExprAttr curDatabase;
-    unsigned curDatabaseCount;
     HqlExprCopyArray activeRecords;
     HqlExprArray activeIfBlocks;
     HqlLex *lexObject;
@@ -877,7 +873,6 @@ protected:
     ITypeInfo * uint4Type;
     ITypeInfo * defaultRealType;
     ITypeInfo * boolType;
-    IEclRepository *dataServer;
     HqlScopeArray defaultScopes;
     PointerArray savedType;
     HqlExprAttr curFeatureParams;

+ 12 - 11
ecl/hql/hqlgram2.cpp

@@ -286,6 +286,8 @@ HqlGram::HqlGram(IHqlScope * _globalScope, IHqlScope * _containerScope, IFileCon
     sourcePath.set(_text->querySourcePath());
     moduleName = _containerScope->queryId();
     forceResult = false;
+    parsingTemplateAttribute = false;
+
     lexObject = new HqlLex(this, _text, xmlScope, NULL);
 
     if(lookupCtx.queryRepository() && loadImplicit && legacyImportSemantics)
@@ -319,6 +321,7 @@ HqlGram::HqlGram(HqlGramCtx & parent, IHqlScope * _containerScope, IFileContents
     //Clone parseScope
     lexObject = new HqlLex(this, _text, xmlScope, NULL);
     forceResult = true;
+    parsingTemplateAttribute = false;
     parseConstantText = _parseConstantText;
 }
 
@@ -1242,8 +1245,7 @@ IHqlExpression * HqlGram::findAssignment(IHqlExpression *field)
     if (match && !match->isAttribute())
         return match;
     return NULL;
-#endif
-
+#else
     unsigned kids = curTransform->numChildren();
     for (unsigned idx = 0; idx < kids; idx++)
     {
@@ -1254,6 +1256,7 @@ IHqlExpression * HqlGram::findAssignment(IHqlExpression *field)
     }
 
     return NULL;
+#endif
 }
 
 IHqlExpression * HqlGram::doFindAssignment(IHqlExpression* in, IHqlExpression* field)
@@ -1677,8 +1680,9 @@ bool HqlGram::haveAssignedToChildren(IHqlExpression * select)
 {
 #ifdef FAST_FIND_FIELD
     return select->queryTransformExtra() == alreadyAssignedNestedTag;
-#endif
+#else
     return ::haveAssignedToChildren(select, curTransform);
+#endif
 }
 
 void HqlGram::addAssignall(IHqlExpression *tgt, IHqlExpression *src, const attribute& errpos)
@@ -2302,7 +2306,7 @@ void HqlGram::addToActiveRecord(IHqlExpression * newField)
 
     CHqlRecord *currentRecord = QUERYINTERFACE(self->queryRecord(), CHqlRecord);
     //Protect against adding fields to closed records (can only occur after errors).
-    if ((currentRecord != &topRecord) && !currentRecord->isExprClosed())
+    if (currentRecord && (currentRecord != &topRecord) && !currentRecord->isExprClosed())
         currentRecord->insertSymbols(newField);
 }
 
@@ -5335,7 +5339,6 @@ IHqlExpression * HqlGram::createDatasetFromList(attribute & listAttr, attribute
         OwnedHqlExpr list = createValue(no_null);
         OwnedHqlExpr table = createDataset(no_temptable, LINK(list), record.getClear());
         return convertTempTableToInlineTable(*errorHandler, listAttr.pos, table);
-        return createDataset(no_null, LINK(record));
     }
 
     IHqlExpression * listRecord = list->queryRecord();
@@ -6313,7 +6316,11 @@ IHqlExpression * HqlGram::checkParameter(const attribute * errpos, IHqlExpressio
     else
     {
         if (isFieldSelectedFromRecord(ret))
+        {
+            if (errpos)
                 reportError(ERR_EXPECTED, *errpos, "Expression expected for parameter %s.  Fields from records can only be passed to field references", formalName->str());
+            return NULL;
+        }
     }
 
     if (formal->hasAttribute(fieldsAtom))
@@ -7568,12 +7575,6 @@ bool HqlGram::isExplicitlyDistributed(IHqlExpression *e)
     if (e->getOperator()==no_distribute || e->getOperator()==no_keyeddistribute)
         return true;
     return false;
-    for (unsigned i = 0; i < getNumChildTables(e); i++)
-    {
-        if (isExplicitlyDistributed(e->queryChild(i)))
-            return true;
-    }
-    return false;
 }
 
 static bool isFromFile(IHqlExpression * expr)

+ 1 - 1
ecl/hql/hqlir.cpp

@@ -925,7 +925,7 @@ class BinaryIRPlayer : public CIRPlayer
     };
 
 public:
-    BinaryIRPlayer(ISimpleReadStream * _in, IEclBuilder * _target) : CIRPlayer(_target), in(_in)
+    BinaryIRPlayer(ISimpleReadStream * _in, IEclBuilder * _target) : CIRPlayer(_target), in(_in), seq(0)
     {
     }
 

+ 1 - 2
ecl/hql/hqlmeta.cpp

@@ -2479,8 +2479,7 @@ void calculateDatasetMeta(CHqlMetaInfo & meta, IHqlExpression * expr)
                 mapper.setMapping(transform, leftSelect);
                 break;
             default:
-                assertex(!"Missing entry...");
-                break;
+                throwUnexpected();
             }
 
             extractMeta(meta, dataset);

+ 3 - 5
ecl/hql/hqlrepository.cpp

@@ -109,10 +109,9 @@ IHqlExpression * getResolveAttributeFullPath(const char * attrname, unsigned loo
 {
     Owned<IHqlScope> parentScope;
     const char * item = attrname;
-    const char * dot;
-    do
+    loop
     {
-        dot = strchr(item, '.');
+        const char * dot = strchr(item, '.');
         IIdAtom * moduleName;
         if (dot)
         {
@@ -142,8 +141,7 @@ IHqlExpression * getResolveAttributeFullPath(const char * attrname, unsigned loo
             return NULL;
 
         parentScope.set(scope);
-    } while (dot);
-    return LINK(queryExpression(parentScope));
+    }
 }
 
 

+ 0 - 13
ecl/hql/hqlstack.cpp

@@ -18,19 +18,6 @@
 #include <string.h>
 #include "hqlstack.hpp"
 
-FuncCallStack::FuncCallStack() {
-    sp = 0;
-    tos = DEFAULTSTACKSIZE;
-    stackbuf = (char *)malloc(tos);
-    numToFree = 0;
-#ifdef __64BIT__
-    // ARMFIX: See the header file for more comments
-    numFpRegs = 0;
-    for (unsigned i=0;i<MAXFPREGS;i++)
-        fpRegs[i] = 0.0;
-#endif
-}
-
 FuncCallStack::FuncCallStack(int size) {
     if(size < DEFAULTSTACKSIZE)
         size = DEFAULTSTACKSIZE;

+ 1 - 2
ecl/hql/hqlstack.hpp

@@ -53,8 +53,7 @@ private:
     unsigned    numFpRegs;
 #endif
 public:
-    FuncCallStack();
-    FuncCallStack(int size);
+    FuncCallStack(int size = DEFAULTSTACKSIZE);
     virtual ~FuncCallStack();
 
     unsigned getSp();

+ 2 - 2
ecl/hql/hqltrans.cpp

@@ -1334,7 +1334,7 @@ void NewHqlTransformer::analyseSelector(IHqlExpression * expr)
 
 IHqlExpression * NewHqlTransformer::quickTransformTransform(IHqlExpression * expr)
 {
-    bool same = false;
+    bool same = true;
     unsigned max = expr->numChildren();
     HqlExprArray children;
     children.ensure(max);
@@ -4011,7 +4011,7 @@ IHqlExpression * ScopedTransformer::createTransformed(IHqlExpression * expr)
 
             if (expr->isDataset())
                 pushScope();
-                children.append(*transform(expr->queryChild(0)));
+            children.append(*transform(expr->queryChild(0)));
             if (expr->isDataset())
                 popScope();
             for (idx = 1; idx < numChildren; idx++)

+ 5 - 4
ecl/hqlcpp/hqlcpp.cpp

@@ -140,7 +140,7 @@ void SubStringInfo::bindToFrom(HqlCppTranslator & translator, BuildCtx & ctx)
 
 //---------------------------------------------------------------------------
 
-WorkflowItem::WorkflowItem(IHqlExpression * _function) : wfid(0), function(_function)
+WorkflowItem::WorkflowItem(IHqlExpression * _function) : wfid(0), function(_function), workflowOp(no_funcdef)
 {
     IHqlExpression * body = function->queryChild(0);
     assertex(body->getOperator() == no_outofline);
@@ -1423,6 +1423,7 @@ HqlCppTranslator::HqlCppTranslator(IErrorReceiver * _errors, const char * _soNam
     nextTypeId = 0;
     nextFieldId = 0;
     code = (HqlCppInstance*)_code;
+    xmlUsesContents = false;
 }
 
 HqlCppTranslator::~HqlCppTranslator()
@@ -7693,7 +7694,7 @@ void HqlCppTranslator::doBuildExprList(BuildCtx & ctx, IHqlExpression * expr, CH
         }
         break;
     default:
-        throw(!"This type of list not supported yet");
+        throwUnexpectedX("This type of list not supported yet");
     }
 }
 
@@ -7710,7 +7711,7 @@ void HqlCppTranslator::doBuildAssignList(BuildCtx & ctx, const CHqlBoundTarget &
     case type_array:
         break;
     default:
-        throw(!"This type of list not supported yet");
+        throwUnexpectedX("This type of list not supported yet");
     }
 
     //This is an assignment, a non-constant set would end up creating two temporaries.
@@ -8272,7 +8273,7 @@ void HqlCppTranslator::doBuildAssignCompareElement(BuildCtx & ctx, EvaluateCompa
     }
 
 
-    ITypeInfo * realType = realType = lhs.queryType()->queryPromotedType();
+    ITypeInfo * realType = lhs.queryType()->queryPromotedType();
     tc = realType->getTypeCode();
     IHqlExpression * op = NULL;
     switch (tc)

+ 1 - 2
ecl/hqlcpp/hqlcpp.ipp

@@ -113,7 +113,7 @@ public:
 class HQLCPP_API HqlCppSection : public CInterface
 {
 public:
-  HqlCppSection() : stmts(NULL) {}
+  HqlCppSection() : section(NULL),stmts(NULL) {}
 
 public:
     IAtom *                       section;
@@ -1909,7 +1909,6 @@ protected:
     bool                checkedEmbeddedCpp;
     bool                cachedAllowEmbeddedCpp;
     bool                checkedPipeAllowed;
-    unsigned            numExtraFiles;
     unsigned            activitiesThisCpp;
     unsigned            curCppFile;
     Linked<ICodegenContextCallback> ctxCallback;

+ 14 - 11
ecl/hqlcpp/hqlhoist.cpp

@@ -652,17 +652,20 @@ CHqlExprMultiGuard * ConditionalContextTransformer::createAndOrGuard(Conditional
 
     node_operator op = original->getOperator();
     Owned<CHqlExprMultiGuard> newGuards = new CHqlExprMultiGuard;
-    ForEachItemIn(i, rightGuard->guarded)
-    {
-        CHqlExprGuard & cur = rightGuard->guarded.item(i);
-        OwnedHqlExpr cond;
-        //(a || b):  b is evaluated if a is false.  => guard'(b,x) = !a && guard(b,x)
-        //(a && b):  b is evaluated if a is true.   => guard'(b,x) = a && guard(b,x)
-        if (op == no_or)
-            cond.setown(createBoolExpr(no_and, getInverse(left), LINK(cur.guard)));
-        else
-            cond.setown(createBoolExpr(no_and, LINK(left), LINK(cur.guard)));
-        newGuards->addGuarded(cond, cur.original, leftGuard != NULL);
+    if (rightGuard)
+    {
+        ForEachItemIn(i, rightGuard->guarded)
+        {
+            CHqlExprGuard & cur = rightGuard->guarded.item(i);
+            OwnedHqlExpr cond;
+            //(a || b):  b is evaluated if a is false.  => guard'(b,x) = !a && guard(b,x)
+            //(a && b):  b is evaluated if a is true.   => guard'(b,x) = a && guard(b,x)
+            if (op == no_or)
+                cond.setown(createBoolExpr(no_and, getInverse(left), LINK(cur.guard)));
+            else
+                cond.setown(createBoolExpr(no_and, LINK(left), LINK(cur.guard)));
+            newGuards->addGuarded(cond, cur.original, leftGuard != NULL);
+        }
     }
 
     //MORE: Is the reversal of the order going to matter?  E.g., instead of guard(a,x) || (a && guard(b,x))?

+ 21 - 49
ecl/hqlcpp/hqlhtcpp.cpp

@@ -233,16 +233,7 @@ static IHqlExpression * createResultName(IHqlExpression * name)
 {
     if (!name)
         return createQuoted("0", makeReferenceModifier(makeVarStringType(UNKNOWN_LENGTH)));
-    switch (name->getOperator())
-    {
-    case no_constant:
-        return LINK(name);
-    default:
-        return LINK(name);
-        UNIMPLEMENTED;
-        break;
-    }
-    return NULL;
+    return LINK(name);
 }
 
 //---------------------------------------------------------------------------
@@ -814,7 +805,7 @@ public:
     }
 
     TransformBuilder(const TransformBuilder & other, BuildCtx & _ctx) :
-            DelayedStatementExecutor(other.translator, _ctx), mapper(other.mapper), assigns(other.assigns)
+            DelayedStatementExecutor(other.translator, _ctx), mapper(other.mapper), assigns(other.assigns), self(other.self)
     {
         expectedIndex = 0;
     }
@@ -1452,23 +1443,7 @@ BoundRow * HqlCppTranslator::createRowBuilder(BuildCtx & ctx, BoundRow * targetR
 
     if (!targetIsOwnedRow && isFixedWidthDataset(record) && !options.alwaysCreateRowBuilder)
     {
-        LinkedHqlExpr targetArg = boundTarget;
-        if (targetIsOwnedRow)
-        {
-            OwnedHqlExpr allocator = createRowAllocator(ctx, record);
-
-            StringBuffer valueText;
-            valueText.append("(byte *)");
-            generateExprCpp(valueText, allocator).append("->createRow()");
-
-            StringBuffer setText;
-            generateExprCpp(setText, boundTarget);
-            setText.append(".setown(").append(valueText).append(");");
-            ctx.addQuoted(setText);
-            targetArg.setown(getPointer(boundTarget));
-        }
-
-        BoundRow * self = bindSelf(ctx, targetRow->queryDataset(), targetArg, NULL);
+        BoundRow * self = bindSelf(ctx, targetRow->queryDataset(), boundTarget, NULL);
         return LINK(self);
     }
 
@@ -1725,8 +1700,10 @@ ActivityInstance::ActivityInstance(HqlCppTranslator & _translator, BuildCtx & ct
     isMember = false;
     instanceIsLocal = false;
     classStmt = NULL;
+    classGroup = NULL;
     classGroupStmt = NULL;
     hasChildActivity = false;
+    initialGroupMarker = 0;
 
     includedInHeader = false;
     isCoLocal = false;
@@ -1792,7 +1769,6 @@ ActivityInstance::ActivityInstance(HqlCppTranslator & _translator, BuildCtx & ct
     if (!parentExtract && (translator.getTargetClusterType() == RoxieCluster))
         executedRemotely = isNonLocal(dataset, false);
 
-
     unsigned containerId = 0;
     if (containerActivity)
     {
@@ -2795,7 +2771,7 @@ GlobalClassBuilder::GlobalClassBuilder(HqlCppTranslator & _translator, BuildCtx
         accessorName.set(s.clear().append("cr").append(className).str());
     }
     onCreateStmt = NULL;
-
+    classStmt = NULL;
 }
 
 void GlobalClassBuilder::buildClass(unsigned priority)
@@ -3224,22 +3200,22 @@ void HqlCppTranslator::noteFilename(ActivityInstance & instance, const char * na
 void HqlCppTranslator::buildRefFilenameFunction(ActivityInstance & instance, BuildCtx & classctx, const char * name, IHqlExpression * expr)
 {
     IHqlExpression * table = queryPhysicalRootTable(expr);
+    assertex(table);
+
     IHqlExpression * filename = NULL;
-    if (table)
+    switch (table->getOperator())
     {
-        switch (table->getOperator())
-        {
-        case no_keyindex:
-            filename = table->queryChild(2);
-            break;
-        case no_newkeyindex:
-            filename = table->queryChild(3);
-            break;
-        case no_table:
-            filename = table->queryChild(0);
-            break;
-        }
+    case no_keyindex:
+        filename = table->queryChild(2);
+        break;
+    case no_newkeyindex:
+        filename = table->queryChild(3);
+        break;
+    case no_table:
+        filename = table->queryChild(0);
+        break;
     }
+
     buildFilenameFunction(instance, classctx, name, filename, hasDynamicFilename(table));
 }
 
@@ -4157,8 +4133,7 @@ void HqlCppTranslator::buildMetaInfo(MetaInstance & instance)
                 }
             }
 
-            if (record)
-                generateMetaRecordSerialize(metactx, record, serializerName.str(), deserializerName.str(), internalSerializerName.str(), internalDeserializerName.str(), prefetcherName.str());
+            generateMetaRecordSerialize(metactx, record, serializerName.str(), deserializerName.str(), internalSerializerName.str(), internalDeserializerName.str(), prefetcherName.str());
 
             if (flags != (MDFhasserialize|MDFhasxml))
                 doBuildUnsignedFunction(metactx, "getMetaFlags", flags);
@@ -7103,6 +7078,7 @@ void HqlCppTranslator::buildClearRecord(BuildCtx & ctx, IHqlExpression * dataset
 
 IHqlExpression * HqlCppTranslator::getClearRecordFunction(IHqlExpression * record, int direction)
 {
+    assertex(record);
     IHqlExpression * dirExpr = getSizetConstant((size32_t)direction);
     OwnedHqlExpr search = createAttribute(__clearHelperAtom, LINK(record->queryBody()), dirExpr);
 
@@ -7120,7 +7096,6 @@ IHqlExpression * HqlCppTranslator::getClearRecordFunction(IHqlExpression * recor
     s.append("size32_t ").append(functionName).append("(ARowBuilder & crSelf, IResourceContext * ctx)");
 
     clearctx.setNextPriority(RowMetaPrio);
-    if (record)
     {
         IHqlStmt * func = clearctx.addQuotedCompound(s);
         func->setIncomplete(true);
@@ -7132,8 +7107,6 @@ IHqlExpression * HqlCppTranslator::getClearRecordFunction(IHqlExpression * recor
         buildReturnRecordSize(clearctx, cursor);
         func->setIncomplete(false);
     }
-    else
-        clearctx.addQuotedCompound(s.append(" {}"));
 
     if (options.spanMultipleCpp)
     {
@@ -13217,7 +13190,6 @@ void HqlCppTranslator::doBuildUserMergeAggregateFunc(BuildCtx & ctx, IHqlExpress
 void HqlCppTranslator::doBuildUserAggregateFuncs(BuildCtx & ctx, IHqlExpression * expr, bool & requiresOrderedMerge)
 {
     IHqlExpression * dataset = expr->queryChild(0);
-    IHqlExpression * tgtRecord = expr->queryChild(1);
     IHqlExpression * transform = expr->queryChild(2);
     IHqlExpression * selSeq = querySelSeq(expr);
     LinkedHqlExpr firstTransform;

+ 1 - 0
ecl/hqlcpp/hqlinline.cpp

@@ -134,6 +134,7 @@ static unsigned calcInlineFlags(BuildCtx * ctx, IHqlExpression * expr)
         //can't do a skip inside an inline project - since the generated code doesn't allow "continue" to be used.
         if (transformContainsSkip(expr->queryChild(1)))
             return 0;
+        //fallthrough
     case no_newusertable:
         {
             if (expr->hasAttribute(prefetchAtom))

+ 2 - 2
ecl/hqlcpp/hqliproj.cpp

@@ -597,6 +597,7 @@ void UsedFieldSet::getText(StringBuffer & s) const
         if (cur.isDatarow())
         {
             NestedField * match = findNested(&cur);
+            assertex(match);
             if (!match->used.checkAllFieldsUsed())
                 match->used.getText(s);
         }
@@ -3265,8 +3266,7 @@ IHqlExpression * ImplicitProjectTransformer::updateSelectors(IHqlExpression * ne
 const SelectUsedArray & ImplicitProjectTransformer::querySelectsUsedForField(IHqlExpression * transform, IHqlExpression * field)
 {
     IHqlExpression * transformValues = queryTransformAssignValue(transform, field);
-    if (!transformValues)
-         transformValues = queryTransformAssignValue(transform, field);
+    assertex(transformValues);
     return querySelectsUsed(transformValues);
 }
 

+ 3 - 1
ecl/hqlcpp/hqllib.cpp

@@ -258,12 +258,14 @@ protected:
 
                 if (oldSymbol->isFunction())
                 {
-                    // Should have been caught in the parser..  Following code should be correct if we ever work out how to implement
                     throwUnexpected();
+#if 0
+                    // Should have been caught in the parser..  Following code should be correct if we ever work out how to implement
                     HqlExprArray parms;
                     unwindChildren(parms, oldSymbol, 1);
                     IHqlExpression * formals = createSortList(parms);
                     newValue.setown(createFunctionDefinition(id, newValue.getClear(), formals, NULL, NULL));
+#endif
                 }
 
                 IHqlExpression * newSym = oldSymbol->cloneAllAnnotations(newValue);

+ 0 - 1
ecl/hqlcpp/hqllib.ipp

@@ -43,7 +43,6 @@ public:
     unsigned streamedCount;
     LibraryInputMapper inputMapper;
     HqlExprArray outputs;                       // Only the names and types are significant, not the values
-    bool allowStreamingInputs;
 };
 
 

+ 0 - 1
ecl/hqlcpp/hqlregex.cpp

@@ -2531,7 +2531,6 @@ void RegexContext::buildStructure()
     unsigned startTime = msTick();
     IHqlExpression * grammar = expr->queryChild(2);
     assertex(grammar->getOperator() == no_pat_instance);
-    IAtom * name = grammar->queryChild(1)->queryName();
     OwnedHqlExpr structure = LINK(grammar);//createValue(no_pat_instance, makeRuleType(NULL), LINK(grammar), LINK(grammar->queryChild(1)));
 
     HqlRegexExpr * rootRegex = createStructure(structure, isCaseSensitive());

+ 0 - 1
ecl/hqlcpp/hqlregex.ipp

@@ -71,7 +71,6 @@ protected:
     unsigned numUses;
     IAtom * name;
     LengthLimit limit;
-    IAtom * cachedModule;
     node_operator kind;
     OwnedHqlExpr searchExpr;
     OwnedHqlExpr expr;

+ 8 - 1
ecl/hqlcpp/hqlresource.cpp

@@ -650,6 +650,9 @@ ResourceGraphInfo::ResourceGraphInfo(CResourceOptions * _options) : resources(_o
     startedGeneratingResourced = false;
     inheritedExpandedDependencies = false;
     cachedDependent.other = NULL;
+    cachedDependent.ignoreSources = false;
+    cachedDependent.updateSequence = 0;
+    cachedDependent.value = false;
 }
 
 ResourceGraphInfo::~ResourceGraphInfo()
@@ -1911,6 +1914,7 @@ EclResourcer::EclResourcer(IErrorReceiver * _errors, IConstWorkUnit * _wu, Clust
     options.actionLinkInNewGraph = _translatorOptions.actionLinkInNewGraph || (targetClusterType == HThorCluster);
     options.convertCompoundToExecuteWhen = false;
     options.useResultsForChildSpills = _translatorOptions.useResultsForChildSpills;
+    spilled = false;
 }
 
 EclResourcer::~EclResourcer()               
@@ -3900,7 +3904,10 @@ void EclResourcer::addChildDependencies(IHqlExpression * expr, ResourceGraphInfo
 void EclResourcer::addDependencies(IHqlExpression * expr, ResourceGraphInfo * graph, IHqlExpression * activityExpr)
 {
     ResourcerInfo * info = queryResourceInfo(expr);
-    if (info && info->containsActivity)
+    if (!info)
+        return;
+
+    if (info->containsActivity)
     {
         if (info->isActivity)
         {

+ 1 - 2
ecl/hqlcpp/hqlsource.cpp

@@ -698,6 +698,7 @@ public:
         isVirtualLogicalFilenameUsed = false;
         requiresOrderedMerge = false;
         rootSelfRow = NULL;
+        activityKind = TAKnone;
     }
     virtual ~SourceBuilder() {}
 
@@ -1586,7 +1587,6 @@ void SourceBuilder::buildTransformElements(BuildCtx & ctx, IHqlExpression * expr
         }
         break;
 
-    case no_cachealias:
     case no_compound_diskread:
     case no_compound_disknormalize:
     case no_compound_diskaggregate:
@@ -5954,7 +5954,6 @@ bool MonitorExtractor::extractFilters(KeyConditionInfo & matches, IHqlExpression
         matches.appendPostFilter(expr);
         return false;
     }
-    UNIMPLEMENTED;
 }
 
 

+ 1 - 0
ecl/hqlcpp/hqlstmt.cpp

@@ -1040,6 +1040,7 @@ HqlStmt::HqlStmt(StmtKind _kind, HqlStmts * _container)
     container = _container;
     incomplete = false;
     included = true;
+    priority = 0;
 }
 
 void HqlStmt::addExpr(IHqlExpression * expr)

+ 16 - 39
ecl/hqlcpp/hqltcppc2.cpp

@@ -347,51 +347,28 @@ void CChildDatasetColumnInfo::setColumn(HqlCppTranslator & translator, BuildCtx
     OwnedHqlExpr lengthTarget = convertAddressToValue(addressSize, sizetType);
 
     ITypeInfo * columnType = column->queryType();
-    OwnedHqlExpr value = LINK(_value); //ensureExprType(_value, columnType);
+    IHqlExpression * record = column->queryRecord();
+    OwnedHqlExpr value = addDatasetLimits(translator, ctx, selector, _value);
     ITypeInfo * valueType = value->queryType();
-
     assertRecordTypesMatch(valueType, columnType);
 
-    bool assignInline = false;  // canEvaluateInline(value);   // MORE: What is the test
-//  bool assignInline = canAssignInline(&ctx, value) && !canEvaluateInline(&ctx, value);
-    value.setown(addDatasetLimits(translator, ctx, selector, value));
-
-    IHqlExpression * record = column->queryRecord();
-    if (assignInline)
-    {
-        OwnedHqlExpr inlineSize = getSizetConstant(0);
-        checkAssignOk(translator, ctx, selector, inlineSize, sizeof(size32_t));
-
-        //Can only assign inline if we know the maximum length that will be assigned is 0.
-        Owned<IHqlCppDatasetBuilder> builder = translator.createInlineDatasetBuilder(record, inlineSize, addressData);
-        builder->buildDeclare(ctx);
-
-        translator.buildDatasetAssign(ctx, builder, value);
-
-        CHqlBoundTarget boundTarget;
-        boundTarget.length.set(lengthTarget);
-        builder->buildFinish(ctx, boundTarget);
-    }
-    else
-    {
-        CHqlBoundExpr bound;
-        translator.buildDataset(ctx, value, bound, FormatBlockedDataset);
-        translator.normalizeBoundExpr(ctx, bound);
-        ensureSimpleLength(translator, ctx, bound);
+    CHqlBoundExpr bound;
+    translator.buildDataset(ctx, value, bound, FormatBlockedDataset);
+    translator.normalizeBoundExpr(ctx, bound);
+    ensureSimpleLength(translator, ctx, bound);
 
-        OwnedHqlExpr length = translator.getBoundLength(bound);
-        OwnedHqlExpr size = createValue(no_translated, LINK(sizetType), translator.getBoundSize(bound));
-        checkAssignOk(translator, ctx, selector, size, sizeof(size32_t));
+    OwnedHqlExpr length = translator.getBoundLength(bound);
+    OwnedHqlExpr size = createValue(no_translated, LINK(sizetType), translator.getBoundSize(bound));
+    checkAssignOk(translator, ctx, selector, size, sizeof(size32_t));
 
-        translator.assignBoundToTemp(ctx, lengthTarget, length);
-        translator.buildBlockCopy(ctx, addressData, bound);
+    translator.assignBoundToTemp(ctx, lengthTarget, length);
+    translator.buildBlockCopy(ctx, addressData, bound);
 
-        //Use the size just calculated for the field
-        OwnedHqlExpr sizeOfExpr = createValue(no_sizeof, LINK(sizetType), LINK(selector->queryExpr()));
-        OwnedHqlExpr boundSize = translator.getBoundSize(bound);
-        OwnedHqlExpr srcSize = adjustValue(boundSize, sizeof(size32_t));
-        ctx.associateExpr(sizeOfExpr, srcSize);
-    }
+    //Use the size just calculated for the field
+    OwnedHqlExpr sizeOfExpr = createValue(no_sizeof, LINK(sizetType), LINK(selector->queryExpr()));
+    OwnedHqlExpr boundSize = translator.getBoundSize(bound);
+    OwnedHqlExpr srcSize = adjustValue(boundSize, sizeof(size32_t));
+    ctx.associateExpr(sizeOfExpr, srcSize);
 }
 
 AColumnInfo * CChildDatasetColumnInfo::lookupColumn(IHqlExpression * search)

+ 2 - 3
ecl/hqlcpp/hqltomita.cpp

@@ -158,10 +158,8 @@ StringBuffer & TomToken::getName(StringBuffer & out)
         return out.append("EOF");
     IAtom * name = expr->queryName();
     if (expr->getOperator() == no_pat_instance)
-    {
         name = expr->queryChild(1)->queryName();
-        expr = expr->queryChild(0);
-    }
+
     if (name)
         out.append("tok").append(name);
     else if (id != NotFound)
@@ -557,6 +555,7 @@ TomRule::TomRule(IHqlExpression * expr, IAtom * _name, const TomFeatureArray & _
     cloneLinkedArray(features, _features);
     implicit = _implicit;
     id = 0;
+    isNull = false;
     isNullState = ValueUnknown;
     firstState = ValueUnknown;
     curExpandState = (unsigned)-1;

+ 2 - 0
ecl/hqlcpp/hqlttcpp.cpp

@@ -5424,6 +5424,7 @@ WorkflowTransformer::WorkflowTransformer(IWorkUnit * _wu, HqlCppTranslator & _tr
     workflowOut = NULL;
     isConditional = false;
     insideStored = false;
+    activeWfid = 0;
 }
 
 //-- Helper routines --
@@ -7851,6 +7852,7 @@ AutoScopeMigrateTransformer::AutoScopeMigrateTransformer(IWorkUnit * _wu, HqlCpp
     hasCandidate = false;
     activityDepth = 0;
     curGraph = 1;
+    globalTarget = NULL;
 }
 
 void AutoScopeMigrateTransformer::analyseExpr(IHqlExpression * expr)

+ 0 - 1
ecl/hqlcpp/hqlttcpp.ipp

@@ -730,7 +730,6 @@ private:
     bool hasCandidate;
     bool isSequential;
     unsigned curGraph;
-    unsigned nextGraph;
     HqlExprArray graphActions;
     unsigned activityDepth;
     HqlExprArray * globalTarget;