0004-Simplify-accessing-sequence-tuple-data.patch
text/plain
Filename: 0004-Simplify-accessing-sequence-tuple-data.patch
Type: text/plain
Part: 3
Patch
Format: format-patch
Series: patch 0004
Subject: Simplify accessing sequence tuple data
| File | + | − |
|---|---|---|
| src/backend/replication/logical/reorderbuffer.c | 8 | 29 |
From 9f29fac7e479c255fb247d201fe8691655c11fbf Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Tue, 7 Dec 2021 15:31:36 +0100
Subject: [PATCH 4/4] Simplify accessing sequence tuple data
---
.../replication/logical/reorderbuffer.c | 37 ++++---------------
1 file changed, 8 insertions(+), 29 deletions(-)
diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c
index 434926459f..b4fa16bebe 100644
--- a/src/backend/replication/logical/reorderbuffer.c
+++ b/src/backend/replication/logical/reorderbuffer.c
@@ -120,6 +120,7 @@
#include "access/xact.h"
#include "access/xlog_internal.h"
#include "catalog/catalog.h"
+#include "commands/sequence.h"
#include "lib/binaryheap.h"
#include "miscadmin.h"
#include "pgstat.h"
@@ -1089,9 +1090,7 @@ ReorderBufferQueueSequence(ReorderBuffer *rb, TransactionId xid,
{
Relation relation;
HeapTuple tuple;
- bool isnull;
- int64 last_value, log_cnt;
- bool is_called;
+ Form_pg_sequence_data seq;
Oid reloid;
if (using_subtxn)
@@ -1108,19 +1107,10 @@ ReorderBufferQueueSequence(ReorderBuffer *rb, TransactionId xid,
relation = RelationIdGetRelation(reloid);
tuple = &tuplebuf->tuple;
-
- /*
- * Extract the internal sequence values, describing the state.
- *
- * XXX Seems a bit strange to access it directly. Maybe there's
- * a better / more correct way?
- */
- last_value = heap_getattr(tuple, 1, RelationGetDescr(relation), &isnull);
- log_cnt = heap_getattr(tuple, 2, RelationGetDescr(relation), &isnull);
- is_called = heap_getattr(tuple, 3, RelationGetDescr(relation), &isnull);
+ seq = (Form_pg_sequence_data) GETSTRUCT(tuple);
rb->sequence(rb, txn, lsn, relation, transactional, created,
- last_value, log_cnt, is_called);
+ seq->last_value, seq->log_cnt, seq->is_called);
RelationClose(relation);
@@ -2249,31 +2239,20 @@ ReorderBufferApplySequence(ReorderBuffer *rb, ReorderBufferTXN *txn,
bool streaming)
{
HeapTuple tuple;
- bool isnull;
- int64 last_value, log_cnt;
- bool is_called;
+ Form_pg_sequence_data seq;
tuple = &change->data.sequence.tuple->tuple;
-
- /*
- * Extract the internal sequence values, describing the state.
- *
- * XXX Seems a bit strange to access it directly. Maybe there's
- * a better / more correct way?
- */
- last_value = heap_getattr(tuple, 1, RelationGetDescr(relation), &isnull);
- log_cnt = heap_getattr(tuple, 2, RelationGetDescr(relation), &isnull);
- is_called = heap_getattr(tuple, 3, RelationGetDescr(relation), &isnull);
+ seq = (Form_pg_sequence_data) GETSTRUCT(tuple);
/* Only ever called from ReorderBufferApplySequence, so transational. */
if (streaming)
rb->stream_sequence(rb, txn, change->lsn, relation, true,
change->data.sequence.created,
- last_value, log_cnt, is_called);
+ seq->last_value, seq->log_cnt, seq->is_called);
else
rb->sequence(rb, txn, change->lsn, relation, true,
change->data.sequence.created,
- last_value, log_cnt, is_called);
+ seq->last_value, seq->log_cnt, seq->is_called);
}
/*
--
2.34.1