Explorar o código

Merge branch 'candidate-6.4.x' into candidate-7.0.x

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman %!s(int64=6) %!d(string=hai) anos
pai
achega
f56a3f048e

+ 1 - 1
testing/regress/ecl/process.ecl

@@ -43,7 +43,7 @@ seed100 := dataset([{'',1,0},{'',2,0},{'',3,0},{'',4,0},{'',5,0},{'',6,0},{'',7,
                     {'',21,0},{'',22,0},{'',23,0},{'',24,0},{'',25,0},{'',26,0},{'',27,0},{'',28,0},{'',29,0},{'',30,0},
                     {'',31,0},{'',32,0},{'',33,0},{'',34,0},{'',35,0},{'',36,0},{'',37,0},{'',38,0},{'',39,0},{'',40,0},
                     {'',41,0},{'',42,0},{'',43,0},{'',44,0},{'',45,0},{'',46,0},{'',47,0},{'',48,0},{'',49,0},{'',50,0}
-                   ], rec);
+                   ], rec, DISTRIBUTED);
 
 //#########################################
 //All TRANSFORMs 

+ 9 - 5
thorlcr/activities/iterate/thiterateslave.cpp

@@ -28,7 +28,7 @@ class IterateSlaveActivityBase : public CSlaveActivity
 
     OwnedConstThorRow first;
 protected:
-    Owned<IThorRowInterfaces> inrowif;
+    IThorRowInterfaces *inrowif = nullptr;
     bool global;
     bool eof, nextPut;
     rowcount_t count;
@@ -69,7 +69,7 @@ public:
             if (prev)
             {
                 CMemoryRowSerializer msz(msg);
-                ::queryRowSerializer(input)->serialize(msz, (const byte *)prev);
+                inrowif->queryRowSerializer()->serialize(msz, (const byte *)prev);
             }
             if (!queryJobChannel().queryJobComm().send(msg, queryJobChannel().queryMyRank()+1, mpTag)) // to next
                 return;
@@ -86,7 +86,6 @@ public:
         }
         count = 0;
         eof = nextPut = false;
-        inrowif.set(::queryRowInterfaces(queryInput(0)));
     }
     virtual void stop() override
     {
@@ -111,6 +110,7 @@ public:
         : IterateSlaveActivityBase(_container,_global)
     {
         helper = static_cast <IHThorIterateArg *> (queryHelper());
+        inrowif = this;
     }
     virtual void start() override
     {
@@ -184,14 +184,18 @@ class CProcessSlaveActivity : public IterateSlaveActivityBase
     OwnedConstThorRow left;
     OwnedConstThorRow right;
     OwnedConstThorRow nextright;
-    Owned<IEngineRowAllocator> rightRowAllocator;
+    Owned<IThorRowInterfaces> rightOutputRowIf;
+    IEngineRowAllocator *rightRowAllocator = nullptr;
+
 public:
 
     CProcessSlaveActivity(CGraphElementBase *_container, bool _global) 
         : IterateSlaveActivityBase(_container,_global)
     {
         helper = static_cast <IHThorProcessArg *> (queryHelper());
-        rightRowAllocator.setown(getRowAllocator(helper->queryRightRecordSize()));
+        rightOutputRowIf.setown(createRowInterfaces(helper->queryRightRecordSize()));
+        inrowif = rightOutputRowIf;
+        rightRowAllocator = rightOutputRowIf->queryRowAllocator();
     }
     CATCH_NEXTROW()
     {