瀏覽代碼

Merge branch 'candidate-6.2.0'

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 8 年之前
父節點
當前提交
c6c4172d4e

+ 1 - 0
ecl/hql/hqlexpr.cpp

@@ -3213,6 +3213,7 @@ IHqlExpression * ensureExprType(IHqlExpression * expr, ITypeInfo * type, node_op
                     return LINK(expr);
                 break;
             }
+            break;
         }
     case type_dictionary:
     case type_table:

+ 1 - 1
ecl/hqlcpp/hqlckey.cpp

@@ -185,7 +185,7 @@ IHqlExpression * convertIndexPhysical2LogicalValue(IHqlExpression * cur, IHqlExp
         return ensureExprType(newValue, type);
     }
     else
-        return LINK(physicalSelect);
+        return ensureExprType(physicalSelect, cur->queryType());
 }
 
 

+ 16 - 0
ecl/regress/issue16267.ecl

@@ -0,0 +1,16 @@
+r0 := { unsigned id0; };
+
+r1 := { dataset(r0) id0s; };
+
+r2 := { dataset(r1) ids };
+
+r3 := {
+    string11 f_name;
+    r2 child;
+};
+
+ds := dataset([], r3);
+
+i := index(ds, { f_name } , { ds}, 'magic');
+
+i;

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

@@ -838,6 +838,7 @@ public:
             stopInput(branch);
         selectedInputStream = NULL;
         abortSoon = true;
+        branch = (unsigned)-1;
         PARENT::stop();
     }
     CATCH_NEXTROW()

+ 5 - 6
thorlcr/graph/thgraphslave.hpp

@@ -33,6 +33,9 @@
 #include "traceslave.hpp"
 #include "thorstrand.hpp"
 
+// #define OUTPUT_RECORDSIZE // causes the record size to be logged for each activity on the 1st call to dataLinkIncrement
+
+
 interface IStartableEngineRowStream : extends IEngineRowStream
 {
     virtual void start() = 0;
@@ -69,13 +72,12 @@ public:
         assertex(!hasStarted() || hasStopped());      // ITDL started twice
 #endif
         icount = 0;
-        rowcount_t prevCount = count & THORDATALINK_COUNT_MASK;
-        count = prevCount | THORDATALINK_STARTED;
+        count = (count & THORDATALINK_COUNT_MASK) | THORDATALINK_STARTED;
     }
 
     inline void dataLinkStop()
     {
-        count |= THORDATALINK_STOPPED;
+        count = (count & THORDATALINK_COUNT_MASK) | THORDATALINK_STOPPED;
 #ifdef _TESTING
         owner.ActPrintLog("ITDL output %d stopped, count was %" RCPF "d", outputId, getDataLinkCount());
 #endif
@@ -83,8 +85,6 @@ public:
     inline void dataLinkIncrement() { dataLinkIncrement(1); }
     inline void dataLinkIncrement(rowcount_t v)
     {
-#ifdef _TESTING
-        assertex(hasStarted());
 #ifdef OUTPUT_RECORDSIZE
         if (count==THORDATALINK_STARTED)
         {
@@ -92,7 +92,6 @@ public:
             parent.ActPrintLog("Record size %s= %d", parent.queryRowMetaData(this)->isVariableSize()?"(min) ":"",rsz);
         }
 #endif
-#endif
         icount += v;
         count += v;
     }