浏览代码

Merge pull request #4056 from ghalliday/issue8562

HPCC-8562 Remove and clean up references to legacy thor

Reviewed-By: Jake Smith <jake.smith@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 12 年之前
父节点
当前提交
3a2390779f

+ 0 - 1
common/thorhelper/commonext.cpp

@@ -153,7 +153,6 @@ MODULE_INIT(INIT_PRIORITY_STANDARD)
     kindArray[TAKchildcase] = "childcase";
     kindArray[TAKremotegraph] = "remote";
     kindArray[TAKlibrarycall] = "librarycall";
-    kindArray[TAKrawiterator] = "Child Dataset";
     kindArray[TAKlocalstreamread] = "localstreamread";
     kindArray[TAKprocess] = "process";
     kindArray[TAKgraphloop] ="graph";

+ 0 - 2
common/thorhelper/thorcommon.cpp

@@ -738,7 +738,6 @@ extern const char * getActivityText(ThorActivityKind kind)
     case TAKchildcase:              return "Case";
     case TAKremotegraph:            return "Remote";
     case TAKlibrarycall:            return "Library Call";
-    case TAKrawiterator:            return "Child Dataset";
     case TAKlocalstreamread:        return "Read Input";
     case TAKprocess:                return "Process";
     case TAKgraphloop:              return "Graph";
@@ -823,7 +822,6 @@ extern bool isActivitySource(ThorActivityKind kind)
     case TAKxmlread:
     case TAKlocalresultread:
     case TAKsimpleaction:
-    case TAKrawiterator:
     case TAKlocalstreamread:
     case TAKgraphloopresultread:
     case TAKnwaygraphloopresultread:

+ 4 - 9
common/workunit/workunit.cpp

@@ -3957,7 +3957,7 @@ public:
 ClusterType getClusterType(const char * platform, ClusterType dft)
 {
     if (stricmp(platform, "thor") == 0)
-        return ThorCluster;
+        return ThorLCRCluster;
     if (stricmp(platform, "thorlcr") == 0)
         return ThorLCRCluster;
     if (stricmp(platform, "hthor") == 0)
@@ -3974,8 +3974,6 @@ const char *clusterTypeString(ClusterType clusterType, bool lcrSensitive)
     case ThorLCRCluster:
         if (lcrSensitive)
             return "thorlcr";
-        // fall through
-    case ThorCluster:
         return "thor";
     case RoxieCluster:
         return "roxie";
@@ -4040,7 +4038,6 @@ public:
         {
             thorQueue.set(getClusterThorQueueName(queue.clear(), name));
             clusterWidth = 0;
-            bool lcr = false;
             ForEachItemIn(i,thors) 
             {
                 IPropertyTree &thor = thors.item(i);
@@ -4053,12 +4050,10 @@ public:
                     throw MakeStringException(WUERR_MismatchClusterSize,"CEnvironmentClusterInfo: mismatched thor sizes in cluster");
                 clusterWidth = ts;
                 bool islcr = !thor.getPropBool("@Legacy");
-                if (i==0)
-                    lcr = islcr;
-                else if (lcr!=islcr)
-                    throw MakeStringException(WUERR_MismatchThorType,"CEnvironmentClusterInfo: mismatched thor Legacy in cluster");
+                if (!islcr)
+                    throw MakeStringException(WUERR_MismatchThorType,"CEnvironmentClusterInfo: Legacy Thor no longer supported");
             }
-            platform = lcr ? ThorLCRCluster : ThorCluster;
+            platform = ThorLCRCluster;
         }
         else if (roxie)
         {

+ 2 - 2
common/workunit/workunit.hpp

@@ -534,11 +534,11 @@ interface IConstWUExceptionIterator : extends IScmIterator
     virtual IConstWUException & query() = 0;
 };
 
-enum ClusterType { NoCluster, ThorCluster, HThorCluster, RoxieCluster, ThorLCRCluster };
+enum ClusterType { NoCluster, HThorCluster, RoxieCluster, ThorLCRCluster };
 
 extern WORKUNIT_API ClusterType getClusterType(const char * platform, ClusterType dft = NoCluster);
 extern WORKUNIT_API const char *clusterTypeString(ClusterType clusterType, bool lcrSensitive);
-inline bool isThorCluster(ClusterType type) { return (type == ThorCluster) || (type == ThorLCRCluster); }
+inline bool isThorCluster(ClusterType type) { return (type == ThorLCRCluster); }
 
 //! IClusterInfo
 interface IConstWUClusterInfo : extends IInterface

+ 0 - 2
ecl/eclagent/eclgraph.cpp

@@ -195,8 +195,6 @@ static IHThorActivity * createActivity(IAgentContext & agent, unsigned activityI
         return createSoapDatasetActionActivity(agent, activityId, subgraphId, (IHThorSoapActionArg &)arg, kind);
     case TAKchilditerator:          
         return createChildIteratorActivity(agent, activityId, subgraphId, (IHThorChildIteratorArg &)arg, kind);
-    case TAKrawiterator:            
-        return createRawIteratorActivity(agent, activityId, subgraphId, (IHThorRawIteratorArg &)arg, kind);
     case TAKlinkedrawiterator:
         return createLinkedRawIteratorActivity(agent, activityId, subgraphId, (IHThorLinkedRawIteratorArg &)arg, kind);
     case TAKrowresult:          

+ 6 - 81
ecl/hqlcpp/hqlcpp.cpp

@@ -1508,7 +1508,6 @@ void HqlCppTranslator::cacheOptions()
         DebugOption(options.peephole,"peephole", true),
         DebugOption(options.foldConstantCast,"foldConstantCast", true),
         DebugOption(options.optimizeBoolReturn,"optimizeBoolReturn", true),
-        DebugOption(options.checkRowOverflow,"checkRowOverflow", true),
         DebugOption(options.freezePersists,"freezePersists", false),
         DebugOption(options.maxRecordSize, "defaultMaxLengthRecord", MAX_RECORD_SIZE),
 
@@ -1532,7 +1531,6 @@ void HqlCppTranslator::cacheOptions()
         DebugOption(options.commonUpChildGraphs,"commonUpChildGraphs", true),
         DebugOption(options.detectAmbiguousSelector,"detectAmbiguousSelector", false),
         DebugOption(options.allowAmbiguousSelector,"allowAmbiguousSelector", false),
-        DebugOption(options.preserveUniqueSelector,"preserveUniqueSelector", true),
 #ifdef _DEBUG
         DebugOption(options.regressionTest,"regressionTest", true),
 #else
@@ -1557,7 +1555,7 @@ void HqlCppTranslator::cacheOptions()
         DebugOption(options.warnOnImplicitReadLimit,"warnOnImplicitReadLimit", targetRoxie()),
 
         DebugOption(options.convertJoinToLookup,"convertJoinToLookup", true),
-        DebugOption(options.convertJoinToLookupIfSorted,"convertJoinToLookupIfSorted", false),      // should change to false once tested
+        DebugOption(options.convertJoinToLookupIfSorted,"convertJoinToLookupIfSorted", false),
         DebugOption(options.spotCSE,"spotCSE", true),
         DebugOption(options.optimizeNonEmpty,"optimizeNonEmpty", !targetThor()),                // not sure that it will be conditional resourced correctly for thor
         DebugOption(options.allowVariableRoxieFilenames,"allowVariableRoxieFilenames", false),
@@ -1576,21 +1574,16 @@ void HqlCppTranslator::cacheOptions()
         DebugOption(options.canGenerateSimpleAction,"canGenerateSimpleAction", true),
         DebugOption(options.minimizeActivityClasses,"minimizeActivityClasses", true),
         DebugOption(options.maxRootMaybeThorActions, "maxRootMaybeThorActions", 0),
-        DebugOption(options.includeHelperInGraph,"includeHelperInGraph", false),
-        DebugOption(options.supportsLinkedChildRows,"supportsLinkedChildRows", (targetClusterType != ThorCluster)),
         DebugOption(options.minimizeSkewBeforeSpill,"minimizeSkewBeforeSpill", false),
         DebugOption(options.createSerializeForUnknownSize,"createSerializeForUnknownSize", false),
         DebugOption(options.implicitLinkedChildRows,"implicitLinkedChildRows", false),
-        DebugOption(options.tempDatasetsUseLinkedRows,"tempDatasetsUseLinkedRows", false),
-//      DebugOption(options.mainRowsAreLinkCounted,"mainRowsAreLinkCounted", options.supportsLinkedChildRows),
+        DebugOption(options.mainRowsAreLinkCounted,"mainRowsAreLinkCounted", true),
         DebugOption(options.allowSections,"allowSections", true),
         DebugOption(options.autoPackRecords,"autoPackRecords", false),
         DebugOption(options.commonUniqueNameAttributes,"commonUniqueNameAttributes", true),
         DebugOption(options.sortIndexPayload,"sortIndexPayload", true),
         DebugOption(options.foldFilter,"foldFilter", true),
         DebugOption(options.finalizeAllRows, "finalizeAllRows", false),
-        DebugOption(options.finalizeAllVariableRows, "finalizeAllVariableRows", true),
-        DebugOption(options.maxStaticRowSize , "maxStaticRowSize", MAX_STATIC_ROW_SIZE),
         DebugOption(options.maxLocalRowSize , "maxLocalRowSize", MAX_LOCAL_ROW_SIZE),
         DebugOption(options.optimizeGraph,"optimizeGraph", true),
         DebugOption(options.optimizeChildGraph,"optimizeChildGraph", false),
@@ -1605,10 +1598,6 @@ void HqlCppTranslator::cacheOptions()
         DebugOption(options.generateLogicalGraph,"generateLogicalGraph", false),
         DebugOption(options.generateLogicalGraphOnly,"generateLogicalGraphOnly", false),
         DebugOption(options.globalAutoHoist,"globalAutoHoist", true),
-
-        DebugOption(options.useLinkedRawIterator,"useLinkedRawIterator", false),
-        DebugOption(options.useLinkedNormalize,"useLinkedNormalize", false),
-
         DebugOption(options.applyInstantEclTransformationsLimit, "applyInstantEclTransformationsLimit", 100),
         DebugOption(options.insertProjectCostLevel, "insertProjectCostLevel", (unsigned)-1),
         DebugOption(options.dfaRepeatMax, "dfaRepeatMax", 10),
@@ -1677,10 +1666,7 @@ void HqlCppTranslator::cacheOptions()
         DebugOption(options.addLibraryInputsToGraph,"addLibraryInputsToGraph", false),
         DebugOption(options.showRecordCountInGraph,"showRecordCountInGraph", true),
         DebugOption(options.serializeRowsetInExtract,"serializeRowsetInExtract", false),
-        DebugOption(options.optimizeInSegmentMonitor,"optimizeInSegmentMonitor", true),
-        DebugOption(options.supportDynamicRows,"supportDynamicRows", true),
         DebugOption(options.testIgnoreMaxLength,"testIgnoreMaxLength", false),
-        DebugOption(options.limitMaxLength,"limitMaxLength", false),
         DebugOption(options.trackDuplicateActivities,"trackDuplicateActivities", false),
         DebugOption(options.showActivitySizeInGraph,"showActivitySizeInGraph", false),
         DebugOption(options.addLocationToCpp,"addLocationToCpp", false),
@@ -1710,7 +1696,6 @@ void HqlCppTranslator::cacheOptions()
         DebugOption(options.projectNestedTables,"projectNestedTables",true),
         DebugOption(options.showSeqInGraph,"showSeqInGraph",false),  // For tracking down why projects are not commoned up
         DebugOption(options.normalizeSelectorSequence,"normalizeSelectorSequence",false),  // For tracking down why projects are not commoned up
-        DebugOption(options.transformCaseToChoose,"transformCaseToChoose",true),
         DebugOption(options.removeXpathFromOutput,"removeXpathFromOutput",false),
         DebugOption(options.canLinkConstantRows,"canLinkConstantRows",true),
     };
@@ -1738,9 +1723,6 @@ void HqlCppTranslator::cacheOptions()
     //The following cases handle options whose default values are dependent on other options.  
     //Or where one debug options sets more than one option
     options.hasResourceUseMpForDistribute = wu()->hasDebugValue("resourceUseMpForDistribute");
-    if (!options.supportsLinkedChildRows) 
-        options.implicitLinkedChildRows = false;
-
     if (options.spanMultipleCpp)
     {
         options.activitiesPerCpp = wu()->getDebugValueInt("activitiesPerCpp", DEFAULT_ACTIVITIES_PER_CPP);
@@ -1765,9 +1747,7 @@ void HqlCppTranslator::cacheOptions()
         options.optimizeResourcedProjects = true;
     }
 
-    options.mainRowsAreLinkCounted = options.supportsLinkedChildRows && getDebugFlag("mainRowsAreLinkCounted", true);
     options.minimizeWorkunitTemporaries = !options.workunitTemporaries || getDebugFlag("minimizeWorkunitTemporaries", false);//options.resourceConditionalActions);
-    options.tempDatasetsUseLinkedRows = getDebugFlag("tempDatasetsUseLinkedRows", options.implicitLinkedChildRows);
 
     options.inlineStringThreshold = wu()->getDebugValueInt("inlineStringThreshold", (options.targetCompiler != Vs6CppCompiler) ? 0 : 10000);
 
@@ -1777,17 +1757,8 @@ void HqlCppTranslator::cacheOptions()
         options.constantFoldPostNormalize = false;
     }
 
