aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/executor/nodeAgg.c2
-rw-r--r--src/backend/utils/sort/logtape.c12
2 files changed, 12 insertions, 2 deletions
diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c
index 28802e6588d..75e5bbf209d 100644
--- a/src/backend/executor/nodeAgg.c
+++ b/src/backend/executor/nodeAgg.c
@@ -2704,8 +2704,8 @@ agg_refill_hash_table(AggState *aggstate)
if (spill_initialized)
{
- hash_agg_update_metrics(aggstate, true, spill.npartitions);
hashagg_spill_finish(aggstate, &spill, batch->setno);
+ hash_agg_update_metrics(aggstate, true, spill.npartitions);
}
else
hash_agg_update_metrics(aggstate, true, 0);
diff --git a/src/backend/utils/sort/logtape.c b/src/backend/utils/sort/logtape.c
index d6d1e1911ea..28905124f96 100644
--- a/src/backend/utils/sort/logtape.c
+++ b/src/backend/utils/sort/logtape.c
@@ -1264,9 +1264,19 @@ LogicalTapeTell(LogicalTapeSet *lts, int tapenum,
/*
* Obtain total disk space currently used by a LogicalTapeSet, in blocks.
+ *
+ * This should not be called while there are open write buffers; otherwise it
+ * may not account for buffered data.
*/
long
LogicalTapeSetBlocks(LogicalTapeSet *lts)
{
- return lts->nBlocksAllocated - lts->nHoleBlocks;
+#ifdef USE_ASSERT_CHECKING
+ for (int i = 0; i < lts->nTapes; i++)
+ {
+ LogicalTape *lt = &lts->tapes[i];
+ Assert(!lt->writing || lt->buffer == NULL);
+ }
+#endif
+ return lts->nBlocksWritten - lts->nHoleBlocks;
}