v6-fix.patch
text/x-patch
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
Series: patch v6
| File | + | − |
|---|---|---|
| src/backend/executor/nodeWindowAgg.c | 6 | 6 |
| src/test/regress/expected/rpr.out | 4 | 4 |
diff --git a/src/backend/executor/nodeWindowAgg.c b/src/backend/executor/nodeWindowAgg.c
index 32270d051a..2b78cb6722 100644
--- a/src/backend/executor/nodeWindowAgg.c
+++ b/src/backend/executor/nodeWindowAgg.c
@@ -968,12 +968,12 @@ eval_windowaggregates(WindowAggState *winstate)
{
/*
* If the skip mode is SKIP TO PAST LAST ROW and we already know that
- * current row is a skipped row or an unmatched row, we don't need to
- * accumulate rows, just return NULL.
+ * current row is a skipped row, we don't need to accumulate rows,
+ * just return NULL. Note that for unamtched row, we need to do
+ * aggregation so that count(*) shows 0, rather than NULL.
*/
if (winstate->rpSkipTo == ST_PAST_LAST_ROW &&
- (get_reduced_frame_map(winstate, winstate->currentpos) == RF_SKIPPED ||
- get_reduced_frame_map(winstate, winstate->currentpos) == RF_UNMATCHED))
+ get_reduced_frame_map(winstate, winstate->currentpos) == RF_SKIPPED)
agg_result_isnull = true;
}
@@ -1080,8 +1080,8 @@ next_tuple:
result, isnull);
/*
- * RPR is enabled and we just return NULL. because skip mode is SKIP
- * TO PAST LAST ROW and current row is skipped row or unmatched row.
+ * RPR is defined and we just return NULL because skip mode is SKIP
+ * TO PAST LAST ROW and current row is skipped row.
*/
if (agg_result_isnull)
{
diff --git a/src/test/regress/expected/rpr.out b/src/test/regress/expected/rpr.out
index 63bed05f05..97bdc630d1 100644
--- a/src/test/regress/expected/rpr.out
+++ b/src/test/regress/expected/rpr.out
@@ -457,22 +457,22 @@ DOWN AS price < PREV(price)
company1 | 07-02-2023 | 200 | | | | | | |
company1 | 07-03-2023 | 150 | | | | | | |
company1 | 07-04-2023 | 140 | | | | | | |
- company1 | 07-05-2023 | 150 | | | | | | |
+ company1 | 07-05-2023 | 150 | | | | | | | 0
company1 | 07-06-2023 | 90 | 90 | 120 | 130 | 90 | 450 | 112.5000000000000000 | 4
company1 | 07-07-2023 | 110 | | | | | | |
company1 | 07-08-2023 | 130 | | | | | | |
company1 | 07-09-2023 | 120 | | | | | | |
- company1 | 07-10-2023 | 130 | | | | | | |
+ company1 | 07-10-2023 | 130 | | | | | | | 0
company2 | 07-01-2023 | 50 | 50 | 1400 | 2000 | 50 | 4950 | 1237.5000000000000000 | 4
company2 | 07-02-2023 | 2000 | | | | | | |
company2 | 07-03-2023 | 1500 | | | | | | |
company2 | 07-04-2023 | 1400 | | | | | | |
- company2 | 07-05-2023 | 1500 | | | | | | |
+ company2 | 07-05-2023 | 1500 | | | | | | | 0
company2 | 07-06-2023 | 60 | 60 | 1200 | 1300 | 60 | 3660 | 915.0000000000000000 | 4
company2 | 07-07-2023 | 1100 | | | | | | |
company2 | 07-08-2023 | 1300 | | | | | | |
company2 | 07-09-2023 | 1200 | | | | | | |
- company2 | 07-10-2023 | 1300 | | | | | | |
+ company2 | 07-10-2023 | 1300 | | | | | | | 0
(20 rows)
-- using AFTER MATCH SKIP TO NEXT ROW