-    //A meta flag for enabling link counted child rows.
-    bool useLCR = getDebugFlag("linkCountedRows", getDebugFlag("testLCR", true));
-    if (options.supportsLinkedChildRows && useLCR)
-    {
-        options.implicitLinkedChildRows = true;
-        options.tempDatasetsUseLinkedRows = true;
-        options.useLinkedRawIterator = true;
-        options.useLinkedNormalize = true;
-        options.finalizeAllRows = true;     // inline temporary rows should actually be ok.
-        options.finalizeAllVariableRows = true;
-    }
+    options.implicitLinkedChildRows = true;
+    options.finalizeAllRows = true;     // inline temporary rows should actually be ok.
 
     postProcessOptions();
 }
@@ -1795,38 +1766,6 @@ void HqlCppTranslator::cacheOptions()
 void HqlCppTranslator::postProcessOptions()
 {
 //Any post processing - e.g., dependent flags goes here...
-    if (targetClusterType == ThorCluster)
-    {
-        options.supportDynamicRows = false;
-        options.resourceConditionalActions = false;
-        options.resourceSequential = false;
-    }
-
-    if (options.supportDynamicRows)
-    {
-        options.finalizeAllVariableRows = true;
-    }
-    else
-    {
-        options.testIgnoreMaxLength = false;
-        options.limitMaxLength = false;
-    }
-
-    if (options.supportsLinkedChildRows) 
-    {
-        options.maxStaticRowSize = 0;
-    }
-    else
-    {
-        options.maxStaticRowSize = (unsigned)-1;
-        options.implicitLinkedChildRows = false;
-        options.tempDatasetsUseLinkedRows = false;
-        options.useLinkedRawIterator = false;
-        options.useLinkedNormalize = false;
-        options.finalizeAllRows = false;
-        options.finalizeAllVariableRows = false;
-    }
-
     options.optimizeDiskFlag = 0;
     if (options.optimizeInlineSource) 
         options.optimizeDiskFlag |= CSFnewinline;
@@ -1864,7 +1803,6 @@ unsigned HqlCppTranslator::getOptimizeFlags() const
     case HThorCluster:
         optFlags |= HOOnocloneindexlimit|HOOalwayslocal;
         break;
-    case ThorCluster:
     case ThorLCRCluster:
         break;
     default:
@@ -4141,7 +4079,7 @@ void HqlCppTranslator::createTempFor(BuildCtx & ctx, ITypeInfo * _exprType, CHql
                 assertex(format != FormatBlockedDataset);
                 format = FormatLinkedDataset;
             }
-            else if (options.tempDatasetsUseLinkedRows && (format == FormatNatural))
+            else if (format == FormatNatural)
                 format = FormatLinkedDataset;
             break;
         }
@@ -5818,21 +5756,8 @@ void HqlCppTranslator::doBuildCall(BuildCtx & ctx, const CHqlBoundTarget * tgt,
             if (resultSelfCursor->queryBuilder())
                 args.append(*LINK(resultSelfCursor->queryBuilder()));
             else
-            {
-                //Legacy support....
-                assertex(!options.supportDynamicRows);
-                OwnedHqlExpr rowExpr = getPointer(resultSelfCursor->queryBound());
-
-                StringBuffer builderName;
-                getUniqueId(builderName.append("b"));
+                throwUnexpectedX("Expected a dynamic target for a transform - legacy not supported");
 
-                StringBuffer s;
-                s.append("RtlStaticRowBuilder ").append(builderName).append("(");
-                generateExprCpp(s, rowExpr).append(",").append(getMaxRecordSize(funcdef->queryRecord())).append(");");
-                ctx.addQuoted(s);
-
-                args.append(*createVariable(builderName, makeBoolType()));
-            }
             returnByReference = true;
             doneAssign = true;
             break;

+ 0 - 15
ecl/hqlcpp/hqlcpp.ipp

@@ -534,7 +534,6 @@ struct HqlCppOptions
     unsigned            maxRecordSize;
     unsigned            inlineStringThreshold;
     unsigned            maxRootMaybeThorActions;
-    unsigned            maxStaticRowSize;
     unsigned            maxLocalRowSize;
     unsigned            insertProjectCostLevel;
     unsigned            dfaRepeatMax;
@@ -559,7 +558,6 @@ struct HqlCppOptions
     bool                peephole;
     bool                foldConstantCast;
     bool                optimizeBoolReturn;
-    bool                checkRowOverflow;
     bool                freezePersists;
     bool                checkRoxieRestrictions;
     bool                checkThorRestrictions;
@@ -611,11 +609,8 @@ struct HqlCppOptions
     bool                preventSteppedSplit;
     bool                canGenerateSimpleAction;
     bool                minimizeActivityClasses;
-    bool                includeHelperInGraph;
-    bool                supportsLinkedChildRows;
     bool                minimizeSkewBeforeSpill;
     bool                createSerializeForUnknownSize;
-    bool                tempDatasetsUseLinkedRows;
     bool                implicitLinkedChildRows;
     bool                mainRowsAreLinkCounted;
     bool                allowSections;
@@ -624,7 +619,6 @@ struct HqlCppOptions
     bool                sortIndexPayload;
     bool                foldFilter;
     bool                finalizeAllRows;
-    bool                finalizeAllVariableRows;
     bool                optimizeGraph;
     bool                optimizeChildGraph ;
     bool                orderDiskFunnel;
@@ -638,8 +632,6 @@ struct HqlCppOptions
     bool                generateLogicalGraph;
     bool                generateLogicalGraphOnly;
     bool                globalAutoHoist;
-    bool                useLinkedRawIterator;
-    bool                useLinkedNormalize;
     bool                expandRepeatAnyAsDfa;
     bool                unlimitedResources;
     bool                hasResourceUseMpForDistribute;
@@ -658,7 +650,6 @@ struct HqlCppOptions
     bool                combineTrivialStored;
     bool                combineAllStored;
     bool                allowStoredDuplicate;
-    bool                preserveUniqueSelector;
     bool                allowScopeMigrate;
     bool                supportFilterProject;
     bool                normalizeExplicitCasts;
@@ -691,10 +682,7 @@ struct HqlCppOptions
     bool                addLibraryInputsToGraph;
     bool                showRecordCountInGraph;
     bool                serializeRowsetInExtract;
-    bool                optimizeInSegmentMonitor;
-    bool                supportDynamicRows;
     bool                testIgnoreMaxLength;
-    bool                limitMaxLength;
     bool                trackDuplicateActivities;               // for diagnosing problems with code becoming duplicated
     bool                showActivitySizeInGraph;
     bool                addLocationToCpp;
@@ -722,7 +710,6 @@ struct HqlCppOptions
     bool                projectNestedTables;
     bool                showSeqInGraph;
     bool                normalizeSelectorSequence;
-    bool                transformCaseToChoose;
     bool                removeXpathFromOutput;
     bool                canLinkConstantRows;
 };
