diff options
author | Håvard Pettersen <havardpe@yahooinc.com> | 2024-02-15 09:50:53 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@yahooinc.com> | 2024-02-16 11:52:14 +0000 |
commit | 51db1c06279843401604cc61f8e6d12c9cc32830 (patch) | |
tree | 5e915a302ed8f7cd680bf8e04477eb7a5c2618c9 /searchlib/src/tests/queryeval/blueprint | |
parent | ed564d0a528d5a88585b2c5e3e56ec21b7f12a12 (diff) |
use flow for fetchPostings
note that only AND/OR are wired to their respective flows here, which
means only strict OR should change (all children getting full in-flow)
Diffstat (limited to 'searchlib/src/tests/queryeval/blueprint')
-rw-r--r-- | searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp b/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp index ee7c201f093..31db731a598 100644 --- a/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp +++ b/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp @@ -165,20 +165,30 @@ TEST("test Or propagates updated histestimate") { bp->addChild(ap(MyLeafSpec(800).create<RememberExecuteInfo>()->setSourceId(2))); bp->addChild(ap(MyLeafSpec(20).create<RememberExecuteInfo>()->setSourceId(2))); bp->setDocIdLimit(5000); - // sort OR as non-strict to get expected order. With strict OR, - // the order would be irrelevant since we use the relative - // estimate as strict_cost for leafs. + // NOTE: use non-strict OR ordering since strict OR ordering is non-deterministic optimize(bp, false); - bp->fetchPostings(ExecuteInfo::TRUE); + //--- execute info when non-strict: + bp->fetchPostings(ExecuteInfo::FALSE); EXPECT_EQUAL(4u, bp->childCnt()); for (uint32_t i = 0; i < bp->childCnt(); i++) { const auto & child = dynamic_cast<const RememberExecuteInfo &>(bp->getChild(i)); - EXPECT_TRUE(child.is_strict); + EXPECT_FALSE(child.is_strict); } EXPECT_EQUAL(1.0, dynamic_cast<const RememberExecuteInfo &>(bp->getChild(0)).hit_rate); EXPECT_APPROX(0.5, dynamic_cast<const RememberExecuteInfo &>(bp->getChild(1)).hit_rate, 1e-6); EXPECT_APPROX(0.5*3.0/5.0, dynamic_cast<const RememberExecuteInfo &>(bp->getChild(2)).hit_rate, 1e-6); EXPECT_APPROX(0.5*3.0*42.0/(5.0*50.0), dynamic_cast<const RememberExecuteInfo &>(bp->getChild(3)).hit_rate, 1e-6); + //--- execute info when strict: + bp->fetchPostings(ExecuteInfo::TRUE); + EXPECT_EQUAL(4u, bp->childCnt()); + for (uint32_t i = 0; i < bp->childCnt(); i++) { + const auto & child = dynamic_cast<const RememberExecuteInfo &>(bp->getChild(i)); + EXPECT_TRUE(child.is_strict); + } + EXPECT_EQUAL(1.0, dynamic_cast<const RememberExecuteInfo &>(bp->getChild(0)).hit_rate); + EXPECT_EQUAL(1.0, dynamic_cast<const RememberExecuteInfo &>(bp->getChild(1)).hit_rate); + EXPECT_EQUAL(1.0, dynamic_cast<const RememberExecuteInfo &>(bp->getChild(2)).hit_rate); + EXPECT_EQUAL(1.0, dynamic_cast<const RememberExecuteInfo &>(bp->getChild(3)).hit_rate); } TEST("test And Blueprint") { |