summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/grouping/grouping_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/tests/grouping/grouping_test.cpp')
-rw-r--r--searchlib/src/tests/grouping/grouping_test.cpp683
1 files changed, 342 insertions, 341 deletions
diff --git a/searchlib/src/tests/grouping/grouping_test.cpp b/searchlib/src/tests/grouping/grouping_test.cpp
index 10fa3267c09..fec91a62d17 100644
--- a/searchlib/src/tests/grouping/grouping_test.cpp
+++ b/searchlib/src/tests/grouping/grouping_test.cpp
@@ -1,7 +1,5 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/fastos/fastos.h>
-#include <vespa/log/log.h>
-LOG_SETUP("grouping_test");
+
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/aggregation/perdocexpression.h>
#include <vespa/searchlib/aggregation/aggregation.h>
@@ -39,7 +37,7 @@ public:
for (uint32_t docid = 0; docid < numDocs; ++docid) {
T val;
uint32_t res = rhs._attr->get(docid, &val, 1);
- LOG_ASSERT(res == 1);
+ assert(res == 1);
add(val);
}
}
@@ -283,6 +281,7 @@ Test::testMerge(const Grouping &a, const Grouping &b, const Grouping &c,
void
Test::testAggregationSimple()
{
+ EXPECT_EQUAL(64u, sizeof(Group));
AggregationContext ctx;
ctx.result().add(0).add(1).add(2);
ctx.add(IntAttrBuilder("int").add(3).add(7).add(15).sp());
@@ -295,24 +294,69 @@ Test::testAggregationSimple()
testAggregationSimpleSum(ctx, MaxAggregationResult(), Int64ResultNode(15), FloatResultNode(15), StringResultNode("7"));
}
+#define MU std::make_unique
+using EUP = ExpressionNode::UP;
+
+std::unique_ptr<AggregationResult>
+prepareAggr(const AggregationResult & aggr, ExpressionNode::UP expr) {
+ std::unique_ptr<AggregationResult> clone(aggr.clone());
+ clone->setExpression(std::move(expr));
+ return clone;
+}
+
+ExpressionNode::UP
+prepareAggr(const AggregationResult & aggr, ExpressionNode::UP expr, const ResultNode & r) {
+ auto prepared = prepareAggr(aggr, std::move(expr));
+ prepared->setResult(r);
+ return prepared;
+}
void Test::testAggregationSimpleSum(AggregationContext & ctx, const AggregationResult & aggr, const ResultNode & ir, const ResultNode & fr, const ResultNode & sr)
{
ExpressionNode::CP clone(aggr);
- Grouping request = Grouping()
- .setRoot(Group()
- .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("int")))
- .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("float")))
- .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("string")))
- );
+ Grouping request;
+ request.setRoot(Group().addResult(prepareAggr(aggr, MU<AttributeNode>("int")))
+ .addResult(prepareAggr(aggr, MU<AttributeNode>("float")))
+ .addResult(prepareAggr(aggr, MU<AttributeNode>("string"))));
- Group expect = Group()
- .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("int")).setResult(ir))
- .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("float")).setResult(fr))
- .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("string")).setResult(sr));
+ Group expect;
+ expect.addResult(prepareAggr(aggr, MU<AttributeNode>("int"), ir))
+ .addResult(prepareAggr(aggr, MU<AttributeNode>("float"), fr))
+ .addResult(prepareAggr(aggr, MU<AttributeNode>("string"), sr));
EXPECT_TRUE(testAggregation(ctx, request, expect));
}
+GroupingLevel
+createGL(ExpressionNode::UP expr, ExpressionNode::UP resultExpr) {
+ GroupingLevel l;
+ l.setExpression(std::move(expr));
+ l.addResult(SumAggregationResult().setExpression(std::move(resultExpr)));
+ return l;
+}
+
+GroupingLevel
+createGL(ExpressionNode::UP expr) {
+ GroupingLevel l;
+ l.setExpression(std::move(expr));
+ return l;
+}
+
+GroupingLevel
+createGL(size_t maxGroups, ExpressionNode::UP expr) {
+ GroupingLevel l;
+ l.setMaxGroups(maxGroups);
+ l.setExpression(std::move(expr));
+ return l;
+}
+
+GroupingLevel
+createGL(size_t maxGroups, ExpressionNode::UP expr, ExpressionNode::UP result) {
+ GroupingLevel l;
+ l.setMaxGroups(maxGroups);
+ l.setExpression(std::move(expr));
+ l.addResult(SumAggregationResult().setExpression(std::move(result)));
+ return l;
+}
/**
* Verify that the backend aggregation will classify and collect on
* the appropriate levels, as indicated by the firstLevel and
@@ -328,91 +372,70 @@ Test::testAggregationLevels()
ctx.add(IntAttrBuilder("attr3").add(13).add(13).sp());
ctx.result().add(0).add(1);
- Grouping baseRequest = Grouping()
- .setRoot(Group()
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr0"))))
- .addLevel(GroupingLevel()
- .setExpression(AttributeNode("attr1"))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr2"))))
- .addLevel(GroupingLevel()
- .setExpression(AttributeNode("attr2"))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr3"))))
- .addLevel(GroupingLevel()
- .setExpression(AttributeNode("attr3"))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr1"))));
-
- Group notDone = Group()
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr0")));
+ Grouping baseRequest;
+ baseRequest
+ .setRoot(Group().addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0"))))
+ .addLevel(createGL(MU<AttributeNode>("attr1"), MU<AttributeNode>("attr2")))
+ .addLevel(createGL(MU<AttributeNode>("attr2"), MU<AttributeNode>("attr3")))
+ .addLevel(createGL(MU<AttributeNode>("attr3"), MU<AttributeNode>("attr1")));
+
+ Group notDone;
+ notDone.addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0")));
// Hmm, do not need to prepare more than the levels needed. .setResult(Int64ResultNode(0)));
- Group done0 = Group()
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr0"))
- .setResult(Int64ResultNode(20)))
- .addChild(Group()
- .setId(Int64ResultNode(11))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr2"))
+ Group done0;
+ done0.addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0")).setResult(Int64ResultNode(20)))
+ .addChild(Group().setId(Int64ResultNode(11)).addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr2"))
.setResult(Int64ResultNode(0))));
- Group done1 = Group()
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr0"))
- .setResult(Int64ResultNode(20)))
- .addChild(Group()
- .setId(Int64ResultNode(11))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr2"))
- .setResult(Int64ResultNode(24)))
- .addChild(Group()
- .setId(Int64ResultNode(12))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr3"))
- .setResult(Int64ResultNode(0)))));
-
- Group done2 = Group()
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr0"))
- .setResult(Int64ResultNode(20)))
- .addChild(Group()
- .setId(Int64ResultNode(11))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr2"))
- .setResult(Int64ResultNode(24)))
- .addChild(Group()
- .setId(Int64ResultNode(12))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr3"))
- .setResult(Int64ResultNode(26)))
- .addChild(Group()
- .setId(Int64ResultNode(13))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr1"))
- .setResult(Int64ResultNode(0))))));
-
- Group done3 = Group()
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr0"))
- .setResult(Int64ResultNode(20)))
+ Group done1;
+ done1.addResult(SumAggregationResult()
+ .setExpression(MU<AttributeNode>("attr0"))
+ .setResult(Int64ResultNode(20)))
+ .addChild(Group().setId(Int64ResultNode(11))
+ .addResult(SumAggregationResult()
+ .setExpression(MU<AttributeNode>("attr2"))
+ .setResult(Int64ResultNode(24)))
+ .addChild(Group().setId(Int64ResultNode(12))
+ .addResult(SumAggregationResult()
+ .setExpression(MU<AttributeNode>("attr3"))
+ .setResult(Int64ResultNode(0)))));
+
+ Group done2;
+ done2.addResult(SumAggregationResult()
+ .setExpression(MU<AttributeNode>("attr0"))
+ .setResult(Int64ResultNode(20)))
+ .addChild(Group().setId(Int64ResultNode(11))
+ .addResult(SumAggregationResult()
+ .setExpression(MU<AttributeNode>("attr2"))
+ .setResult(Int64ResultNode(24)))
+ .addChild(Group().setId(Int64ResultNode(12))
+ .addResult(SumAggregationResult()
+ .setExpression(MU<AttributeNode>("attr3"))
+ .setResult(Int64ResultNode(26)))
+ .addChild(Group().setId(Int64ResultNode(13))
+ .addResult(SumAggregationResult()
+ .setExpression(MU<AttributeNode>("attr1"))
+ .setResult(Int64ResultNode(0))))));
+
+ Group done3;
+ done3.addResult(SumAggregationResult()
+ .setExpression(MU<AttributeNode>("attr0"))
+ .setResult(Int64ResultNode(20)))
.addChild(Group()
.setId(Int64ResultNode(11))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr2"))
+ .setExpression(MU<AttributeNode>("attr2"))
.setResult(Int64ResultNode(24)))
.addChild(Group()
.setId(Int64ResultNode(12))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr3"))
+ .setExpression(MU<AttributeNode>("attr3"))
.setResult(Int64ResultNode(26)))
.addChild(Group()
.setId(Int64ResultNode(13))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("attr1"))
+ .setExpression(MU<AttributeNode>("attr1"))
.setResult(Int64ResultNode(22))))));
{ // level 0 only
@@ -464,9 +487,7 @@ Test::testAggregationMaxGroups()
ctx.add(IntAttrBuilder("attr").add(5).add(10).add(15).sp());
ctx.result().add(0).add(1).add(2);
- Grouping baseRequest = Grouping()
- .addLevel(GroupingLevel()
- .setExpression(AttributeNode("attr")));
+ Grouping baseRequest = Grouping().addLevel(createGL(MU<AttributeNode>("attr")));
Group empty = Group();
Group grp1 = empty.unchain().addChild(Group().setId(Int64ResultNode(5)));
@@ -515,18 +536,17 @@ Test::testAggregationGroupOrder()
ctx.add(IntAttrBuilder("attr").add(10).add(25).add(35).add(5).add(20).add(15).add(30).sp());
ctx.result().add(0).add(1).add(2).add(3).add(4).add(5).add(6);
- Grouping request = Grouping()
- .addLevel(GroupingLevel()
- .setExpression(AttributeNode("attr")));
+ Grouping request;
+ request.addLevel(createGL(MU<AttributeNode>("attr")));
- Group expect = Group()
- .addChild(Group().setId(Int64ResultNode(5)))
- .addChild(Group().setId(Int64ResultNode(10)))
- .addChild(Group().setId(Int64ResultNode(15)))
- .addChild(Group().setId(Int64ResultNode(20)))
- .addChild(Group().setId(Int64ResultNode(25)))
- .addChild(Group().setId(Int64ResultNode(30)))
- .addChild(Group().setId(Int64ResultNode(35)));
+ Group expect;
+ expect.addChild(Group().setId(Int64ResultNode(5)))
+ .addChild(Group().setId(Int64ResultNode(10)))
+ .addChild(Group().setId(Int64ResultNode(15)))
+ .addChild(Group().setId(Int64ResultNode(20)))
+ .addChild(Group().setId(Int64ResultNode(25)))
+ .addChild(Group().setId(Int64ResultNode(30)))
+ .addChild(Group().setId(Int64ResultNode(35)));
EXPECT_TRUE(testAggregation(ctx, request, expect));
}
@@ -547,8 +567,7 @@ Test::testAggregationGroupRank()
.add(3, 10).add(4, 15).add(5, 5)
.add(6, 15).add(7, 5).add(8, 10);
- Grouping request = Grouping().addLevel(
- GroupingLevel().setExpression(AttributeNode("attr")));
+ Grouping request = Grouping().addLevel(createGL(MU<AttributeNode>("attr")));
Group expect = Group()
.addChild(Group().setId(Int64ResultNode(1)).setRank(RawRank(15)))
@@ -558,6 +577,22 @@ Test::testAggregationGroupRank()
EXPECT_TRUE(testAggregation(ctx, request, expect));
}
+template<typename T>
+ExpressionNode::UP
+createAggr(ExpressionNode::UP e) {
+ std::unique_ptr<T> aggr = MU<T>();
+ aggr->setExpression(std::move(e));
+ return aggr;
+}
+
+template<typename T>
+ExpressionNode::UP
+createAggr(SingleResultNode::UP r, ExpressionNode::UP e) {
+ std::unique_ptr<T> aggr = MU<T>(std::move(r));
+ aggr->setExpression(std::move(e));
+ return aggr;
+}
+
void
Test::testAggregationGroupCapping()
{
@@ -572,81 +607,96 @@ Test::testAggregationGroupCapping()
.add(6, 7).add(7, 8).add(8, 9);
{
- Grouping request = Grouping().addLevel(
- GroupingLevel().setExpression(AttributeNode("attr")));
-
- Group expect = Group()
- .addChild(Group().setId(Int64ResultNode(1)).setRank(RawRank(1)))
- .addChild(Group().setId(Int64ResultNode(2)).setRank(RawRank(2)))
- .addChild(Group().setId(Int64ResultNode(3)).setRank(RawRank(3)))
- .addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(4)))
- .addChild(Group().setId(Int64ResultNode(5)).setRank(RawRank(5)))
- .addChild(Group().setId(Int64ResultNode(6)).setRank(RawRank(6)))
- .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7)))
- .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8)))
- .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9)));
+ Grouping request = Grouping().addLevel(createGL(MU<AttributeNode>("attr")));
+
+ Group expect;
+ expect.addChild(Group().setId(Int64ResultNode(1)).setRank(RawRank(1)))
+ .addChild(Group().setId(Int64ResultNode(2)).setRank(RawRank(2)))
+ .addChild(Group().setId(Int64ResultNode(3)).setRank(RawRank(3)))
+ .addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(4)))
+ .addChild(Group().setId(Int64ResultNode(5)).setRank(RawRank(5)))
+ .addChild(Group().setId(Int64ResultNode(6)).setRank(RawRank(6)))
+ .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7)))
+ .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8)))
+ .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9)));
EXPECT_TRUE(testAggregation(ctx, request, expect));
}
{
- Grouping request = Grouping().addLevel(
- GroupingLevel().setMaxGroups(3).setExpression(AttributeNode("attr")));
+ Grouping request;
+ request.addLevel(createGL(3, MU<AttributeNode>("attr")));
- Group expect = Group()
- .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7)))
- .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8)))
- .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9)));
+ Group expect;
+ expect.addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7)))
+ .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8)))
+ .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9)));
EXPECT_TRUE(testAggregation(ctx, request, expect));
}
{
- Grouping request = Grouping().
- setFirstLevel(0).
- setLastLevel(1).
- addLevel(
- GroupingLevel().setMaxGroups(3).setExpression(AttributeNode("attr")).
- addAggregationResult(SumAggregationResult().setExpression(AttributeNode("attr"))).
- addOrderBy(AggregationRefNode(0), false));
-
- Group expect = Group()
- .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7)).addAggregationResult(SumAggregationResult(Int64ResultNode(7)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), false))
- .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8)).addAggregationResult(SumAggregationResult(Int64ResultNode(8)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), false))
- .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9)).addAggregationResult(SumAggregationResult(Int64ResultNode(9)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), false));
+ Grouping request;
+ request.setFirstLevel(0)
+ .setLastLevel(1)
+ .addLevel(std::move(GroupingLevel().setMaxGroups(3).setExpression(MU<AttributeNode>("attr"))
+ .addAggregationResult(createAggr<SumAggregationResult>(MU<AttributeNode>("attr")))
+ .addOrderBy(MU<AggregationRefNode>(0), false)));
+
+ Group expect;
+ expect.addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7))
+ .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(7), MU<AttributeNode>("attr")))
+ .addOrderBy(MU<AggregationRefNode>(0), false))
+ .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8))
+ .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(8), MU<AttributeNode>("attr")))
+ .addOrderBy(MU<AggregationRefNode>(0), false))
+ .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9))
+ .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(9), MU<AttributeNode>("attr")))
+ .addOrderBy(MU<AggregationRefNode>(0), false));
EXPECT_TRUE(testAggregation(ctx, request, expect));
}
{
- Grouping request = Grouping().
- setFirstLevel(0).
- setLastLevel(1).
- addLevel(
- GroupingLevel().setMaxGroups(3).setExpression(AttributeNode("attr")).
- addAggregationResult(SumAggregationResult().setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), true));
+ Grouping request;
+ request.setFirstLevel(0)
+ .setLastLevel(1)
+ .addLevel(std::move(GroupingLevel().setMaxGroups(3).setExpression(MU<AttributeNode>("attr"))
+ .addAggregationResult(createAggr<SumAggregationResult>(MU<AttributeNode>("attr")))
+ .addOrderBy(MU<AggregationRefNode>(0), true)));
Group expect = Group()
- .addChild(Group().setId(Int64ResultNode(1)).setRank(RawRank(1)).addAggregationResult(SumAggregationResult(Int64ResultNode(1)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), true))
- .addChild(Group().setId(Int64ResultNode(2)).setRank(RawRank(2)).addAggregationResult(SumAggregationResult(Int64ResultNode(2)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), true))
- .addChild(Group().setId(Int64ResultNode(3)).setRank(RawRank(3)).addAggregationResult(SumAggregationResult(Int64ResultNode(3)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), true));
+ .addChild(Group().setId(Int64ResultNode(1)).setRank(RawRank(1))
+ .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(1), MU<AttributeNode>("attr")))
+ .addOrderBy(MU<AggregationRefNode>(0), true))
+ .addChild(Group().setId(Int64ResultNode(2)).setRank(RawRank(2))
+ .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(2), MU<AttributeNode>("attr")))
+ .addOrderBy(MU<AggregationRefNode>(0), true))
+ .addChild(Group().setId(Int64ResultNode(3)).setRank(RawRank(3))
+ .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(3), MU<AttributeNode>("attr")))
+ .addOrderBy(MU<AggregationRefNode>(0), true));
EXPECT_TRUE(testAggregation(ctx, request, expect));
}
{
AddFunctionNode *add = new AddFunctionNode();
- add->addArg(AggregationRefNode(0));
- add->appendArg(ConstantNode(Int64ResultNode(3)));
- ExpressionNode::CP i1(add);
- Grouping request = Grouping().
- setFirstLevel(0).
- setLastLevel(1).
- addLevel(
- GroupingLevel().setMaxGroups(3).setExpression(AttributeNode("attr")).
- addAggregationResult(SumAggregationResult().setExpression(AttributeNode("attr"))).
- addOrderBy(i1, false));
-
- Group expect = Group()
- .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7)).addAggregationResult(SumAggregationResult(Int64ResultNode(7)).setExpression(AttributeNode("attr"))).addOrderBy(AddFunctionNode().appendArg(AggregationRefNode(0)).appendArg(ConstantNode(Int64ResultNode(3))).setResult(Int64ResultNode(10)), false))
- .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8)).addAggregationResult(SumAggregationResult(Int64ResultNode(8)).setExpression(AttributeNode("attr"))).addOrderBy(AddFunctionNode().appendArg(AggregationRefNode(0)).appendArg(ConstantNode(Int64ResultNode(3))).setResult(Int64ResultNode(11)), false))
- .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9)).addAggregationResult(SumAggregationResult(Int64ResultNode(9)).setExpression(AttributeNode("attr"))).addOrderBy(AddFunctionNode().appendArg(AggregationRefNode(0)).appendArg(ConstantNode(Int64ResultNode(3))).setResult(Int64ResultNode(12)), false));
+ add->addArg(MU<AggregationRefNode>(0));
+ add->appendArg(MU<ConstantNode>(MU<Int64ResultNode>(3)));
+
+ Grouping request;
+ request.setFirstLevel(0)
+ .setLastLevel(1)
+ .addLevel(std::move(GroupingLevel().setMaxGroups(3).setExpression(MU<AttributeNode>("attr"))
+ .addAggregationResult(createAggr<SumAggregationResult>(MU<AttributeNode>("attr")))
+ .addOrderBy(ExpressionNode::UP(add), false)));
+
+ Group expect;
+ expect.addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7))
+ .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(7), MU<AttributeNode>("attr")))
+ .addOrderBy(AddFunctionNode().appendArg(MU<AggregationRefNode>(0)).appendArg(MU<ConstantNode>(MU<Int64ResultNode>(3))).setResult(Int64ResultNode(10)), false))
+ .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8))
+ .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(8), MU<AttributeNode>("attr")))
+ .addOrderBy(AddFunctionNode().appendArg(MU<AggregationRefNode>(0)).appendArg(MU<ConstantNode>(MU<Int64ResultNode>(3))).setResult(Int64ResultNode(11)), false))
+ .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9))
+ .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(9), MU<AttributeNode>("attr")))
+ .addOrderBy(AddFunctionNode().appendArg(MU<AggregationRefNode>(0)).appendArg(MU<ConstantNode>(MU<Int64ResultNode>(3))).setResult(Int64ResultNode(12)), false));
EXPECT_TRUE(testAggregation(ctx, request, expect));
}
@@ -667,20 +717,20 @@ Test::testMergeSimpleSum()
.setRoot(Group()
.setId(NullResultNode())
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("foo"))
+ .setExpression(MU<AttributeNode>("foo"))
.setResult(Int64ResultNode(20))));
Grouping b = Grouping()
.setRoot(Group()
.setId(NullResultNode())
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("foo"))
+ .setExpression(MU<AttributeNode>("foo"))
.setResult(Int64ResultNode(30))));
Group expect = Group()
.setId(NullResultNode())
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("foo"))
+ .setExpression(MU<AttributeNode>("foo"))
.setResult(Int64ResultNode(50)));
EXPECT_TRUE(testMerge(a, b, expect));
@@ -692,168 +742,159 @@ Test::testMergeSimpleSum()
void
Test::testMergeLevels()
{
- Grouping request = Grouping()
- .addLevel(GroupingLevel()
- .setExpression(AttributeNode("c1"))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))))
- .addLevel(GroupingLevel()
- .setExpression(AttributeNode("c2"))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))))
- .addLevel(GroupingLevel()
- .setExpression(AttributeNode("c3"))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))));
+ Grouping request;
+ request.addLevel(createGL(MU<AttributeNode>("c1"), MU<AttributeNode>("s1")))
+ .addLevel(createGL(MU<AttributeNode>("c2"), MU<AttributeNode>("s2")))
+ .addLevel(createGL(MU<AttributeNode>("c3"), MU<AttributeNode>("s3")));
Group a = Group()
.setId(NullResultNode())
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(5)))
.addChild(Group()
.setId(Int64ResultNode(10))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(10)))
.addChild(Group()
.setId(Int64ResultNode(20))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(15)))
.addChild(Group()
.setId(Int64ResultNode(30))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(20))))));
Group b = Group()
.setId(NullResultNode())
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(5)))
.addChild(Group()
.setId(Int64ResultNode(10))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(10)))
.addChild(Group()
.setId(Int64ResultNode(20))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(15)))
.addChild(Group()
.setId(Int64ResultNode(30))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(20))))));
Group expect_all = Group()
.setId(NullResultNode())
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(10)))
.addChild(Group()
.setId(Int64ResultNode(10))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(20)))
.addChild(Group()
.setId(Int64ResultNode(20))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(30)))
.addChild(Group()
.setId(Int64ResultNode(30))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(40))))));
Group expect_0 = Group()
.setId(NullResultNode())
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(5)))
.addChild(Group()
.setId(Int64ResultNode(10))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(20)))
.addChild(Group()
.setId(Int64ResultNode(20))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(30)))
.addChild(Group()
.setId(Int64ResultNode(30))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(40))))));
Group expect_1 = Group()
.setId(NullResultNode())
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(5)))
.addChild(Group()
.setId(Int64ResultNode(10))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(10)))
.addChild(Group()
.setId(Int64ResultNode(20))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(30)))
.addChild(Group()
.setId(Int64ResultNode(30))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(40))))));
Group expect_2 = Group()
.setId(NullResultNode())
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(5)))
.addChild(Group()
.setId(Int64ResultNode(10))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(10)))
.addChild(Group()
.setId(Int64ResultNode(20))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(15)))
.addChild(Group()
.setId(Int64ResultNode(30))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(40))))));
Group expect_3 = Group()
.setId(NullResultNode())
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(5)))
.addChild(Group()
.setId(Int64ResultNode(10))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(10)))
.addChild(Group()
.setId(Int64ResultNode(20))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(15)))
.addChild(Group()
.setId(Int64ResultNode(30))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(20))))));
EXPECT_TRUE(testMerge(request.unchain().setFirstLevel(0).setLastLevel(3).setRoot(a),
@@ -881,9 +922,8 @@ Test::testMergeLevels()
void
Test::testMergeGroups()
{
- Grouping request = Grouping()
- .addLevel(GroupingLevel()
- .setExpression(AttributeNode("attr")));
+ Grouping request;
+ request.addLevel(createGL(MU<AttributeNode>("attr")));
Group a = Group()
.setId(NullResultNode())
@@ -944,48 +984,36 @@ Test::testMergeGroups()
void
Test::testMergeTrees()
{
- Grouping request = Grouping()
- .addLevel(GroupingLevel()
- .setMaxGroups(3)
- .setExpression(AttributeNode("c1"))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))))
- .addLevel(GroupingLevel()
- .setMaxGroups(2)
- .setExpression(AttributeNode("c2"))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))))
- .addLevel(GroupingLevel()
- .setMaxGroups(1)
- .setExpression(AttributeNode("c3"))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))));
+ Grouping request;
+ request.addLevel(createGL(3, MU<AttributeNode>("c1"), MU<AttributeNode>("s1")))
+ .addLevel(createGL(2, MU<AttributeNode>("c2"), MU<AttributeNode>("s2")))
+ .addLevel(createGL(1, MU<AttributeNode>("c3"), MU<AttributeNode>("s3")));
Group a = Group()
.setId(NullResultNode())
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(100)))
.addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(10)))
.addChild(Group()
.setId(Int64ResultNode(5))
.setRank(RawRank(5)) // merged with 200 rank node
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(100)))
.addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(10)))
.addChild(Group()
.setId(Int64ResultNode(5))
.setRank(RawRank(500))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(100)))
.addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(10)))
.addChild(Group()
.setId(Int64ResultNode(5))
.setRank(RawRank(200))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(100)))
)
)
@@ -995,21 +1023,21 @@ Test::testMergeTrees()
.setId(Int64ResultNode(10))
.setRank(RawRank(100))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(100)))
// dummy child would be picked up here
.addChild(Group()
.setId(Int64ResultNode(15))
.setRank(RawRank(200))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(100)))
.addChild(Group().setId(Int64ResultNode(14)).setRank(RawRank(10)))
.addChild(Group()
.setId(Int64ResultNode(15))
.setRank(RawRank(300))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(100)))
)
)
@@ -1019,14 +1047,14 @@ Test::testMergeTrees()
.setId(Int64ResultNode(15))
.setRank(RawRank(300))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(100)))
.addChild(Group().setId(Int64ResultNode(19)).setRank(RawRank(10)))
.addChild(Group()
.setId(Int64ResultNode(20))
.setRank(RawRank(100))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(100)))
)
);
@@ -1034,28 +1062,28 @@ Test::testMergeTrees()
Group b = Group()
.setId(NullResultNode())
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(100)))
.addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(10)))
.addChild(Group()
.setId(Int64ResultNode(5))
.setRank(RawRank(200))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(100)))
.addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(10)))
.addChild(Group()
.setId(Int64ResultNode(10))
.setRank(RawRank(400))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(100)))
.addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(10)))
.addChild(Group()
.setId(Int64ResultNode(10))
.setRank(RawRank(100))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(100)))
)
)
@@ -1065,14 +1093,14 @@ Test::testMergeTrees()
.setId(Int64ResultNode(10))
.setRank(RawRank(100))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(100)))
// dummy child would be picket up here
.addChild(Group()
.setId(Int64ResultNode(15))
.setRank(RawRank(200))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(100)))
)
)
@@ -1081,21 +1109,21 @@ Test::testMergeTrees()
.setId(Int64ResultNode(15))
.setRank(RawRank(5)) // merged with 300 rank node
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(100)))
.addChild(Group().setId(Int64ResultNode(19)).setRank(RawRank(10)))
.addChild(Group()
.setId(Int64ResultNode(20))
.setRank(RawRank(5)) // merged with 100 rank node
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(100)))
.addChild(Group().setId(Int64ResultNode(19)).setRank(RawRank(10)))
.addChild(Group()
.setId(Int64ResultNode(20))
.setRank(RawRank(500))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(100)))
)
)
@@ -1104,14 +1132,14 @@ Test::testMergeTrees()
.setId(Int64ResultNode(25))
.setRank(RawRank(300))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(100)))
.addChild(Group().setId(Int64ResultNode(24)).setRank(RawRank(10)))
.addChild(Group()
.setId(Int64ResultNode(25))
.setRank(RawRank(400))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(100)))
)
)
@@ -1120,25 +1148,25 @@ Test::testMergeTrees()
Group expect = Group()
.setId(NullResultNode())
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(200)))
.addChild(Group()
.setId(Int64ResultNode(5))
.setRank(RawRank(200))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(200)))
.addChild(Group()
.setId(Int64ResultNode(5))
.setRank(RawRank(500))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(100)))
.addChild(Group()
.setId(Int64ResultNode(5))
.setRank(RawRank(200))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(100)))
)
)
@@ -1146,13 +1174,13 @@ Test::testMergeTrees()
.setId(Int64ResultNode(10))
.setRank(RawRank(400))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(100)))
.addChild(Group()
.setId(Int64ResultNode(10))
.setRank(RawRank(100))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(100)))
)
)
@@ -1161,19 +1189,19 @@ Test::testMergeTrees()
.setId(Int64ResultNode(10))
.setRank(RawRank(100))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(200)))
.addChild(Group()
.setId(Int64ResultNode(15))
.setRank(RawRank(200))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(200)))
.addChild(Group()
.setId(Int64ResultNode(15))
.setRank(RawRank(300))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(100)))
)
)
@@ -1182,19 +1210,19 @@ Test::testMergeTrees()
.setId(Int64ResultNode(15))
.setRank(RawRank(300))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(200)))
.addChild(Group()
.setId(Int64ResultNode(20))
.setRank(RawRank(100))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(200)))
.addChild(Group()
.setId(Int64ResultNode(20))
.setRank(RawRank(500))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(100)))
)
)
@@ -1202,13 +1230,13 @@ Test::testMergeTrees()
.setId(Int64ResultNode(25))
.setRank(RawRank(300))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(100)))
.addChild(Group()
.setId(Int64ResultNode(25))
.setRank(RawRank(400))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(100)))
)
)
@@ -1361,39 +1389,30 @@ Test::testPruneComplex()
void
Test::testPartialMerging()
{
- Grouping baseRequest = Grouping()
- .addLevel(GroupingLevel()
- .setExpression(AttributeNode("c1"))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))))
- .addLevel(GroupingLevel()
- .setExpression(AttributeNode("c2"))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))))
- .addLevel(GroupingLevel()
- .setExpression(AttributeNode("c3"))
- .addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))));
+ Grouping baseRequest;
+ baseRequest.addLevel(createGL(MU<AttributeNode>("c1"), MU<AttributeNode>("s1")))
+ .addLevel(createGL(MU<AttributeNode>("c2"), MU<AttributeNode>("s2")))
+ .addLevel(createGL(MU<AttributeNode>("c3"), MU<AttributeNode>("s3")));
// Cached result
Group cached = Group()
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(110)))
.addChild(Group()
.setId(Int64ResultNode(5))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(10)))
.addChild(Group()
.setId(Int64ResultNode(13))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(100)))
.addChild(Group()
.setId(Int64ResultNode(14))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(100)))
)
)
@@ -1401,17 +1420,17 @@ Test::testPartialMerging()
.addChild(Group()
.setId(Int64ResultNode(10))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(100)))
.addChild(Group()
.setId(Int64ResultNode(15))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(100)))
.addChild(Group()
.setId(Int64ResultNode(22))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s3"))
+ .setExpression(MU<AttributeNode>("s3"))
.setResult(Int64ResultNode(100)))
)
)
@@ -1422,23 +1441,23 @@ Test::testPartialMerging()
Grouping request = baseRequest.unchain().setFirstLevel(0).setLastLevel(0);
Group incoming = Group()
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(0)));
Group expected = Group()
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(110)))
.addChild(Group()
.setId(Int64ResultNode(5))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(0)))
)
.addChild(Group()
.setId(Int64ResultNode(10))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(0)))
);
EXPECT_TRUE(testPartialMerge(request.unchain().setRoot(incoming), request.unchain().setLastLevel(3).setRoot(cached), expected));
@@ -1448,81 +1467,81 @@ Test::testPartialMerging()
Grouping request = baseRequest.unchain().setFirstLevel(1).setLastLevel(1);
Group incoming = Group()
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(200)))
.addChild(Group()
.setId(Int64ResultNode(3))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(0)))
)
.addChild(Group()
.setId(Int64ResultNode(5))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(0)))
)
.addChild(Group()
.setId(Int64ResultNode(7))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(0)))
)
.addChild(Group()
.setId(Int64ResultNode(10))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(0))))
.addChild(Group()
.setId(Int64ResultNode(33))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(0)))
);
Group expected = Group()
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s0"))
+ .setExpression(MU<AttributeNode>("s0"))
.setResult(Int64ResultNode(200)))
.addChild(Group()
.setId(Int64ResultNode(3))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(0)))
)
.addChild(Group()
.setId(Int64ResultNode(5))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(10)))
.addChild(Group()
.setId(Int64ResultNode(13))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(0)))
)
)
.addChild(Group()
.setId(Int64ResultNode(7))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(0)))
)
.addChild(Group()
.setId(Int64ResultNode(10))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(100)))
.addChild(Group()
.setId(Int64ResultNode(15))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s2"))
+ .setExpression(MU<AttributeNode>("s2"))
.setResult(Int64ResultNode(0)))
)
)
.addChild(Group()
.setId(Int64ResultNode(33))
.addResult(SumAggregationResult()
- .setExpression(AttributeNode("s1"))
+ .setExpression(MU<AttributeNode>("s1"))
.setResult(Int64ResultNode(0)))
);
EXPECT_TRUE(testPartialMerge(request.unchain().setRoot(incoming), request.unchain().setFirstLevel(0).setLastLevel(3).setRoot(cached), expected));
@@ -1536,22 +1555,17 @@ void
Test::testPruneSimple()
{
{
- Grouping request = Grouping()
- .addLevel(GroupingLevel()
- .setExpression(AttributeNode("attr")))
- .setFirstLevel(1)
- .setLastLevel(1);
+ Grouping request;
+ request.addLevel(createGL(MU<AttributeNode>("attr"))).setFirstLevel(1).setLastLevel(1);
Group a = Group()
.addChild(Group().setId(StringResultNode("foo")))
.addChild(Group().setId(StringResultNode("bar")))
.addChild(Group().setId(StringResultNode("baz")));
- Group b = Group()
- .addChild(Group().setId(StringResultNode("foo")));
+ Group b = Group().addChild(Group().setId(StringResultNode("foo")));
- Group expect = Group()
- .addChild(Group().setId(StringResultNode("foo")));
+ Group expect = Group().addChild(Group().setId(StringResultNode("foo")));
EXPECT_TRUE(testPrune(request.unchain().setFirstLevel(0).setRoot(a), request.unchain().setRoot(b), expect));
}
@@ -1568,33 +1582,26 @@ Test::testTopN()
ctx.result().add(0).add(1).add(2);
ctx.add(IntAttrBuilder("foo").add(3).add(7).add(15).sp());
- Grouping request = Grouping()
- .setRoot(Group()
- .addResult(CountAggregationResult()
- .setExpression(ConstantNode(Int64ResultNode(0)))
- )
- );
+ Grouping request;
+ request.setRoot(Group().addResult(CountAggregationResult().setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))));
{
- Group expect = Group()
- .addResult(CountAggregationResult().setCount(3)
- .setExpression(ConstantNode(Int64ResultNode(0)))
- );
+ Group expect;
+ expect.addResult(CountAggregationResult().setCount(3).setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0))));
EXPECT_TRUE(testAggregation(ctx, request, expect));
}
{
- Group expect = Group()
- .addResult(CountAggregationResult().setCount(1)
- .setExpression(ConstantNode(Int64ResultNode(0)))
- );
+ Group expect = Group().addResult(CountAggregationResult()
+ .setCount(1)
+ .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0))));
EXPECT_TRUE(testAggregation(ctx, request.setTopN(1), expect));
}
{
- Grouping request2 = Grouping()
- .addLevel(GroupingLevel()
- .addAggregationResult(SumAggregationResult())
- .addOrderBy(AggregationRefNode(0), false));
+ Grouping request2;
+ request2.addLevel(std::move(GroupingLevel()
+ .addAggregationResult(MU<SumAggregationResult>())
+ .addOrderBy(MU<AggregationRefNode>(0), false)));
EXPECT_TRUE(request2.needResort());
request2.setTopN(0);
EXPECT_TRUE(request2.needResort());
@@ -1616,17 +1623,11 @@ Test::testCount()
ctx.result().add(0).add(1).add(2);
ctx.add(IntAttrBuilder("foo").add(3).add(7).add(15).sp());
- Grouping request = Grouping()
- .setRoot(Group()
- .addResult(CountAggregationResult()
- .setExpression(ConstantNode(Int64ResultNode(0)))
- )
- );
+ Grouping request;
+ request.setRoot(Group().addResult(CountAggregationResult().setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))));
- Group expect = Group()
- .addResult(CountAggregationResult().setCount(3)
- .setExpression(ConstantNode(Int64ResultNode(0)))
- );
+ Group expect;
+ expect.addResult(CountAggregationResult().setCount(3).setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0))));
EXPECT_TRUE(testAggregation(ctx, request, expect));
}
@@ -1653,7 +1654,7 @@ Test::testFS4HitCollection()
.setRoot(Group()
.addResult(HitsAggregationResult()
.setMaxHits(3)
- .setExpression(ConstantNode(Int64ResultNode(0))))
+ .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0))))
);
Group expect = Group()
@@ -1663,7 +1664,7 @@ Test::testFS4HitCollection()
.addHit(FS4Hit(25, 25.0))
.addHit(FS4Hit(20, 20.0))
.sort()
- .setExpression(ConstantNode(Int64ResultNode(0))));
+ .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0))));
EXPECT_TRUE(testAggregation(ctx, request, expect));
}
@@ -1673,7 +1674,7 @@ Test::testFS4HitCollection()
.setRoot(Group()
.addResult(HitsAggregationResult()
.setMaxHits(3)
- .setExpression(ConstantNode(Int64ResultNode(0))))
+ .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0))))
);
Group expect = Group()
@@ -1684,7 +1685,7 @@ Test::testFS4HitCollection()
.addHit(FS4Hit(20, 20.0))
.addHit(FS4Hit(10, 10.0))
.sort()
- .setExpression(ConstantNode(Int64ResultNode(0))));
+ .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0))));
Group a = Group()
.setId(NullResultNode())
@@ -1694,7 +1695,7 @@ Test::testFS4HitCollection()
.addHit(FS4Hit(1, 5.0))
.addHit(FS4Hit(2, 4.0))
.sort()
- .setExpression(ConstantNode(Int64ResultNode(0))));
+ .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0))));
Group b = Group()
.setId(NullResultNode())
@@ -1704,7 +1705,7 @@ Test::testFS4HitCollection()
.addHit(FS4Hit(3, 7.0))
.addHit(FS4Hit(4, 6.0))
.sort()
- .setExpression(ConstantNode(Int64ResultNode(0))));
+ .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0))));
Group c = Group()
.setId(NullResultNode())
@@ -1714,7 +1715,7 @@ Test::testFS4HitCollection()
.addHit(FS4Hit(5, 9.0))
.addHit(FS4Hit(6, 8.0))
.sort()
- .setExpression(ConstantNode(Int64ResultNode(0))));
+ .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0))));
EXPECT_TRUE(testMerge(request.unchain().setRoot(a), request.unchain().setRoot(b), request.unchain().setRoot(c), expect));
EXPECT_TRUE(testMerge(request.unchain().setRoot(b), request.unchain().setRoot(c), request.unchain().setRoot(a), expect));
@@ -1770,9 +1771,9 @@ Test::checkBucket(const NumericResultNode &width, const NumericResultNode &value
} else {
return EXPECT_TRUE(false);
}
- Grouping request = Grouping()
- .addLevel(GroupingLevel()
- .setExpression(FixedWidthBucketFunctionNode(AttributeNode("attr")).setWidth(width)));
+ std::unique_ptr<FixedWidthBucketFunctionNode> fixed = MU<FixedWidthBucketFunctionNode>(MU<AttributeNode>("attr"));
+ fixed->setWidth(width);
+ Grouping request = Grouping().addLevel(createGL(std::move(fixed)));
Group expect = Group().addChild(Group().setId(bucket));
return testAggregation(ctx, request, expect);
}
@@ -1889,11 +1890,11 @@ struct RunDiff { ~RunDiff() { system("diff -u lhs.out rhs.out > diff.txt"); }};
int
Test::Main()
{
- RunDiff runDiff;
- (void) runDiff;
- TEST_DEBUG("lhs.out", "rhs.out");
+ //RunDiff runDiff;
+ //(void) runDiff;
+ //TEST_DEBUG("lhs.out", "rhs.out");
TEST_INIT("grouping_test");
- testAggregationSimple();
+ TEST_DO(testAggregationSimple());
testAggregationLevels();
testAggregationMaxGroups();
testAggregationGroupOrder();