Browse Source

Merge pull request #7163 from ghalliday/issue13292

HPCC-13292 Remove (very old) incorrect LIMIT optimization

Reviewed-By: Jamie Noss <james.noss@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 10 years ago
parent
commit
0085aa783b
1 changed files with 5 additions and 5 deletions
  1. 5 5
      ecl/hqlcpp/hqlttcpp.cpp

+ 5 - 5
ecl/hqlcpp/hqlttcpp.cpp

@@ -4547,27 +4547,27 @@ IHqlExpression * CompoundActivityTransformer::createTransformed(IHqlExpression *
         {
             if (transformed->hasAttribute(onFailAtom))
                 break;
+
             LinkedHqlExpr dataset = transformed->queryChild(0);
             if (dataset->hasAttribute(limitAtom) || transformed->hasAttribute(skipAtom))
                 break;
+
+            // A limited KEYED-JOIN should never read more than limit rows from the index for each left row
+            // so add a LIMIT attribute onto the keyed join to ensure it doesn't return too many records.
             switch (dataset->getOperator())
             {
             case no_join:
-            case no_denormalize:
-            case no_denormalizegroup:
                 if (isKeyedJoin(dataset))
                     break;
                 return transformed.getClear();
             default:
                 return transformed.getClear();
             }
-            if (!isThorCluster(targetClusterType))
-                return mergeLimitIntoDataset(dataset, transformed);
+
             HqlExprArray args;
             unwindChildren(args, transformed);
             args.replace(*mergeLimitIntoDataset(dataset, transformed), 0);
             return transformed->clone(args);
-
         }
     }