Browse Source

HPCC-20966 Support descending sorts in MERGE(<set-of-datasets>)

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Gavin Halliday 6 years ago
parent
commit
6f0f1a5554
2 changed files with 12 additions and 0 deletions
  1. 2 0
      ecl/hqlcpp/hqlstep.cpp
  2. 10 0
      ecl/regress/issue20966.ecl

+ 2 - 0
ecl/hqlcpp/hqlstep.cpp

@@ -487,6 +487,8 @@ void SteppingFieldSelection::gatherFieldOffsetSizes(HqlCppTranslator & translato
     ForEachChild(i, fields)
     {
         IHqlExpression * cur = fields->queryChild(i);
+        if (cur->getOperator() == no_negate)
+            cur = cur->queryChild(0);
         assertex(cur->getOperator() == no_select);
         Owned<IReferenceSelector> selector = translator.buildActiveReference(ctx, cur);
         selector->getOffset(ctx, bound);

+ 10 - 0
ecl/regress/issue20966.ecl

@@ -0,0 +1,10 @@
+DataRec := {UNSIGNED4 n};
+
+ds1 := DATASET([7,3,5,1,9], DataRec);
+ds2 := DATASET([6,2,8,4], DataRec);
+
+sortedDS1 := SORT(NOFOLD(ds1), -n);
+sortedDS2 := SORT(NOFOLD(ds2), -n);
+
+res := MERGE([sortedDS1, sortedDS2], SORTED(-n));
+OUTPUT(res, NAMED('res'));