@@ -917,7 +904,6 @@ public:
     void generateStatistics(const char * targetDir, const char * varient);
 
             unsigned getHints()                             { return hints; }
-    inline  bool checkForRowOverflow() const                { return options.checkRowOverflow; }
     inline bool queryEvaluateCoLocalRowInvariantInExtract() const { return options.evaluateCoLocalRowInvariantInExtract; }
     inline byte notifyOptimizedProjectsLevel()              { return options.notifyOptimizedProjects; }
     inline bool generateAsserts() const                     { return options.checkAsserts; }
@@ -1444,7 +1430,6 @@ public:
     ABoundActivity * doBuildActivityPrefetchProject(BuildCtx & ctx, IHqlExpression * expr);
     ABoundActivity * doBuildActivityProject(BuildCtx & ctx, IHqlExpression * expr);
     ABoundActivity * doBuildActivityProcess(BuildCtx & ctx, IHqlExpression * expr);
-    ABoundActivity * doBuildActivityRawChildDataset(BuildCtx & ctx, IHqlExpression * expr);
     ABoundActivity * doBuildActivityRegroup(BuildCtx & ctx, IHqlExpression * expr);
     ABoundActivity * doBuildActivityRemote(BuildCtx & ctx, IHqlExpression * expr, bool isRoot);
     ABoundActivity * doBuildActivityReturnResult(BuildCtx & ctx, IHqlExpression * expr, bool isRoot);

+ 1 - 10
ecl/hqlcpp/hqlcppds.cpp

@@ -946,8 +946,6 @@ bool HqlCppTranslator::canBuildOptimizedCount(BuildCtx & ctx, IHqlExpression * d
         }
         break;
     default:
-        if (!options.tempDatasetsUseLinkedRows)
-            break;
         if (!alwaysEvaluatesToBound(dataset))
             break;
         //fall through
