浏览代码

Merge pull request #13284 from jakesmith/hpcc-23320

HPCC-23320 GRAPH results container created in wrong graph

Reviewed-by: Gavin Halliday <ghalliday@hpccsystems.com>
Gavin Halliday 5 年之前
父节点
当前提交
b39d2e1b0a

+ 44 - 0
testing/regress/ecl/graphdepresult.ecl

@@ -0,0 +1,44 @@
+/*##############################################################################
+
+    HPCC SYSTEMS software Copyright (C) 2019 HPCC Systems®.
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+############################################################################## */
+
+namesRec := RECORD
+ STRING20 lname;
+ STRING10 fname;
+ UNSIGNED2 age := 25;
+ UNSIGNED2 ctr := 0;
+END;
+
+namesTable2 := DATASET([{'Flintstone','Fred',35},
+ {'Flintstone','Wilma',33},
+ {'Jetson','Georgie',10},
+ {'Mr. T','Z-man'}], namesRec);
+
+loopBody(SET OF DATASET(namesRec) ds, UNSIGNED4 c) := FUNCTION
+
+ maxAge := MAX(ds[c-1], age);
+
+ RETURN PROJECT(ds[c-1], //ds[0]=original input
+         TRANSFORM(namesRec,
+                   SELF.age := LEFT.age+c; //c is graph COUNTER
+                   SELF.ctr := COUNTER+maxAge;
+                   //PROJECT's COUNTER
+                   SELF := LEFT));
+
+END;
+
+g1 := GRAPH(namesTable2,3,loopBody(ROWSET(LEFT),COUNTER));
+OUTPUT(g1);

+ 6 - 0
testing/regress/ecl/key/graphdepresult.xml

@@ -0,0 +1,6 @@
+<Dataset name='Result 1'>
+ <Row><lname>Flintstone          </lname><fname>Fred      </fname><age>41</age><ctr>39</ctr></Row>
+ <Row><lname>Flintstone          </lname><fname>Wilma     </fname><age>39</age><ctr>40</ctr></Row>
+ <Row><lname>Jetson              </lname><fname>Georgie   </fname><age>16</age><ctr>41</ctr></Row>
+ <Row><lname>Mr. T               </lname><fname>Z-man     </fname><age>31</age><ctr>42</ctr></Row>
+</Dataset>

+ 1 - 1
thorlcr/activities/loop/thloopslave.cpp

@@ -513,7 +513,7 @@ public:
             for (; loopCounter<=maxIterations; loopCounter++)
             {
                 unsigned condLoopCounter = (helper->getFlags() & IHThorGraphLoopArg::GLFcounter) ? loopCounter : 0;
-                Owned<IThorGraphResults> results = queryGraph().createThorGraphResults(1);
+                Owned<IThorGraphResults> results = boundGraph->queryGraph()->createThorGraphResults(1);
                 if (condLoopCounter)
                     boundGraph->prepareCounterResult(*this, results, condLoopCounter, 0);
                 sendLoopingCount(loopCounter, 0);