浏览代码

Improve the code generated for comparison functions

Very minor improvement to comparison function spotted while examining
improvements in a couple of example files from the previous commit.

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Gavin Halliday 13 年之前
父节点
当前提交
598f14d93a
共有 2 个文件被更改,包括 1 次插入21 次删除
  1. 0 1
      ecl/hqlcpp/hqlcpp.ipp
  2. 1 20
      ecl/hqlcpp/hqlhtcpp.cpp

+ 0 - 1
ecl/hqlcpp/hqlcpp.ipp

@@ -1569,7 +1569,6 @@ public:
     IHqlExpression * createOrderFromSortList(const DatasetReference & dataset, IHqlExpression * sortList, IHqlExpression * leftSelect, IHqlExpression * rightSelect);
 
     void buildSkewThresholdMembers(BuildCtx & ctx, IHqlExpression * expr);
-    IHqlExpression * doCompare(BuildCtx & ctx, IHqlExpression *sortList, const DatasetReference & dataset);
     void doCompareLeftRight(BuildCtx & ctx, const char * funcname, const DatasetReference & datasetLeft, const DatasetReference & datasetRight, HqlExprArray & left, HqlExprArray & right);
     void buildSlidingMatchFunction(BuildCtx & ctx, HqlExprArray & leftEq, HqlExprArray & rightEq, HqlExprArray & slidingMatches, const char * funcname, unsigned childIndex, const DatasetReference & datasetL, const DatasetReference & datasetR);
     void doBuildIndexOutputTransform(BuildCtx & ctx, IHqlExpression * record, OwnedHqlExpr & rawRecord);

+ 1 - 20
ecl/hqlcpp/hqlhtcpp.cpp

@@ -11027,10 +11027,7 @@ void HqlCppTranslator::generateSortCompare(BuildCtx & nestedctx, BuildCtx & ctx,
         funcctx.associateExpr(constantMemberMarkerExpr, constantMemberMarkerExpr);
 
         OwnedHqlExpr groupOrder = createValueSafe(no_sortlist, makeSortListType(NULL), sorts);
-        OwnedHqlExpr diff = doCompare(funcctx, groupOrder, dataset);
-
-        funcctx.setNextDestructor();
-        funcctx.addReturn(diff);
+        buildReturnOrder(funcctx, groupOrder, dataset);
 
         endNestedClass();
     }
@@ -15132,22 +15129,6 @@ IHqlExpression * HqlCppTranslator::createOrderFromSortList(const DatasetReferenc
 }
 
 
-IHqlExpression * HqlCppTranslator::doCompare(BuildCtx & ctx, IHqlExpression *sortList, const DatasetReference & dataset)
-{
-    OwnedHqlExpr selSeq = createDummySelectorSequence();
-    OwnedHqlExpr leftSelect = dataset.getSelector(no_left, selSeq);
-    OwnedHqlExpr rightSelect = dataset.getSelector(no_right, selSeq);
-    OwnedHqlExpr order = createOrderFromSortList(dataset, sortList, leftSelect, rightSelect);
-    
-    bindTableCursor(ctx, dataset.queryDataset(), "left", no_left, selSeq);
-    bindTableCursor(ctx, dataset.queryDataset(), "right", no_right, selSeq);
-
-    CHqlBoundExpr bound;
-    buildCachedExpr(ctx, order, bound);
-
-    return bound.expr.getClear();
-}
-
 void HqlCppTranslator::buildReturnOrder(BuildCtx & ctx, IHqlExpression *sortList, const DatasetReference & dataset)
 {
     OwnedHqlExpr selSeq = createDummySelectorSequence();