Browse Source

HPCC-9239 Generate subsort optimizations

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Gavin Halliday 12 years ago
parent
commit
a5400b5dfc
2 changed files with 7 additions and 5 deletions
  1. 3 1
      ecl/hql/hqlmeta.cpp
  2. 4 4
      ecl/hqlcpp/hqlcpp.cpp

+ 3 - 1
ecl/hql/hqlmeta.cpp

@@ -1370,8 +1370,10 @@ static IHqlExpression * createSubSorted(IHqlExpression * dataset, IHqlExpression
     OwnedHqlExpr alreadySorted = createValueSafe(no_sortlist, makeSortListType(NULL), components, 0, sortedElements);
     OwnedHqlExpr newOrder = createValueSafe(no_sortlist, makeSortListType(NULL), components, sortedElements, components.ordinality());
 
+    const bool removeGrouping = ignoreGrouping && isGrouped(dataset);
     OwnedHqlExpr attr = isLocal ? createLocalAttribute() : (isGrouped(dataset) && ignoreGrouping) ? createAttribute(globalAtom) : NULL;
-    OwnedHqlExpr subsort = createDatasetF(no_subsort, LINK(dataset), LINK(newOrder), LINK(alreadySorted), LINK(attr), NULL);
+    OwnedHqlExpr input = removeGrouping ? createDataset(no_group, LINK(dataset)) : LINK(dataset);
+    OwnedHqlExpr subsort = createDatasetF(no_subsort, LINK(input), LINK(newOrder), LINK(alreadySorted), LINK(attr), NULL);
     //Grouped subsorts never generated, global subsorts (if generated) get converted to a global group
     if (!isLocal && !alwaysLocal)
         subsort.setown(convertSubSortToGroupedSort(subsort));

+ 4 - 4
ecl/hqlcpp/hqlcpp.cpp

@@ -1687,10 +1687,10 @@ void HqlCppTranslator::cacheOptions()
         DebugOption(options.combineSiblingGraphs,"combineSiblingGraphs", true),
         DebugOption(options.optimizeSharedGraphInputs,"optimizeSharedGraphInputs", true),
         DebugOption(options.supportsSubSortActivity,"supportsSubSortActivity",false),
-        DebugOption(options.implicitSubSort,"implicitSubSort",false),
-        DebugOption(options.implicitBuildIndexSubSort,"implicitBuildIndexSubSort",false),
-        DebugOption(options.implicitJoinSubSort,"implicitJoinSubSort",false),
-        DebugOption(options.implicitGroupSubSort,"implicitGroupSubSort",false),
+        DebugOption(options.implicitSubSort,"implicitSubSort",true),
+        DebugOption(options.implicitBuildIndexSubSort,"implicitBuildIndexSubSort",true),
+        DebugOption(options.implicitJoinSubSort,"implicitJoinSubSort",true),
+        DebugOption(options.implicitGroupSubSort,"implicitGroupSubSort",true),
         DebugOption(options.implicitGroupHashAggregate,"implicitGroupHashAggregate",false),
         DebugOption(options.implicitGroupHashDedup,"implicitGroupHashDedup",false),
         DebugOption(options.reportFieldUsage,"reportFieldUsage",false),