nocfbot-review_changes.patch
application/octet-stream
Filename: nocfbot-review_changes.patch
Type: application/octet-stream
Part: 0
Message:
Re: Adding REPACK [concurrently]
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
| File | + | − |
|---|---|---|
| src/backend/commands/cluster.c | 13 | 13 |
Subject: [PATCH] review changes
---
Index: src/backend/commands/cluster.c
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c
--- a/src/backend/commands/cluster.c (revision 5936ff16dfe4765ef0dd6e18be401aefcf120d36)
+++ b/src/backend/commands/cluster.c (date 1772889987377)
@@ -2971,9 +2971,6 @@
/*
* Update indexes.
- *
- * In case functions in the index need the active snapshot and caller
- * hasn't set one.
*/
ExecStoreHeapTuple(tup, index_slot, false);
recheck = ExecInsertIndexTuples(iistate->rri,
@@ -2988,6 +2985,7 @@
* committed.)
*/
list_free(recheck);
+ ResetPerTupleExprContext(iistate->estate);
pgstat_progress_incr_param(PROGRESS_REPACK_HEAP_TUPLES_INSERTED, 1);
}
@@ -3032,6 +3030,7 @@
index_slot,
NIL, NULL);
list_free(recheck);
+ ResetPerTupleExprContext(iistate->estate);
}
pgstat_progress_incr_param(PROGRESS_REPACK_HEAP_TUPLES_UPDATED, 1);
@@ -3260,25 +3259,24 @@
scan = index_beginscan(rel, ident_index, GetActiveSnapshot(),
NULL, dest->ident_key_nentries, 0);
- /*
- * Scan key is passed by caller, so it does not have to be constructed
- * multiple times. Key entries have all fields initialized, except for
- * sk_argument.
- */
- index_rescan(scan, dest->ident_key, dest->ident_key_nentries, NULL, 0);
-
/* Info needed to retrieve key values from heap tuple. */
ident_form = ident_index->rd_index;
ident_indkey = &ident_form->indkey;
- /* Use the incoming tuple to finalize the scan key. */
- for (int i = 0; i < scan->numberOfKeys; i++)
+ /*
+ * Scan key is passed by caller, so it does not have to be constructed
+ * multiple times. Key entries have all fields initialized, except for
+ * sk_argument.
+ *
+ * Use the incoming tuple to finalize the scan key.
+ */
+ for (int i = 0; i < dest->ident_key_nentries; i++)
{
ScanKey entry;
bool isnull;
int16 attno_heap;
- entry = &scan->keyData[i];
+ entry = &dest->ident_key[i];
attno_heap = ident_indkey->values[i];
entry->sk_argument = heap_getattr(tup_key,
attno_heap,
@@ -3286,6 +3284,8 @@
&isnull);
Assert(!isnull);
}
+
+ index_rescan(scan, dest->ident_key, dest->ident_key_nentries, NULL, 0);
if (index_getnext_slot(scan, ForwardScanDirection, ident_slot))
{
bool shouldFree;