diff --git a/src/parallel/executor.cpp b/src/parallel/executor.cpp index 70617fd2a24..09b0e5e8204 100644 --- a/src/parallel/executor.cpp +++ b/src/parallel/executor.cpp @@ -584,6 +584,7 @@ bool Executor::GetPipelinesProgress(double ¤t_progress, uint64_t ¤t_ vector progress; vector cardinality; total_cardinality = 0; + current_cardinality = 0; for (auto &pipeline : pipelines) { double child_percentage; idx_t child_cardinality; @@ -595,15 +596,16 @@ bool Executor::GetPipelinesProgress(double ¤t_progress, uint64_t ¤t_ cardinality.push_back(child_cardinality); total_cardinality += child_cardinality; } - current_cardinality = 0; if (total_cardinality == 0) { return true; } current_progress = 0; for (size_t i = 0; i < progress.size(); i++) { + D_ASSERT(progress[i] <= 100); current_cardinality += double(progress[i]) * double(cardinality[i]) / double(100); current_progress += progress[i] * double(cardinality[i]) / double(total_cardinality); + D_ASSERT(current_cardinality < total_cardinality); } return true; } // LCOV_EXCL_STOP diff --git a/test/api/test_progress_bar.cpp b/test/api/test_progress_bar.cpp index f7d80921f41..9a20bb103df 100644 --- a/test/api/test_progress_bar.cpp +++ b/test/api/test_progress_bar.cpp @@ -57,7 +57,7 @@ class TestProgressBar { } }; -TEST_CASE("Test Progress Bar Fast", "[api]") { +TEST_CASE("Test Progress Bar Fast", "[progress-bar]") { DuckDB db(nullptr); Connection con(db); REQUIRE_NOTHROW(con.context->GetQueryProgress()); @@ -126,7 +126,7 @@ TEST_CASE("Test Progress Bar Fast", "[api]") { REQUIRE_NO_FAIL(*result); } -TEST_CASE("Test Progress Bar", "[api][.]") { +TEST_CASE("Test Progress Bar", "[progress-bar][.]") { DuckDB db(nullptr); Connection con(db); TestProgressBar test_progress(con.context.get()); @@ -190,7 +190,7 @@ TEST_CASE("Test Progress Bar", "[api][.]") { REQUIRE_NO_FAIL(*result); } -TEST_CASE("Test Progress Bar CSV", "[api][.]") { +TEST_CASE("Test Progress Bar CSV", "[progress-bar][.]") { DuckDB db(nullptr); Connection con(db);