From edd902cd18bfc43ffec2aea04c7cc6c870c3211a Mon Sep 17 00:00:00 2001 From: Josip Mrden Date: Fri, 23 Jun 2023 14:47:41 +0200 Subject: [PATCH] Fix cost estimator test --- src/query/plan/cost_estimator.hpp | 8 ++------ tests/unit/query_cost_estimator.cpp | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/query/plan/cost_estimator.hpp b/src/query/plan/cost_estimator.hpp index 04af448a9..ab1a928e8 100644 --- a/src/query/plan/cost_estimator.hpp +++ b/src/query/plan/cost_estimator.hpp @@ -302,13 +302,9 @@ class CostEstimator : public HierarchicalLogicalOperatorVisitor { // Estimate cost on the subquery branch independently, use a copy auto last_scope = scopes_.back(); double subquery_cost = EstimateCostOnBranch(&op.subquery_, last_scope); + subquery_cost = subquery_cost != 0 ? subquery_cost : 1; + cardinality_ *= subquery_cost; - // if the query is a unit subquery, we don't want the cost to be zero but 1xN - double input_cost = cost(); - input_cost = input_cost == 0 ? 1 : input_cost; - subquery_cost = subquery_cost == 0 ? 1 : subquery_cost; - - cardinality_ *= input_cost * subquery_cost; IncrementCost(CostParam::kSubquery); return false; diff --git a/tests/unit/query_cost_estimator.cpp b/tests/unit/query_cost_estimator.cpp index bd1fee60b..d89031b82 100644 --- a/tests/unit/query_cost_estimator.cpp +++ b/tests/unit/query_cost_estimator.cpp @@ -201,7 +201,7 @@ TEST_F(QueryCostEstimator, SubqueryCartesian) { std::shared_ptr input = std::make_shared(std::make_shared(), NextSymbol()); std::shared_ptr subquery = std::make_shared(std::make_shared(), NextSymbol()); MakeOp(input, subquery, true); - EXPECT_COST(CostParam::kSubquery * no_vertices * no_vertices); + EXPECT_COST(CostParam::kSubquery * no_vertices * no_vertices + no_vertices); } TEST_F(QueryCostEstimator, UnitSubquery) {