Browse Source

HPCC-16267 Fix internal error on index with grandchild datasets with a row

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Gavin Halliday 8 năm trước cách đây
mục cha
commit
2a2c35244c
3 tập tin đã thay đổi với 18 bổ sung1 xóa
  1. 1 0
      ecl/hql/hqlexpr.cpp
  2. 1 1
      ecl/hqlcpp/hqlckey.cpp
  3. 16 0
      ecl/regress/issue16267.ecl

+ 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;