Преглед на файлове

Merge pull request #4241 from richardkchapman/throughspill-canmatchany

HPCC-9076 Attempt to read temp file that has not yet been registered

Reviewed-by: Gavin Halliday <ghalliday@hpccsystems.com>
Gavin Halliday преди 12 години
родител
ревизия
ab3e97695f
променени са 5 файла, в които са добавени 29 реда и са изтрити 2 реда
  1. 6 2
      ecl/eclagent/eclgraph.cpp
  2. 5 0
      testing/ecl/key/throughspill.xml
  3. 5 0
      testing/ecl/key/throughspill2.xml
  4. 6 0
      testing/ecl/throughspill.ecl
  5. 7 0
      testing/ecl/throughspill2.ecl

+ 6 - 2
ecl/eclagent/eclgraph.cpp

@@ -595,6 +595,9 @@ bool EclGraphElement::prepare(IAgentContext & agent, const byte * parentExtract,
                     return branches.item(whichBranch).prepare(agent, parentExtract, checkDependencies);
                 return true;
             }
+#if 0
+        // This may feel like a worthwhile opimization, but it causes issues with through spill activities.
+        // Unless/until through spill activities get replaced by splitters, this code should be disabled
         case TAKfilter:
         case TAKfiltergroup:
         case TAKfilterproject:
@@ -622,9 +625,10 @@ bool EclGraphElement::prepare(IAgentContext & agent, const byte * parentExtract,
                 }
                 break;
             }
+#endif
 #if 1
         //This doesn't really work - we really need to switch over to a similar create(),start()/stop(),reset() structure as roxie.
-        //Howver that is far from trivial, so for the moment conditional statements won't be supported by hthor.
+        //However that is far from trivial, so for the moment conditional statements won't be supported by hthor.
         case TAKifaction:
             {
                 Owned<IHThorArg> helper = createHelper(agent, NULL);
@@ -671,7 +675,7 @@ bool EclGraphElement::prepare(IAgentContext & agent, const byte * parentExtract,
             }
         }
 
-        if (!isEof)    //dont prepare unnecessary branches
+        if (!isEof)    //don't prepare unnecessary branches
         {
             ForEachItemIn(i1, branches)
             {

+ 5 - 0
testing/ecl/key/throughspill.xml

@@ -0,0 +1,5 @@
+<Dataset name='Result 1'>
+</Dataset>
+<Dataset name='Result 2'>
+ <Row><a>hello</a></Row>
+</Dataset>

+ 5 - 0
testing/ecl/key/throughspill2.xml

@@ -0,0 +1,5 @@
+<Dataset name='Result 1'>
+</Dataset>
+<Dataset name='Result 2'>
+ <Row><a>hello</a></Row>
+</Dataset>

+ 6 - 0
testing/ecl/throughspill.ecl

@@ -0,0 +1,6 @@
+boolean b := false : stored('b');
+
+d := nofold(sort(nofold(dataset([{'hello'}], {string a})),a));
+
+d(b);
+d(a = 'hello');

+ 7 - 0
testing/ecl/throughspill2.ecl

@@ -0,0 +1,7 @@
+boolean b := false : stored('b');
+integer c := 0 : stored('c');
+
+d := nofold(sort(nofold(dataset([{'hello'}], {string a})),a));
+
+choosen(d, c);
+d(a = 'hello');