@@ -1655,7 +1653,6 @@ IHqlExpression * HqlCppTranslator::getResourcedChildGraph(BuildCtx & ctx, IHqlEx
     case HThorCluster:
         csfFlags |= CSFcompoundSpill;
         break;
-    case ThorCluster:
     case ThorLCRCluster:
         //Don't compound spills inside a child query because it can cause non remote projects to become remote
         //And we'll also probably be using the roxie code to implement
@@ -2306,10 +2303,6 @@ void HqlCppTranslator::doBuildDataset(BuildCtx & ctx, IHqlExpression * expr, CHq
                         throwError(HQLERR_LinkedDatasetNoContext);
                     format = FormatBlockedDataset;
                 }
-                else if ((record == serializedRecord) && !options.tempDatasetsUseLinkedRows)
-                {
-                    format = FormatBlockedDataset;
-                }
                 else
                 {
                     format = FormatLinkedDataset;
@@ -5009,9 +5002,7 @@ void HqlCppTranslator::doBuildExprGetGraphResult(BuildCtx & ctx, IHqlExpression
         }
     }
 
-    bool useLinkCounted = recordRequiresLinkCount(expr->queryRecord()) || options.tempDatasetsUseLinkedRows;
-
-    OwnedHqlExpr call = buildGetLocalResult(ctx, expr, useLinkCounted);
+    OwnedHqlExpr call = buildGetLocalResult(ctx, expr, true);
     switch (expr->queryType()->getTypeCode())
     {
     case type_row:

+ 1 - 1
ecl/hqlcpp/hqlecl.cpp

@@ -623,7 +623,7 @@ extern HQLCPP_API ClusterType queryClusterType(IConstWorkUnit * wu, ClusterType
     if (wu->getDebugValueBool("forceRoxie", false))
         targetClusterType = RoxieCluster;
     else if (prevType == NoCluster)
-        targetClusterType = ThorCluster;
+        targetClusterType = ThorLCRCluster;
 
     SCMStringBuffer targetText;
     wu->getDebugValue("targetClusterType", targetText);

+ 13 - 110
ecl/hqlcpp/hqlhtcpp.cpp

@@ -1511,7 +1511,7 @@ bool HqlCppTranslator::tempRowRequiresFinalize(IHqlExpression * record) const
 {
     if (recordRequiresDestructor(record) || options.finalizeAllRows)
         return true;
-    if (options.finalizeAllVariableRows && isVariableSizeRecord(record))
+    if (isVariableSizeRecord(record))
         return true;
     return false;
 }
@@ -1526,7 +1526,7 @@ BoundRow * HqlCppTranslator::createRowBuilder(BuildCtx & ctx, BoundRow * targetR
     getUniqueId(builderName.append("b"));
     rowName.append(builderName).append(".row()");
 
-    if ((!targetIsOwnedRow && isFixedWidthDataset(record) && !options.alwaysCreateRowBuilder) || !options.supportDynamicRows)
+    if (!targetIsOwnedRow && isFixedWidthDataset(record) && !options.alwaysCreateRowBuilder)
     {
         LinkedHqlExpr targetArg = boundTarget;
         if (targetIsOwnedRow)
@@ -1632,7 +1632,7 @@ BoundRow * HqlCppTranslator::declareTempRow(BuildCtx & ctx, BuildCtx & codectx,
 
     //if maxRecordSize is too large, and cannot store it in a class, then allocate a pointer to it dynamically.
     unsigned maxRecordSize = getMaxRecordSize(record);
-    bool createRowDynamically = tempRowRequiresFinalize(record) || ((maxRecordSize > options.maxStaticRowSize) && (maxRecordSize > options.maxLocalRowSize));
+    bool createRowDynamically = tempRowRequiresFinalize(record) || (maxRecordSize > options.maxLocalRowSize);
     if (createRowDynamically)
     {
         return declareLinkedRow(ctx, expr, &ctx != &codectx);
@@ -2155,9 +2155,6 @@ void ActivityInstance::createGraphNode(IPropertyTree * defaultSubGraph, bool alw
     if (strcmp(graphEclText.str(), "<>") != 0)
         addAttribute("ecl", graphEclText.str());
 
-    if (translator.queryOptions().includeHelperInGraph)
-        addAttribute("helper", factoryName);
-
     if (translator.queryOptions().showSeqInGraph)
     {
         IHqlExpression * selSeq = querySelSeq(dataset);
@@ -4773,7 +4770,7 @@ void HqlCppTranslator::buildGetResultInfo(BuildCtx & ctx, IHqlExpression * expr,
                 record.set(::queryRecord(type));
                 //NB: The result type (including grouping) will be overridden when this function is bound
                 func = getResultDatasetAtom;
-                bool defaultLCR = targetAssign ? hasLinkedRow(targetAssign->queryType()) : options.tempDatasetsUseLinkedRows;
+                bool defaultLCR = targetAssign ? hasLinkedRow(targetAssign->queryType()) : true;
                 if (hasLinkCountedModifier(type) || defaultLCR)
                 {
                     ensureSerialized = false;
@@ -5518,9 +5515,6 @@ void HqlCppTranslator::updateClusterType()
     const char * clusterTypeText="?";
     switch (targetClusterType)
     {
-    case ThorCluster:
-         clusterTypeText = "thor";
-         break;
     case ThorLCRCluster:
          clusterTypeText = "thorlcr";
          break;
@@ -6871,7 +6865,7 @@ BoundRow * HqlCppTranslator::bindSelectorAsSelf(BuildCtx & ctx, IReferenceSelect
     BoundRow * rootRow = selector->queryRootRow();
     if (!rootRow->queryBuilder())
     {
-        if (options.alwaysCreateRowBuilder || (options.supportDynamicRows && !isFixedWidthDataset(rootRow->queryRecord())))
+        if (options.alwaysCreateRowBuilder || !isFixedWidthDataset(rootRow->queryRecord()))
             UNIMPLEMENTED_X("expected a row builder");
     }
     if (selector->isRoot())
@@ -7386,9 +7380,8 @@ void HqlCppTranslator::doBuildExprGetResult(BuildCtx & ctx, IHqlExpression * exp
         return;
 
     ITypeInfo * exprType = expr->queryType();
-    ExpressionFormat format = (hasLinkCountedModifier(exprType) || options.tempDatasetsUseLinkedRows) ? FormatLinkedDataset : FormatBlockedDataset;
     CHqlBoundTarget tempTarget;
-    createTempFor(ctx, exprType, tempTarget, typemod_none, format);
+    createTempFor(ctx, exprType, tempTarget, typemod_none, FormatLinkedDataset);
     buildGetResultInfo(ctx, expr, NULL, &tempTarget);
     tgt.setFromTarget(tempTarget);
     ctx.associateExpr(expr, tgt);
@@ -13224,8 +13217,8 @@ ABoundActivity * HqlCppTranslator::doBuildActivityAggregate(BuildCtx & ctx, IHql
 
 ABoundActivity * HqlCppTranslator::doBuildActivityChildDataset(BuildCtx & ctx, IHqlExpression * expr)
 {
-    if ((options.mainRowsAreLinkCounted && options.supportsLinkedChildRows && options.useLinkedRawIterator) || isGrouped(expr))
-        return doBuildActivityRawChildDataset(ctx, expr);
+    if (options.mainRowsAreLinkCounted || isGrouped(expr))
+        return doBuildActivityLinkedRawChildDataset(ctx, expr);
 
 
     StringBuffer s;
@@ -13338,60 +13331,6 @@ ABoundActivity * HqlCppTranslator::doBuildActivityLinkedRawChildDataset(BuildCtx
     return instance->getBoundActivity();
 }
 
-ABoundActivity * HqlCppTranslator::doBuildActivityRawChildDataset(BuildCtx & ctx, IHqlExpression * expr)
-{
-    //If it is possible to create a linked child rows we need to use a linked raw child dataset iterator - 
-    //otherwise the dataset may not be in the right format (and I can't work out how to efficiently force it otherwise.)
-    //If main rows are link counted then it is always going to be as good or better to generate a link counted raw iterator.
-    if (options.implicitLinkedChildRows || options.tempDatasetsUseLinkedRows)
-        return doBuildActivityLinkedRawChildDataset(ctx, expr);
-
-    StringBuffer s;
-    Owned<ActivityInstance> instance = new ActivityInstance(*this, ctx, TAKrawiterator, expr, "RawIterator");
-    buildActivityFramework(instance);
-
-    buildInstancePrefix(instance);
-
-    OwnedHqlExpr value = LINK(expr);
-    switch (value->getOperator())
-    {
-    case no_alias:
-    case no_left:
-    case no_right:
-    case no_id2blob:
-    case no_rows:
-        break;
-    case no_select:
-        if (!isNewSelector(expr))
-            break;
-        //fall through
-    default:
-        {
-            CHqlBoundExpr bound;
-            doBuildAliasValue(instance->onstartctx, value, bound);
-            value.setown(bound.getTranslatedExpr());
-            break;
-        }
-    }
-
-
-    //virtual void queryDataset(size_t & len, const void * & data)
-    BuildCtx funcctx(instance->startctx);
-    funcctx.addQuotedCompound("virtual void queryDataset(size32_t & len, const void * & data)");
-    CHqlBoundExpr boundValue;
-    buildExpr(funcctx, value, boundValue);
-
-    OwnedHqlExpr len = getBoundLength(boundValue);
-    generateExprCpp(s.clear().append("len = "), len).append(";");
-    funcctx.addQuoted(s);
-    OwnedHqlExpr addr = getPointer(boundValue.expr);
-    generateExprCpp(s.clear().append("data = "), addr).append(";");
-    funcctx.addQuoted(s);
-
-    buildInstanceSuffix(instance);
-    return instance->getBoundActivity();
-}
-
 //---------------------------------------------------------------------------
 
 static void gatherDedupCompareExpr(HqlExprArray & equalities, HqlExprArray & comparisons, HqlExprArray & conds, IHqlExpression * left, IHqlExpression * right, IHqlExpression * dataset)
@@ -14117,11 +14056,8 @@ ABoundActivity * HqlCppTranslator::doBuildActivityNormalizeChild(BuildCtx & ctx,
     IHqlExpression * transform = expr->queryChild(2);
     IHqlExpression * selSeq = querySelSeq(expr);
 
-    if (options.useLinkedNormalize)
-    {
-        if (transformReturnsSide(expr, no_right, 1))
-            return doBuildActivityNormalizeLinkedChild(ctx, expr);
-    }
+    if (transformReturnsSide(expr, no_right, 1))
+        return doBuildActivityNormalizeLinkedChild(ctx, expr);
 
     StringBuffer s;
     Owned<ABoundActivity> boundDataset = buildCachedActivity(ctx, dataset);
@@ -14136,7 +14072,7 @@ ABoundActivity * HqlCppTranslator::doBuildActivityNormalizeChild(BuildCtx & ctx,
 
     // INormalizeChildIterator * queryIterator();
     {
-        bool outOfLine = options.tempDatasetsUseLinkedRows;
+        bool outOfLine = true;
         if (childDataset->isDatarow())
             childDataset.setown(createDatasetFromRow(childDataset.getClear()));
         if (childDataset->getOperator() == no_select)
@@ -14341,36 +14277,7 @@ ABoundActivity * HqlCppTranslator::doBuildActivityNormalizeLinkedChild(BuildCtx
 
 ABoundActivity * HqlCppTranslator::doBuildActivitySelectNew(BuildCtx & ctx, IHqlExpression * expr)
 {
-    if (options.useLinkedNormalize)
-        return doBuildActivityNormalizeLinkedChild(ctx, expr);
-
-    bool isNew;
-    IHqlExpression * ds = querySelectorDataset(expr, isNew);
-//  if (!isContextDependent(ds) && !containsActiveDataset(ds))
-//      return doBuildActivityChildDataset(ctx, expr);
-    if (canEvaluateInline(&ctx, ds))
-        return doBuildActivityChildDataset(ctx, expr);
-
-    //Convert the ds.x to normalize(ds, left.x, transform(right));
-    OwnedHqlExpr selSeq = createSelectorSequence();
-    OwnedHqlExpr left = createSelector(no_left, ds, selSeq);
-    OwnedHqlExpr selector = replaceExpression(expr, ds, left);//createSelectExpr(LINK(left), LINK(field));
-    OwnedHqlExpr transformedExpr;
-    if (expr->isDatarow())
-    {
-        OwnedHqlExpr transform = createTransformFromRow(selector);
-        if (ds->isDatarow())
-            transformedExpr.setown(createRowF(no_projectrow, LINK(ds), LINK(transform), LINK(selSeq), NULL));
-        else
-            transformedExpr.setown(createDatasetF(no_hqlproject, LINK(ds), LINK(transform), LINK(selSeq), NULL));
-    }
-    else
-    {
-        OwnedHqlExpr right = createSelector(no_right, expr, selSeq);
-        OwnedHqlExpr transform = createTransformFromRow(right);
-        transformedExpr.setown(createDatasetF(no_normalize, LINK(ds), LINK(selector), LINK(transform), LINK(selSeq), NULL));        // MORE: UID
-    }
-    return buildActivity(ctx, transformedExpr, false);
+    return doBuildActivityNormalizeLinkedChild(ctx, expr);
 }
 
 
@@ -14611,7 +14518,6 @@ ABoundActivity * HqlCppTranslator::doBuildActivitySerialize(BuildCtx & ctx, IHql
 {
     IHqlExpression * dataset = expr->queryChild(0);
     bool serialize = (expr->getOperator() == no_serialize);
-    assertex(serialize);//Needs changing once interface has changed.
 
     Owned<ABoundActivity> boundDataset = buildCachedActivity(ctx, dataset);
     Owned<ActivityInstance> instance = new ActivityInstance(*this, ctx, TAKproject, expr, "Project");
@@ -14622,9 +14528,6 @@ ABoundActivity * HqlCppTranslator::doBuildActivitySerialize(BuildCtx & ctx, IHql
     BuildCtx funcctx(instance->startctx);
     funcctx.addQuotedCompound("virtual size32_t transform(ARowBuilder & crSelf, const void * _left)");
 
-    assertex(!options.limitMaxLength);      //need more thought
-
-
     // Bind left to "left" and right to RIGHT
     BoundRow * leftCursor = bindTableCursor(funcctx, dataset, "_left");
     BoundRow * selfCursor = bindSelf(funcctx, expr, "crSelf");
@@ -14632,7 +14535,7 @@ ABoundActivity * HqlCppTranslator::doBuildActivitySerialize(BuildCtx & ctx, IHql
     //MORE: I don't have any examples that trigger this code as far as I know...
     _ATOM func = serialize ? rtlSerializeToBuilderAtom : rtlDeserializeToBuilderAtom;
     _ATOM kind = serialize ? serializerAtom : deserializerAtom;
-    _ATOM serializeForm = serialize ? expr->queryChild(2)->queryName() : expr->queryChild(1)->queryName();
+    _ATOM serializeForm = serialize ? expr->queryChild(1)->queryName() : expr->queryChild(2)->queryName();
 
     IHqlExpression * record = expr->queryRecord();
     HqlExprArray args;

+ 0 - 2
ecl/hqlcpp/hqliproj.cpp

@@ -824,7 +824,6 @@ static unsigned getActivityCost(IHqlExpression * expr, ClusterType targetCluster
 {
     switch (targetClusterType)
     {
-    case ThorCluster:
     case ThorLCRCluster:
         {
             switch (expr->getOperator())
@@ -3147,7 +3146,6 @@ IHqlExpression * ImplicitProjectTransformer::process(IHqlExpression * expr)
     case HThorCluster:
         // same as roxie, but also maybe worth inserting projects to minimise the amount of data that is spilled.
         break;
-    case ThorCluster:
     case ThorLCRCluster:
         //worth inserting projects to reduce copying, spilling, but primarily data transfered between nodes.
         if (options.insertProjectCostLevel || options.optimizeSpills)

+ 3 - 3
ecl/hqlcpp/hqlnlp.cpp

@@ -987,10 +987,10 @@ IReferenceSelector * HqlCppTranslator::doBuildRowMatchAttr(BuildCtx & ctx, IHqlE
     IHqlExpression * record = expr->queryRecord();
     StringBuffer rowName;
     getUniqueId(rowName.append("row"));
-    //MORE: Production rows should be a linkable match row - would help in parsing.
+
     OwnedITypeInfo rowType = makeConstantModifier(makeRowReferenceType(record));
-    if (options.supportsLinkedChildRows)
-        rowType.setown(makeAttributeModifier(LINK(rowType), getLinkCountedAttr()));
+    rowType.setown(makeAttributeModifier(LINK(rowType), getLinkCountedAttr()));
+
     OwnedHqlExpr row = createVariable(rowName, rowType.getClear());
     ctx.addDeclare(row);
     ctx.addAssign(row, call);

+ 6 - 33
ecl/hqlcpp/hqlresource.cpp

@@ -528,17 +528,7 @@ IHqlExpression * CResourceOptions::createSpillName(bool isGraphResult)
     StringBuffer s;
     s.append("~spill::");
     getUniqueId(s);
-    if (!mangleSpillNameWithWuid)
-        return createConstant(s.str());
-    s.append("_");
-    if (filenameMangler)
-    {
-        s.append(filenameMangler);
-        return createConstant(s.str());
-    }
-
-    ITypeInfo * type = makeStringType(UNKNOWN_LENGTH, NULL, NULL);
-    return createValue(no_concat, type, createConstant(s.str()), createValue(no_wuid, LINK(type)));
+    return createConstant(s.str());
 }
 
 //---------------------------------------------------------------------------
@@ -1667,7 +1657,7 @@ bool ResourcerInfo::expandRatherThanSplit()
                 return false;
             if (!isNewSelector(expr))
             {
-                if (!options->useLinkedRawIterator || !hasLinkCountedModifier(expr))
+                if (!hasLinkCountedModifier(expr))
                     return false;
                 return true;
             }
@@ -1758,17 +1748,8 @@ EclResourcer::EclResourcer(IErrorReceiver * _errors, IConstWorkUnit * _wu, Clust
     insideNeverSplit = false;
     insideSteppedNeverSplit = false;
     sequential = false;
-    options.mangleSpillNameWithWuid = false;
     options.minimizeSpillSize = _translatorOptions.minimizeSpillSize;
 
-    bool wuidIsConstant = (targetClusterType == RoxieCluster) || !wu->getCloneable();
-    if (wuidIsConstant)
-    {
-        SCMStringBuffer wuNameText;
-        wu->getWuid(wuNameText);
-        options.filenameMangler.set(wuNameText.str());
-    }
-
     unsigned totalMemory = _translatorOptions.resourceMaxMemory ? _translatorOptions.resourceMaxMemory : DEFAULT_TOTAL_MEMORY;
     unsigned maxSockets = _translatorOptions.resourceMaxSockets ? _translatorOptions.resourceMaxSockets : DEFAULT_MAX_SOCKETS;
     unsigned maxActivities = _translatorOptions.resourceMaxActivities ? _translatorOptions.resourceMaxActivities : DEFAULT_MAX_ACTIVITIES;
@@ -1779,7 +1760,6 @@ EclResourcer::EclResourcer(IErrorReceiver * _errors, IConstWorkUnit * _wu, Clust
     resourceLimit->set(RESactivities, maxActivities);
     switch (targetClusterType)
     {
-    case ThorCluster:
     case ThorLCRCluster:
         resourceLimit->set(RESheavy, maxHeavy).set(REShashdist, maxDistribute);
         resourceLimit->set(RESmastersocket, maxSockets).set(RESslavememory,totalMemory);
@@ -1825,14 +1805,12 @@ EclResourcer::EclResourcer(IErrorReceiver * _errors, IConstWorkUnit * _wu, Clust
     options.useGraphResults = false;        // modified by later call
     options.groupedChildIterators = _translatorOptions.groupedChildIterators;
     options.allowSplitBetweenSubGraphs = false;//(targetClusterType == RoxieCluster);
-    options.supportsChildQueries = (targetClusterType != ThorCluster);
     options.clusterSize = clusterSize;
     options.preventKeyedSplit = _translatorOptions.preventKeyedSplit;
     options.preventSteppedSplit = _translatorOptions.preventSteppedSplit;
     options.minimizeSkewBeforeSpill = _translatorOptions.minimizeSkewBeforeSpill;
     options.expandSingleConstRow = true;
     options.createSpillAsDataset = _translatorOptions.optimizeSpillProject && (targetClusterType != HThorCluster);
-    options.useLinkedRawIterator = _translatorOptions.useLinkedRawIterator;
     options.combineSiblings = _translatorOptions.combineSiblingGraphs && (targetClusterType != HThorCluster) && (targetClusterType != RoxieCluster);
     options.optimizeSharedInputs = _translatorOptions.optimizeSharedGraphInputs && options.combineSiblings;
 }
@@ -2096,8 +2074,8 @@ protected:
 class EclChildSplitPointLocator : public EclHoistLocator
 {
 public:
-    EclChildSplitPointLocator(IHqlExpression * _original, HqlExprCopyArray & _selectors, HqlExprCopyArray & _originalMatches, HqlExprArray & _matches, BoolArray & _singleNode, BoolArray & _alwaysHoistMatches, bool _groupedChildIterators, bool _supportsChildQueries)
-    : EclHoistLocator(_originalMatches, _matches, _singleNode, _alwaysHoistMatches), selectors(_selectors), groupedChildIterators(_groupedChildIterators), supportsChildQueries(_supportsChildQueries)
+    EclChildSplitPointLocator(IHqlExpression * _original, HqlExprCopyArray & _selectors, HqlExprCopyArray & _originalMatches, HqlExprArray & _matches, BoolArray & _singleNode, BoolArray & _alwaysHoistMatches, bool _groupedChildIterators)
+    : EclHoistLocator(_originalMatches, _matches, _singleNode, _alwaysHoistMatches), selectors(_selectors), groupedChildIterators(_groupedChildIterators)
     { 
         original = _original;
         okToSelect = false; 
@@ -2147,10 +2125,7 @@ protected:
         if (executedOnce)
         {
             if (conditionalDepth != 0)
-            {
-                if (supportsChildQueries || canProcessInline(NULL, ds))
-                    alwaysHoist = false;
-            }
+                alwaysHoist = false;
         }
         return alwaysHoist;
     }
@@ -2499,7 +2474,6 @@ protected:
     bool gathered;
     bool groupedChildIterators;
     bool executedOnce;
-    bool supportsChildQueries;
 };
 
 
@@ -2507,7 +2481,7 @@ protected:
 void EclResourcer::gatherChildSplitPoints(IHqlExpression * expr, BoolArray & alwaysHoistChild, ResourcerInfo * info, unsigned first, unsigned last)
 {
     //NB: Don't call member functions to ensure correct nesting of transform mutexes.
-    EclChildSplitPointLocator locator(expr, activeSelectors, info->originalChildDependents, info->childDependents, info->childSingleNode, alwaysHoistChild, options.groupedChildIterators, options.supportsChildQueries);
+    EclChildSplitPointLocator locator(expr, activeSelectors, info->originalChildDependents, info->childDependents, info->childSingleNode, alwaysHoistChild, options.groupedChildIterators);
     unsigned max = expr->numChildren();
 
     //If child queries are supported then don't hoist the expressions if they might only be evaluated once
@@ -3749,7 +3723,6 @@ void EclResourcer::spotUnbalancedSplitters(HqlExprArray & exprs)
     {
     case HThorCluster:
         break;
-    case ThorCluster:
     case ThorLCRCluster:
         {
             //Thor only handles one graph at a time, so only walk expressions within a single graph.

+ 1 - 5
ecl/hqlcpp/hqlresource.ipp

@@ -56,22 +56,18 @@ public:
     bool     isChildQuery;
     bool     groupedChildIterators;
     bool     allowSplitBetweenSubGraphs;
-    bool     supportsChildQueries;
     bool     preventKeyedSplit;
     bool     preventSteppedSplit;
-    bool     mangleSpillNameWithWuid;
     bool     minimizeSkewBeforeSpill;
     bool     useMpForDistribute;
     bool     expandSingleConstRow;
     bool     createSpillAsDataset;
-    bool     useLinkedRawIterator;
     bool     optimizeSharedInputs;
     bool     combineSiblings;
 
     IHqlExpression * graphIdExpr;
     unsigned nextResult;
     unsigned clusterSize;
-    StringAttr filenameMangler;
     ClusterType targetClusterType;
 
     //Used
@@ -83,7 +79,7 @@ public:
     inline bool canSplit() const            { return targetClusterType != HThorCluster; }
     inline bool checkResources() const      { return isThorCluster(targetClusterType) && !isChildQuery; }
     inline bool targetRoxie() const         { return targetClusterType == RoxieCluster; }
-    inline bool targetThor() const          { return targetClusterType == ThorCluster || targetClusterType == ThorLCRCluster; }
+    inline bool targetThor() const          { return targetClusterType == ThorLCRCluster; }
 };
 
 struct CResources : public CInterface

+ 8 - 19
ecl/hqlcpp/hqlsource.cpp

@@ -941,7 +941,7 @@ void SourceBuilder::analyse(IHqlExpression * expr)
             break;
         }
     case no_stepped:
-        if ((translator.getTargetClusterType() == ThorCluster) && translator.queryOptions().checkThorRestrictions)
+        if ((translator.getTargetClusterType() == ThorLCRCluster) && translator.queryOptions().checkThorRestrictions)
             throwError(HQLERR_ThorNotSupportStepping);
         if (steppedExpr)
             throwError(HQLERR_MultipleStepped);
@@ -2821,14 +2821,6 @@ void DiskReadBuilder::buildTransform(IHqlExpression * expr)
 
         unsigned maxColumns = countTotalFields(tableExpr->queryRecord(), false);
         translator.doBuildUnsignedFunction(instance->classctx, "getMaxColumns", maxColumns);
-
-        if (!translator.queryOptions().supportDynamicRows)
-        {
-            unsigned csvMax = translator.getCsvMaxLength(mode);
-            unsigned rowMax = translator.getMaxRecordSize(tableExpr->queryRecord());
-            if (rowMax > csvMax)
-                translator.WARNINGAT2(queryLocation(expr), HQLWRN_CsvMaxLengthMismatch, rowMax, csvMax);
-        }
         return;
     }
 
@@ -3911,17 +3903,14 @@ void MonitorExtractor::expandSelects(IHqlExpression * expr, IHqlSimpleScope * ex
 
 void MonitorExtractor::buildKeySegmentInExpr(BuildMonitorState & buildState, KeySelectorInfo & selectorInfo, BuildCtx & ctx, const char * target, IHqlExpression & thisKey, MonitorFilterKind filterKind)
 {
-    if (translator.queryOptions().optimizeInSegmentMonitor)
+    //Generally this slightly increases the code size, but reduces the number of
+    //temporary sets which is generally more efficient.
+    OwnedHqlExpr simplified = querySimplifyInExpr(&thisKey);
+    if (simplified)
     {
-        //Generally this slightly increases the code size, but reduces the number of
-        //temporary sets which is generally more efficient.
-        OwnedHqlExpr simplified = querySimplifyInExpr(&thisKey);
-        if (simplified)
-        {
-            OwnedHqlExpr folded = foldHqlExpression(simplified);
-            buildKeySegmentExpr(buildState, selectorInfo, ctx, target, *folded, filterKind);
-            return;
-        }
+        OwnedHqlExpr folded = foldHqlExpression(simplified);
+        buildKeySegmentExpr(buildState, selectorInfo, ctx, target, *folded, filterKind);
+        return;
     }
 
     IHqlExpression * expandedSelector = selectorInfo.expandedSelector;

+ 4 - 20
ecl/hqlcpp/hqltcppc.cpp

@@ -577,9 +577,6 @@ void CMemberInfo::gatherMaxRowSize(SizeStruct & totalSize, IHqlExpression * newS
 
 void CMemberInfo::checkAssignOk(HqlCppTranslator & translator, BuildCtx & ctx, IReferenceSelector * selector, IHqlExpression * newSize, unsigned fixedExtra)
 {
-    if (!translator.checkForRowOverflow())
-        return;
-
     //If no size beyond the constant value then this can't be increasing the size of the row => no need to check
     if (matchesConstantValue(newSize, 0))
         return;
@@ -608,9 +605,6 @@ void CMemberInfo::checkAssignOk(HqlCppTranslator & translator, BuildCtx & ctx, I
     {
         unsigned maxRowSize = row->getMaxSize();
         unsigned fixedSize = totalSize.getFixedSize();
-        bool supportDynamicRows = translator.queryOptions().supportDynamicRows;
-        if (!supportDynamicRows && (fixedSize > maxRowSize))
-            translator.throwError2(HQLERR_RowTooLarge, fixedSize, maxRowSize);
 
         //This removes calls that can be constant folded - a bit confusing in the generated code sometimes..
         if (!row->queryBuilder() && !totalSize.queryVarSize())
@@ -622,13 +616,7 @@ void CMemberInfo::checkAssignOk(HqlCppTranslator & translator, BuildCtx & ctx, I
         if (value)
         {
             unsigned constSize = (unsigned)value->getIntValue();
-            if (!supportDynamicRows)
-            {
-                if (constSize > maxRowSize)
-                    translator.throwError2(HQLERR_RowTooLarge, constSize, maxRowSize);
-                return;
-            }
-            else if (constSize <= getMinRecordSize(row->queryRecord()))
+            if (constSize <= getMinRecordSize(row->queryRecord()))
                 return;
         }
 
@@ -991,9 +979,8 @@ void CContainerInfo::setRow(HqlCppTranslator & translator, BuildCtx & ctx, IRefe
 
     //If copying from one identical record to another then the source record must be large enough,
     //so only need to check it it is a child record....
-    if (!cachedSize.isFixedSize() && (container || translator.queryOptions().supportDynamicRows))
+    if (!cachedSize.isFixedSize())
     {
-        //Note - if we are cop
         OwnedHqlExpr translatedLength = length.getTranslatedExpr();
         checkAssignOk(translator, ctx, selector, translatedLength, 0);
     }
@@ -2709,10 +2696,7 @@ IHqlExpression * CXmlColumnInfo::getXmlDatasetExpr(HqlCppTranslator & translator
     //Create the builder for generating a temporary set.
     IHqlExpression * record = expr->queryRecord();
     Owned<IHqlCppDatasetBuilder> builder;
-    if (recordRequiresLinkCount(expr->queryRecord()) || translator.queryOptions().tempDatasetsUseLinkedRows)
-        builder.setown(translator.createLinkedDatasetBuilder(record));
-    else
-        builder.setown(translator.createBlockedDatasetBuilder(record));
+    builder.setown(translator.createLinkedDatasetBuilder(record));
     builder->buildDeclare(ctx);
 
     //Generate the code to process a child iterator
@@ -3443,7 +3427,7 @@ IHqlExpression * SerializationRow::ensureSerialized(IHqlExpression * path, IHqlE
     Owned<ITypeInfo> unqualifiedType = getFullyUnqualifiedType(pathType);
     Owned<ITypeInfo> serializeType = cloneEssentialFieldModifiers(pathType, unqualifiedType);
     if (colocal && path->isDataset() && 
-        (hasLinkedRow(pathType) || (hasOutOfLineModifier(pathType) && translator.queryOptions().tempDatasetsUseLinkedRows)))
+        (hasLinkedRow(pathType) || hasOutOfLineModifier(pathType)))
         serializeType.setown(setLinkCountedAttr(serializeType, true));
     return addSerializedValue(path, serializeType, colocal, isConditional);
 }

+ 1 - 8
ecl/hqlcpp/hqlttcpp.cpp

@@ -4215,7 +4215,6 @@ bool CompoundSourceTransformer::needToCloneLimit(IHqlExpression * expr, node_ope
         return false;
     case HThorCluster:
         return (sourceOp != no_compound_indexread) || (op != no_limit);
-    case ThorCluster:
     case ThorLCRCluster:
         return true;
     default:
@@ -10127,7 +10126,6 @@ HqlTreeNormalizer::HqlTreeNormalizer(HqlCppTranslator & _translator) : NewHqlTra
     const HqlCppOptions & translatorOptions = translator.queryOptions();
     options.removeAsserts = !translatorOptions.checkAsserts;
     options.commonUniqueNameAttributes = translatorOptions.commonUniqueNameAttributes;
-    options.simplifySelectorSequence = !translatorOptions.preserveUniqueSelector && !translatorOptions.detectAmbiguousSelector && !translatorOptions.allowAmbiguousSelector;
     options.sortIndexPayload = translatorOptions.sortIndexPayload;
     options.allowSections = translatorOptions.allowSections;
     options.normalizeExplicitCasts = translatorOptions.normalizeExplicitCasts;
@@ -10136,7 +10134,6 @@ HqlTreeNormalizer::HqlTreeNormalizer(HqlCppTranslator & _translator) : NewHqlTra
     options.constantFoldNormalize = translatorOptions.constantFoldNormalize;
     options.allowActivityForKeyedJoin = translatorOptions.allowActivityForKeyedJoin;
     options.implicitShuffle = translatorOptions.implicitBuildIndexShuffle;
-    options.transformCaseToChoose = translatorOptions.transformCaseToChoose;
     errors = translator.queryErrors();
     nextSequenceValue = 1;
 }
@@ -10486,7 +10483,7 @@ IHqlExpression * HqlTreeNormalizer::transformCaseToChoose(IHqlExpression * expr)
     //For the moment only convert datasets to choose format.  (Partly to test implementation.)
     //Datarows are unlikely to benefit, and will cause additional work.
     //Converting actions has implications for needing new activity kinds, and support in thor.
-    if (!expr->isDataset() || !options.transformCaseToChoose)
+    if (!expr->isDataset())
         return transformCaseToIfs(expr);
 
     unsigned max = numRealChildren(expr);
@@ -11905,10 +11902,6 @@ IHqlExpression * HqlTreeNormalizer::createTransformedBody(IHqlExpression * expr)
 #ifdef USE_SELSEQ_UID
             if (name == _selectorSequence_Atom)
             {
-                //Purely for testing what effect adding the unique sequences has on the parse time
-                if (options.simplifySelectorSequence)
-                    return createDummySelectorSequence();
-
                 //Ensure parameterised sequences generate a unique sequence number...
                 //Not sure the following is really necessary, but will reduce in memory tree size....
                 //also saves complications from having weird attributes in the tree

+ 0 - 2
ecl/hqlcpp/hqlttcpp.ipp

@@ -1187,7 +1187,6 @@ protected:
     {
         bool removeAsserts;
         bool commonUniqueNameAttributes;
-        bool simplifySelectorSequence;
         bool sortIndexPayload;
         bool allowSections;
         bool normalizeExplicitCasts;
@@ -1196,7 +1195,6 @@ protected:
         bool constantFoldNormalize;
         bool allowActivityForKeyedJoin;
         bool implicitShuffle;
-        bool transformCaseToChoose;
     } options;
     unsigned nextSequenceValue;
     bool seenForceLocal;

+ 0 - 44
ecl/hthor/hthor.cpp

@@ -7381,49 +7381,6 @@ void CHThorChildIteratorActivity::ready()
 
 //=====================================================================================================
 
-CHThorRawIteratorActivity::CHThorRawIteratorActivity(IAgentContext &_agent, unsigned _activityId, unsigned _subgraphId, IHThorRawIteratorArg &_arg, ThorActivityKind _kind) : CHThorSimpleActivityBase(_agent, _activityId, _subgraphId, _arg, _kind), helper(_arg), recordSize(outputMeta)
-{
-    bufferStream.setown(createMemoryBufferSerialStream(resultBuffer));
-    rowSource.setStream(bufferStream);
-}
-
-void CHThorRawIteratorActivity::ready()
-{
-    CHThorSimpleActivityBase::ready();
-    grouped = outputMeta.isGrouped();
-    size32_t lenData = 0;
-    const void * data = NULL;
-    helper.queryDataset(lenData, data);
-    resultBuffer.setBuffer(lenData, const_cast<void *>(data), false);
-    eogPending = false;
-    rowDeserializer.setown(rowAllocator->createDiskDeserializer(agent.queryCodeContext()));
-}
-
-void CHThorRawIteratorActivity::done()
-{
-    resultBuffer.resetBuffer();
-    CHThorSimpleActivityBase::done();
-}
-
-
-const void * CHThorRawIteratorActivity::nextInGroup()
-{
-    if (rowSource.eos())
-        return NULL;
-    if (eogPending)
-    {
-        eogPending = false;
-        return NULL;
-    }
-    RtlDynamicRowBuilder rowBuilder(rowAllocator);
-    size32_t newSize = rowDeserializer->deserialize(rowBuilder, rowSource); 
-    
-    if (outputMeta.isGrouped())
-        rowSource.read(sizeof(bool), &eogPending);
-    processed++;
-    return rowBuilder.finalizeRowClear(newSize);                
-}
-//=====================================================================================================
 CHThorLinkedRawIteratorActivity::CHThorLinkedRawIteratorActivity(IAgentContext &_agent, unsigned _activityId, unsigned _subgraphId, IHThorLinkedRawIteratorArg &_arg, ThorActivityKind _kind) 
     : CHThorSimpleActivityBase(_agent, _activityId, _subgraphId, _arg, _kind), helper(_arg)
 {
@@ -9923,7 +9880,6 @@ MAKEFACTORY(RollupGroup)
 MAKEFACTORY(Regroup)
 MAKEFACTORY(CombineGroup)
 MAKEFACTORY(Case)
-MAKEFACTORY(RawIterator)
 MAKEFACTORY(LinkedRawIterator)
 MAKEFACTORY(GraphLoop)
 MAKEFACTORY(Loop)

+ 0 - 1
ecl/hthor/hthor.hpp

@@ -188,7 +188,6 @@ extern HTHOR_API IHThorActivity *createCombineGroupActivity(IAgentContext &, uns
 extern HTHOR_API IHThorActivity *createLoopActivity(IAgentContext &, unsigned _activityId, unsigned _subgraphId, IHThorLoopArg &arg, ThorActivityKind kind);
 extern HTHOR_API IHThorActivity *createGraphLoopActivity(IAgentContext &, unsigned _activityId, unsigned _subgraphId, IHThorGraphLoopArg &arg, ThorActivityKind kind);
 extern HTHOR_API IHThorActivity *createCaseActivity(IAgentContext &, unsigned _activityId, unsigned _subgraphId, IHThorCaseArg &arg, ThorActivityKind kind);
-extern HTHOR_API IHThorActivity *createRawIteratorActivity(IAgentContext &, unsigned _activityId, unsigned _subgraphId, IHThorRawIteratorArg &arg, ThorActivityKind kind);
 extern HTHOR_API IHThorActivity *createLinkedRawIteratorActivity(IAgentContext &, unsigned _activityId, unsigned _subgraphId, IHThorLinkedRawIteratorArg &arg, ThorActivityKind kind);
 extern HTHOR_API IHThorActivity *createProcessActivity(IAgentContext &, unsigned _activityId, unsigned _subgraphId, IHThorProcessArg &arg, ThorActivityKind kind);
 extern HTHOR_API IHThorActivity *createLibraryCallActivity(IAgentContext &_agent, unsigned _activityId, unsigned _subgraphId, IHThorLibraryCallArg &arg, ThorActivityKind kind, IPropertyTree * node);

+ 0 - 21
ecl/hthor/hthor.ipp

@@ -1605,27 +1605,6 @@ public:
 };
 
 
-class CHThorRawIteratorActivity : public CHThorSimpleActivityBase
-{
-    IHThorRawIteratorArg &helper;
-    CachedRecordSize recordSize;
-    bool eogPending;
-    bool grouped;
-    Owned<IOutputRowDeserializer> rowDeserializer;  
-    MemoryBuffer resultBuffer;
-    Owned<ISerialStream> bufferStream;
-    CThorStreamDeserializerSource rowSource;
-
-public:
-    CHThorRawIteratorActivity(IAgentContext &agent, unsigned _activityId, unsigned _subgraphId, IHThorRawIteratorArg &_arg, ThorActivityKind _kind);
-    virtual bool needsAllocator() const { return true; }    
-
-    //interface IHThorInput
-    virtual const void *nextInGroup();
-    virtual void ready();
-    virtual void done();
-};
-
 class CHThorLinkedRawIteratorActivity : public CHThorSimpleActivityBase
 {
     IHThorLinkedRawIteratorArg &helper;

+ 0 - 2
roxie/ccd/ccdquery.cpp

@@ -492,8 +492,6 @@ protected:
             return createRoxieServerPipeWriteActivityFactory(id, subgraphId, *this, helperFactory, kind, usageCount(node), isRootAction(node));
         case TAKpull:
             throwUnexpected(); //code generator strips for non-thor
-        case TAKrawiterator:
-            return createRoxieServerRawIteratorActivityFactory(id, subgraphId, *this, helperFactory, kind);
         case TAKlinkedrawiterator:
             return createRoxieServerLinkedRawIteratorActivityFactory(id, subgraphId, *this, helperFactory, kind);
         case TAKremoteresult:

+ 0 - 97
roxie/ccd/ccdserver.cpp

@@ -4991,103 +4991,6 @@ IRoxieServerActivityFactory *createRoxieServerNewChildThroughNormalizeActivityFa
 
 //=================================================================================
 
-class CRoxieServerRawIteratorActivity : public CRoxieServerActivity
-{
-    IHThorRawIteratorArg &helper;
-    bool eogPending;
-    bool eof;
-    Owned<IOutputRowDeserializer> rowDeserializer;
-    MemoryBuffer tempRowBuffer;     
-    Owned<ISerialStream> bufferStream;
-    CThorStreamDeserializerSource rowSource;
-
-public:
-    CRoxieServerRawIteratorActivity(const IRoxieServerActivityFactory *_factory, IProbeManager *_probeManager)
-        : CRoxieServerActivity(_factory, _probeManager), helper((IHThorRawIteratorArg &) basehelper)
-    {
-        bufferStream.setown(createMemoryBufferSerialStream(tempRowBuffer));
-        rowSource.setStream(bufferStream);
-        eogPending = false;
-        eof = false;
-    }
-
-    virtual bool needsAllocator() const { return true; }
-
-    virtual void onCreate(IRoxieSlaveContext *_ctx, IHThorArg *_colocalParent)
-    {
-        CRoxieServerActivity::onCreate(_ctx, _colocalParent);
-        rowDeserializer.setown(rowAllocator->createDiskDeserializer(ctx->queryCodeContext()));
-    }
-
-    virtual void start(unsigned parentExtractSize, const byte *parentExtract, bool paused)
-    {
-        eogPending = false;
-        eof = false;
-        CRoxieServerActivity::start(parentExtractSize, parentExtract, paused);
-        size32_t lenData = 0;
-        const void * data = NULL;
-        helper.queryDataset(lenData, data);
-        tempRowBuffer.setBuffer(lenData, const_cast<void *>(data), false);
-    }
-
-    virtual void reset()
-    {
-        tempRowBuffer.resetBuffer();
-        CRoxieServerActivity::reset();
-    }
-
-    virtual const void *nextInGroup()
-    {
-        ActivityTimer t(totalCycles, timeActivities, ctx->queryDebugContext());
-        if (eof)
-            return NULL;
-        if (rowSource.eos())
-        {
-            eof = true;
-            return NULL;
-        }
-        if (eogPending)
-        {
-            eogPending = false;
-            return NULL;
-        }
-
-        RtlDynamicRowBuilder rowBuilder(rowAllocator);
-        size32_t size = rowDeserializer->deserialize(rowBuilder, rowSource);
-        if (meta.isGrouped())
-            rowSource.read(sizeof(bool), &eogPending);
-        processed++;
-        return rowBuilder.finalizeRowClear(size);
-    }
-
-};
-
-class CRoxieServerRawIteratorActivityFactory : public CRoxieServerActivityFactory
-{
-public:
-    CRoxieServerRawIteratorActivityFactory(unsigned _id, unsigned _subgraphId, IQueryFactory &_queryFactory, HelperFactory *_helperFactory, ThorActivityKind _kind)
-        : CRoxieServerActivityFactory(_id, _subgraphId, _queryFactory, _helperFactory, _kind)
-    {
-    }
-
-    virtual IRoxieServerActivity *createActivity(IProbeManager *_probeManager) const
-    {
-        return new CRoxieServerRawIteratorActivity(this, _probeManager);
-    }
-
-    virtual void setInput(unsigned idx, unsigned source, unsigned sourceidx)
-    {
-        throw MakeStringException(ROXIE_SET_INPUT, "Internal error: setInput() should not be called for %s activity", getActivityText(kind));
-    }
-};
-
-IRoxieServerActivityFactory *createRoxieServerRawIteratorActivityFactory(unsigned _id, unsigned _subgraphId, IQueryFactory &_queryFactory, HelperFactory *_helperFactory, ThorActivityKind _kind)
-{
-    return new CRoxieServerRawIteratorActivityFactory(_id, _subgraphId, _queryFactory, _helperFactory, _kind);
-}
-
-//=================================================================================
-
 class CRoxieServerLinkedRawIteratorActivity : public CRoxieServerActivity
 {
     IHThorLinkedRawIteratorArg &helper;

+ 0 - 1
roxie/ccd/ccdserver.hpp

@@ -405,7 +405,6 @@ extern IRoxieServerActivityFactory *createRoxieServerSoapRowCallActivityFactory(
 extern IRoxieServerActivityFactory *createRoxieServerSoapRowActionActivityFactory(unsigned _id, unsigned _subgraphId, IQueryFactory &_queryFactory, HelperFactory *_helperFactory, ThorActivityKind _kind, bool _isRoot);
 extern IRoxieServerActivityFactory *createRoxieServerSoapDatasetCallActivityFactory(unsigned _id, unsigned _subgraphId, IQueryFactory &_queryFactory, HelperFactory *_helperFactory, ThorActivityKind _kind);
 extern IRoxieServerActivityFactory *createRoxieServerSoapDatasetActionActivityFactory(unsigned _id, unsigned _subgraphId, IQueryFactory &_queryFactory, HelperFactory *_helperFactory, ThorActivityKind _kind, bool _isRoot);
-extern IRoxieServerActivityFactory *createRoxieServerRawIteratorActivityFactory(unsigned _id, unsigned _subgraphId, IQueryFactory &_queryFactory, HelperFactory *_helperFactory, ThorActivityKind _kind);
 extern IRoxieServerActivityFactory *createRoxieServerLinkedRawIteratorActivityFactory(unsigned _id, unsigned _subgraphId, IQueryFactory &_queryFactory, HelperFactory *_helperFactory, ThorActivityKind _kind);
 
 extern IRoxieServerActivityFactory *createRoxieServerNWayGraphLoopResultReadActivityFactory(unsigned _id, unsigned _subgraphId, IQueryFactory &_queryFactory, HelperFactory *_helperFactory, ThorActivityKind _kind, unsigned graphId);

+ 2 - 3
rtl/include/eclhelper.hpp

@@ -39,8 +39,8 @@ if the supplied pointer was not from the roxiemem heap. Usually an OwnedRoxieStr
 
 //Should be incremented whenever the virtuals in the context or a helper are changed, so
 //that a work unit can't be rerun.  Try as hard as possible to retain compatibility.
-#define ACTIVITY_INTERFACE_VERSION      143
-#define MIN_ACTIVITY_INTERFACE_VERSION  143             //minimum value that is compatible with current interface - without using selectInterface
+#define ACTIVITY_INTERFACE_VERSION      144
+#define MIN_ACTIVITY_INTERFACE_VERSION  144             //minimum value that is compatible with current interface - without using selectInterface
 
 typedef unsigned char byte;
 
@@ -800,7 +800,6 @@ enum ThorActivityKind
     TAKchildcase,
     TAKremotegraph,
     TAKlibrarycall,
-    TAKrawiterator,
     TAKlocalstreamread,
     TAKprocess,
     TAKgraphloop,

+ 0 - 69
thorlcr/activities/iterate/thiterateslave.cpp

@@ -337,75 +337,6 @@ public:
     }
 };
 
-//=====================================================================================================
-
-class CRawIteratorSlaveActivity : public CSlaveActivity, public CThorDataLink
-{
-    IHThorRawIteratorArg *helper;
-    MemoryBuffer resultBuffer;
-    Owned<ISerialStream> bufferStream;
-    CThorStreamDeserializerSource rowSource;
-    bool eogPending, grouped;
-
-public:
-    IMPLEMENT_IINTERFACE_USING(CSimpleInterface);
-
-    CRawIteratorSlaveActivity(CGraphElementBase *_container) : CSlaveActivity(_container), CThorDataLink(this)
-    {
-        bufferStream.setown(createMemoryBufferSerialStream(resultBuffer));
-        rowSource.setStream(bufferStream);
-    }
-    virtual void init(MemoryBuffer &data, MemoryBuffer &slaveData)
-    {
-        appendOutputLinked(this);   // adding 'me' to outputs array
-        helper = (IHThorRawIteratorArg *)queryHelper();
-        grouped = helper->queryOutputMeta()->isGrouped(); // JCSMORE->GH - shouldn't this match graph info (it doesn't in groupchild.ecl)
-    }
-    virtual void start()
-    {
-        ActivityTimer s(totalCycles, timeActivities, NULL);
-        dataLinkStart("RAWITERATOR", container.queryId());
-        eogPending = false;
-        size32_t len;
-        const void *data;
-        helper->queryDataset(len, data);
-        resultBuffer.setBuffer(len, const_cast<void *>(data), false);
-    }
-    virtual void stop()
-    {
-        dataLinkStop();
-    }
-    CATCH_NEXTROW()
-    {
-        ActivityTimer t(totalCycles, timeActivities, NULL);
-
-        if (rowSource.eos())
-            return NULL;
-        if (eogPending)
-        {
-            eogPending = false;
-            return NULL;
-        }
-        RtlDynamicRowBuilder rowBuilder(queryRowAllocator());
-        size32_t sz = queryRowDeserializer()->deserialize(rowBuilder, rowSource);   
-        if (grouped)
-            rowSource.read(sizeof(bool), &eogPending);
-        dataLinkIncrement();
-        return rowBuilder.finalizeRowClear(sz);
-    }
-    bool isGrouped() { return grouped; } // JCSMORE - see note above
-    virtual void getMetaInfo(ThorDataLinkMetaInfo &info)
-    {
-        initMetaInfo(info);
-    }
-};
-
-CActivityBase *createRawIteratorSlave(CGraphElementBase *container)
-{
-    return new CRawIteratorSlaveActivity(container);
-}
-
-
 class CLinkedRawIteratorSlaveActivity : public CSlaveActivity, public CThorDataLink
 {
     // only for toplevel activity 

+ 0 - 1
thorlcr/activities/iterate/thiterateslave.ipp

@@ -27,7 +27,6 @@ activityslaves_decl CActivityBase *createIterateSlave(CGraphElementBase *contain
 activityslaves_decl CActivityBase *createLocalIterateSlave(CGraphElementBase *container);
 
 activityslaves_decl CActivityBase *createChildIteratorSlave(CGraphElementBase *container);
-activityslaves_decl CActivityBase *createRawIteratorSlave(CGraphElementBase *container);
 activityslaves_decl CActivityBase *createLinkedRawIteratorSlave(CGraphElementBase *container);
 
 activityslaves_decl CActivityBase *createProcessSlave(CGraphElementBase *container);

+ 0 - 1
thorlcr/graph/thgraph.cpp

@@ -955,7 +955,6 @@ bool isGlobalActivity(CGraphElementBase &container)
         case TAKsoap_rowaction:
         case TAKsoap_datasetdataset:
         case TAKsoap_datasetaction:
-        case TAKrawiterator:
         case TAKlinkedrawiterator:
         case TAKchilditerator:
         case TAKstreamediterator:

+ 0 - 1
thorlcr/master/thactivitymaster.cpp

@@ -119,7 +119,6 @@ public:
             case TAKprefetchcountproject:
             case TAKxmlparse:
             case TAKchilditerator:
-            case TAKrawiterator:
             case TAKlinkedrawiterator:
             case TAKcatch:
             case TAKsample:

+ 0 - 3
thorlcr/slave/slave.cpp

@@ -547,9 +547,6 @@ public:
             case TAKchilditerator:
                 ret = createChildIteratorSlave(this);
                 break;
-            case TAKrawiterator:
-                ret = createRawIteratorSlave(this);
-                break;
             case TAKlinkedrawiterator:
                 ret = createLinkedRawIteratorSlave(this);
                 break;