mirror of
https://github.com/postgres/postgres.git
synced 2025-04-20 00:42:27 +03:00
Rename alloc/free functions in reorderbuffer.c
There used to be bespoken pools for these structs to reduce the palloc/pfree overhead, but that was ripped out a long time ago and replaced with the generic, cheaper generational memory allocator (commit a4ccc1cef5). The Get/Return terminology made sense with the pools, as you "got" an object from the pool and "returned" it later, but now it just looks weird. Rename to Alloc/Free. Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://www.postgresql.org/message-id/c9e43d2d-8e83-444f-b111-430377368989@iki.fi
This commit is contained in:
parent
025e7e1eb4
commit
ac4494646d
@ -915,7 +915,7 @@ DecodeInsert(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
|
|||||||
if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
|
if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
change = ReorderBufferGetChange(ctx->reorder);
|
change = ReorderBufferAllocChange(ctx->reorder);
|
||||||
if (!(xlrec->flags & XLH_INSERT_IS_SPECULATIVE))
|
if (!(xlrec->flags & XLH_INSERT_IS_SPECULATIVE))
|
||||||
change->action = REORDER_BUFFER_CHANGE_INSERT;
|
change->action = REORDER_BUFFER_CHANGE_INSERT;
|
||||||
else
|
else
|
||||||
@ -928,7 +928,7 @@ DecodeInsert(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
|
|||||||
tuplelen = datalen - SizeOfHeapHeader;
|
tuplelen = datalen - SizeOfHeapHeader;
|
||||||
|
|
||||||
change->data.tp.newtuple =
|
change->data.tp.newtuple =
|
||||||
ReorderBufferGetTupleBuf(ctx->reorder, tuplelen);
|
ReorderBufferAllocTupleBuf(ctx->reorder, tuplelen);
|
||||||
|
|
||||||
DecodeXLogTuple(tupledata, datalen, change->data.tp.newtuple);
|
DecodeXLogTuple(tupledata, datalen, change->data.tp.newtuple);
|
||||||
|
|
||||||
@ -965,7 +965,7 @@ DecodeUpdate(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
|
|||||||
if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
|
if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
change = ReorderBufferGetChange(ctx->reorder);
|
change = ReorderBufferAllocChange(ctx->reorder);
|
||||||
change->action = REORDER_BUFFER_CHANGE_UPDATE;
|
change->action = REORDER_BUFFER_CHANGE_UPDATE;
|
||||||
change->origin_id = XLogRecGetOrigin(r);
|
change->origin_id = XLogRecGetOrigin(r);
|
||||||
memcpy(&change->data.tp.rlocator, &target_locator, sizeof(RelFileLocator));
|
memcpy(&change->data.tp.rlocator, &target_locator, sizeof(RelFileLocator));
|
||||||
@ -980,7 +980,7 @@ DecodeUpdate(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
|
|||||||
tuplelen = datalen - SizeOfHeapHeader;
|
tuplelen = datalen - SizeOfHeapHeader;
|
||||||
|
|
||||||
change->data.tp.newtuple =
|
change->data.tp.newtuple =
|
||||||
ReorderBufferGetTupleBuf(ctx->reorder, tuplelen);
|
ReorderBufferAllocTupleBuf(ctx->reorder, tuplelen);
|
||||||
|
|
||||||
DecodeXLogTuple(data, datalen, change->data.tp.newtuple);
|
DecodeXLogTuple(data, datalen, change->data.tp.newtuple);
|
||||||
}
|
}
|
||||||
@ -996,7 +996,7 @@ DecodeUpdate(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
|
|||||||
tuplelen = datalen - SizeOfHeapHeader;
|
tuplelen = datalen - SizeOfHeapHeader;
|
||||||
|
|
||||||
change->data.tp.oldtuple =
|
change->data.tp.oldtuple =
|
||||||
ReorderBufferGetTupleBuf(ctx->reorder, tuplelen);
|
ReorderBufferAllocTupleBuf(ctx->reorder, tuplelen);
|
||||||
|
|
||||||
DecodeXLogTuple(data, datalen, change->data.tp.oldtuple);
|
DecodeXLogTuple(data, datalen, change->data.tp.oldtuple);
|
||||||
}
|
}
|
||||||
@ -1031,7 +1031,7 @@ DecodeDelete(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
|
|||||||
if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
|
if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
change = ReorderBufferGetChange(ctx->reorder);
|
change = ReorderBufferAllocChange(ctx->reorder);
|
||||||
|
|
||||||
if (xlrec->flags & XLH_DELETE_IS_SUPER)
|
if (xlrec->flags & XLH_DELETE_IS_SUPER)
|
||||||
change->action = REORDER_BUFFER_CHANGE_INTERNAL_SPEC_ABORT;
|
change->action = REORDER_BUFFER_CHANGE_INTERNAL_SPEC_ABORT;
|
||||||
@ -1051,7 +1051,7 @@ DecodeDelete(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
|
|||||||
Assert(XLogRecGetDataLen(r) > (SizeOfHeapDelete + SizeOfHeapHeader));
|
Assert(XLogRecGetDataLen(r) > (SizeOfHeapDelete + SizeOfHeapHeader));
|
||||||
|
|
||||||
change->data.tp.oldtuple =
|
change->data.tp.oldtuple =
|
||||||
ReorderBufferGetTupleBuf(ctx->reorder, tuplelen);
|
ReorderBufferAllocTupleBuf(ctx->reorder, tuplelen);
|
||||||
|
|
||||||
DecodeXLogTuple((char *) xlrec + SizeOfHeapDelete,
|
DecodeXLogTuple((char *) xlrec + SizeOfHeapDelete,
|
||||||
datalen, change->data.tp.oldtuple);
|
datalen, change->data.tp.oldtuple);
|
||||||
@ -1083,7 +1083,7 @@ DecodeTruncate(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
|
|||||||
if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
|
if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
change = ReorderBufferGetChange(ctx->reorder);
|
change = ReorderBufferAllocChange(ctx->reorder);
|
||||||
change->action = REORDER_BUFFER_CHANGE_TRUNCATE;
|
change->action = REORDER_BUFFER_CHANGE_TRUNCATE;
|
||||||
change->origin_id = XLogRecGetOrigin(r);
|
change->origin_id = XLogRecGetOrigin(r);
|
||||||
if (xlrec->flags & XLH_TRUNCATE_CASCADE)
|
if (xlrec->flags & XLH_TRUNCATE_CASCADE)
|
||||||
@ -1091,8 +1091,8 @@ DecodeTruncate(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
|
|||||||
if (xlrec->flags & XLH_TRUNCATE_RESTART_SEQS)
|
if (xlrec->flags & XLH_TRUNCATE_RESTART_SEQS)
|
||||||
change->data.truncate.restart_seqs = true;
|
change->data.truncate.restart_seqs = true;
|
||||||
change->data.truncate.nrelids = xlrec->nrelids;
|
change->data.truncate.nrelids = xlrec->nrelids;
|
||||||
change->data.truncate.relids = ReorderBufferGetRelids(ctx->reorder,
|
change->data.truncate.relids = ReorderBufferAllocRelids(ctx->reorder,
|
||||||
xlrec->nrelids);
|
xlrec->nrelids);
|
||||||
memcpy(change->data.truncate.relids, xlrec->relids,
|
memcpy(change->data.truncate.relids, xlrec->relids,
|
||||||
xlrec->nrelids * sizeof(Oid));
|
xlrec->nrelids * sizeof(Oid));
|
||||||
ReorderBufferQueueChange(ctx->reorder, XLogRecGetXid(r),
|
ReorderBufferQueueChange(ctx->reorder, XLogRecGetXid(r),
|
||||||
@ -1149,7 +1149,7 @@ DecodeMultiInsert(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
|
|||||||
HeapTuple tuple;
|
HeapTuple tuple;
|
||||||
HeapTupleHeader header;
|
HeapTupleHeader header;
|
||||||
|
|
||||||
change = ReorderBufferGetChange(ctx->reorder);
|
change = ReorderBufferAllocChange(ctx->reorder);
|
||||||
change->action = REORDER_BUFFER_CHANGE_INSERT;
|
change->action = REORDER_BUFFER_CHANGE_INSERT;
|
||||||
change->origin_id = XLogRecGetOrigin(r);
|
change->origin_id = XLogRecGetOrigin(r);
|
||||||
|
|
||||||
@ -1160,7 +1160,7 @@ DecodeMultiInsert(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
|
|||||||
datalen = xlhdr->datalen;
|
datalen = xlhdr->datalen;
|
||||||
|
|
||||||
change->data.tp.newtuple =
|
change->data.tp.newtuple =
|
||||||
ReorderBufferGetTupleBuf(ctx->reorder, datalen);
|
ReorderBufferAllocTupleBuf(ctx->reorder, datalen);
|
||||||
|
|
||||||
tuple = change->data.tp.newtuple;
|
tuple = change->data.tp.newtuple;
|
||||||
header = tuple->t_data;
|
header = tuple->t_data;
|
||||||
@ -1224,7 +1224,7 @@ DecodeSpecConfirm(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
|
|||||||
if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
|
if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
change = ReorderBufferGetChange(ctx->reorder);
|
change = ReorderBufferAllocChange(ctx->reorder);
|
||||||
change->action = REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM;
|
change->action = REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM;
|
||||||
change->origin_id = XLogRecGetOrigin(r);
|
change->origin_id = XLogRecGetOrigin(r);
|
||||||
|
|
||||||
|
@ -220,8 +220,8 @@ int debug_logical_replication_streaming = DEBUG_LOGICAL_REP_STREAMING_BUFFERED
|
|||||||
* primary reorderbuffer support routines
|
* primary reorderbuffer support routines
|
||||||
* ---------------------------------------
|
* ---------------------------------------
|
||||||
*/
|
*/
|
||||||
static ReorderBufferTXN *ReorderBufferGetTXN(ReorderBuffer *rb);
|
static ReorderBufferTXN *ReorderBufferAllocTXN(ReorderBuffer *rb);
|
||||||
static void ReorderBufferReturnTXN(ReorderBuffer *rb, ReorderBufferTXN *txn);
|
static void ReorderBufferFreeTXN(ReorderBuffer *rb, ReorderBufferTXN *txn);
|
||||||
static ReorderBufferTXN *ReorderBufferTXNByXid(ReorderBuffer *rb,
|
static ReorderBufferTXN *ReorderBufferTXNByXid(ReorderBuffer *rb,
|
||||||
TransactionId xid, bool create, bool *is_new,
|
TransactionId xid, bool create, bool *is_new,
|
||||||
XLogRecPtr lsn, bool create_as_top);
|
XLogRecPtr lsn, bool create_as_top);
|
||||||
@ -416,10 +416,10 @@ ReorderBufferFree(ReorderBuffer *rb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get an unused, possibly preallocated, ReorderBufferTXN.
|
* Allocate a new ReorderBufferTXN.
|
||||||
*/
|
*/
|
||||||
static ReorderBufferTXN *
|
static ReorderBufferTXN *
|
||||||
ReorderBufferGetTXN(ReorderBuffer *rb)
|
ReorderBufferAllocTXN(ReorderBuffer *rb)
|
||||||
{
|
{
|
||||||
ReorderBufferTXN *txn;
|
ReorderBufferTXN *txn;
|
||||||
|
|
||||||
@ -443,7 +443,7 @@ ReorderBufferGetTXN(ReorderBuffer *rb)
|
|||||||
* Free a ReorderBufferTXN.
|
* Free a ReorderBufferTXN.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
ReorderBufferReturnTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
|
ReorderBufferFreeTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
|
||||||
{
|
{
|
||||||
/* clean the lookup cache if we were cached (quite likely) */
|
/* clean the lookup cache if we were cached (quite likely) */
|
||||||
if (rb->by_txn_last_xid == txn->xid)
|
if (rb->by_txn_last_xid == txn->xid)
|
||||||
@ -482,10 +482,10 @@ ReorderBufferReturnTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get a fresh ReorderBufferChange.
|
* Allocate a ReorderBufferChange.
|
||||||
*/
|
*/
|
||||||
ReorderBufferChange *
|
ReorderBufferChange *
|
||||||
ReorderBufferGetChange(ReorderBuffer *rb)
|
ReorderBufferAllocChange(ReorderBuffer *rb)
|
||||||
{
|
{
|
||||||
ReorderBufferChange *change;
|
ReorderBufferChange *change;
|
||||||
|
|
||||||
@ -500,8 +500,8 @@ ReorderBufferGetChange(ReorderBuffer *rb)
|
|||||||
* Free a ReorderBufferChange and update memory accounting, if requested.
|
* Free a ReorderBufferChange and update memory accounting, if requested.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
ReorderBufferReturnChange(ReorderBuffer *rb, ReorderBufferChange *change,
|
ReorderBufferFreeChange(ReorderBuffer *rb, ReorderBufferChange *change,
|
||||||
bool upd_mem)
|
bool upd_mem)
|
||||||
{
|
{
|
||||||
/* update memory accounting info */
|
/* update memory accounting info */
|
||||||
if (upd_mem)
|
if (upd_mem)
|
||||||
@ -517,13 +517,13 @@ ReorderBufferReturnChange(ReorderBuffer *rb, ReorderBufferChange *change,
|
|||||||
case REORDER_BUFFER_CHANGE_INTERNAL_SPEC_INSERT:
|
case REORDER_BUFFER_CHANGE_INTERNAL_SPEC_INSERT:
|
||||||
if (change->data.tp.newtuple)
|
if (change->data.tp.newtuple)
|
||||||
{
|
{
|
||||||
ReorderBufferReturnTupleBuf(change->data.tp.newtuple);
|
ReorderBufferFreeTupleBuf(change->data.tp.newtuple);
|
||||||
change->data.tp.newtuple = NULL;
|
change->data.tp.newtuple = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (change->data.tp.oldtuple)
|
if (change->data.tp.oldtuple)
|
||||||
{
|
{
|
||||||
ReorderBufferReturnTupleBuf(change->data.tp.oldtuple);
|
ReorderBufferFreeTupleBuf(change->data.tp.oldtuple);
|
||||||
change->data.tp.oldtuple = NULL;
|
change->data.tp.oldtuple = NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -551,7 +551,7 @@ ReorderBufferReturnChange(ReorderBuffer *rb, ReorderBufferChange *change,
|
|||||||
case REORDER_BUFFER_CHANGE_TRUNCATE:
|
case REORDER_BUFFER_CHANGE_TRUNCATE:
|
||||||
if (change->data.truncate.relids != NULL)
|
if (change->data.truncate.relids != NULL)
|
||||||
{
|
{
|
||||||
ReorderBufferReturnRelids(rb, change->data.truncate.relids);
|
ReorderBufferFreeRelids(rb, change->data.truncate.relids);
|
||||||
change->data.truncate.relids = NULL;
|
change->data.truncate.relids = NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -566,11 +566,11 @@ ReorderBufferReturnChange(ReorderBuffer *rb, ReorderBufferChange *change,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get a fresh HeapTuple fitting a tuple of size tuple_len (excluding header
|
* Allocate a HeapTuple fitting a tuple of size tuple_len (excluding header
|
||||||
* overhead).
|
* overhead).
|
||||||
*/
|
*/
|
||||||
HeapTuple
|
HeapTuple
|
||||||
ReorderBufferGetTupleBuf(ReorderBuffer *rb, Size tuple_len)
|
ReorderBufferAllocTupleBuf(ReorderBuffer *rb, Size tuple_len)
|
||||||
{
|
{
|
||||||
HeapTuple tuple;
|
HeapTuple tuple;
|
||||||
Size alloc_len;
|
Size alloc_len;
|
||||||
@ -585,16 +585,16 @@ ReorderBufferGetTupleBuf(ReorderBuffer *rb, Size tuple_len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Free a HeapTuple returned by ReorderBufferGetTupleBuf().
|
* Free a HeapTuple returned by ReorderBufferAllocTupleBuf().
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
ReorderBufferReturnTupleBuf(HeapTuple tuple)
|
ReorderBufferFreeTupleBuf(HeapTuple tuple)
|
||||||
{
|
{
|
||||||
pfree(tuple);
|
pfree(tuple);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get an array for relids of truncated relations.
|
* Allocate an array for relids of truncated relations.
|
||||||
*
|
*
|
||||||
* We use the global memory context (for the whole reorder buffer), because
|
* We use the global memory context (for the whole reorder buffer), because
|
||||||
* none of the existing ones seems like a good match (some are SLAB, so we
|
* none of the existing ones seems like a good match (some are SLAB, so we
|
||||||
@ -603,7 +603,7 @@ ReorderBufferReturnTupleBuf(HeapTuple tuple)
|
|||||||
* not particularly common operation, so it does not seem worth it.
|
* not particularly common operation, so it does not seem worth it.
|
||||||
*/
|
*/
|
||||||
Oid *
|
Oid *
|
||||||
ReorderBufferGetRelids(ReorderBuffer *rb, int nrelids)
|
ReorderBufferAllocRelids(ReorderBuffer *rb, int nrelids)
|
||||||
{
|
{
|
||||||
Oid *relids;
|
Oid *relids;
|
||||||
Size alloc_len;
|
Size alloc_len;
|
||||||
@ -619,7 +619,7 @@ ReorderBufferGetRelids(ReorderBuffer *rb, int nrelids)
|
|||||||
* Free an array of relids.
|
* Free an array of relids.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
ReorderBufferReturnRelids(ReorderBuffer *rb, Oid *relids)
|
ReorderBufferFreeRelids(ReorderBuffer *rb, Oid *relids)
|
||||||
{
|
{
|
||||||
pfree(relids);
|
pfree(relids);
|
||||||
}
|
}
|
||||||
@ -684,7 +684,7 @@ ReorderBufferTXNByXid(ReorderBuffer *rb, TransactionId xid, bool create,
|
|||||||
Assert(ent != NULL);
|
Assert(ent != NULL);
|
||||||
Assert(lsn != InvalidXLogRecPtr);
|
Assert(lsn != InvalidXLogRecPtr);
|
||||||
|
|
||||||
ent->txn = ReorderBufferGetTXN(rb);
|
ent->txn = ReorderBufferAllocTXN(rb);
|
||||||
ent->txn->xid = xid;
|
ent->txn->xid = xid;
|
||||||
txn = ent->txn;
|
txn = ent->txn;
|
||||||
txn->first_lsn = lsn;
|
txn->first_lsn = lsn;
|
||||||
@ -806,7 +806,7 @@ ReorderBufferQueueChange(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn,
|
|||||||
* We don't need to update memory accounting for this change as we
|
* We don't need to update memory accounting for this change as we
|
||||||
* have not added it to the queue yet.
|
* have not added it to the queue yet.
|
||||||
*/
|
*/
|
||||||
ReorderBufferReturnChange(rb, change, false);
|
ReorderBufferFreeChange(rb, change, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -872,7 +872,7 @@ ReorderBufferQueueMessage(ReorderBuffer *rb, TransactionId xid,
|
|||||||
|
|
||||||
oldcontext = MemoryContextSwitchTo(rb->context);
|
oldcontext = MemoryContextSwitchTo(rb->context);
|
||||||
|
|
||||||
change = ReorderBufferGetChange(rb);
|
change = ReorderBufferAllocChange(rb);
|
||||||
change->action = REORDER_BUFFER_CHANGE_MESSAGE;
|
change->action = REORDER_BUFFER_CHANGE_MESSAGE;
|
||||||
change->data.msg.prefix = pstrdup(prefix);
|
change->data.msg.prefix = pstrdup(prefix);
|
||||||
change->data.msg.message_size = message_size;
|
change->data.msg.message_size = message_size;
|
||||||
@ -1408,7 +1408,7 @@ ReorderBufferIterTXNNext(ReorderBuffer *rb, ReorderBufferIterTXNState *state)
|
|||||||
{
|
{
|
||||||
change = dlist_container(ReorderBufferChange, node,
|
change = dlist_container(ReorderBufferChange, node,
|
||||||
dlist_pop_head_node(&state->old_change));
|
dlist_pop_head_node(&state->old_change));
|
||||||
ReorderBufferReturnChange(rb, change, true);
|
ReorderBufferFreeChange(rb, change, true);
|
||||||
Assert(dlist_is_empty(&state->old_change));
|
Assert(dlist_is_empty(&state->old_change));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1500,7 +1500,7 @@ ReorderBufferIterTXNFinish(ReorderBuffer *rb,
|
|||||||
|
|
||||||
change = dlist_container(ReorderBufferChange, node,
|
change = dlist_container(ReorderBufferChange, node,
|
||||||
dlist_pop_head_node(&state->old_change));
|
dlist_pop_head_node(&state->old_change));
|
||||||
ReorderBufferReturnChange(rb, change, true);
|
ReorderBufferFreeChange(rb, change, true);
|
||||||
Assert(dlist_is_empty(&state->old_change));
|
Assert(dlist_is_empty(&state->old_change));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1555,7 +1555,7 @@ ReorderBufferCleanupTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
|
|||||||
*/
|
*/
|
||||||
mem_freed += ReorderBufferChangeSize(change);
|
mem_freed += ReorderBufferChangeSize(change);
|
||||||
|
|
||||||
ReorderBufferReturnChange(rb, change, false);
|
ReorderBufferFreeChange(rb, change, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update the memory counter */
|
/* Update the memory counter */
|
||||||
@ -1575,7 +1575,7 @@ ReorderBufferCleanupTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
|
|||||||
Assert(change->txn == txn);
|
Assert(change->txn == txn);
|
||||||
Assert(change->action == REORDER_BUFFER_CHANGE_INTERNAL_TUPLECID);
|
Assert(change->action == REORDER_BUFFER_CHANGE_INTERNAL_TUPLECID);
|
||||||
|
|
||||||
ReorderBufferReturnChange(rb, change, true);
|
ReorderBufferFreeChange(rb, change, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1618,7 +1618,7 @@ ReorderBufferCleanupTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
|
|||||||
ReorderBufferRestoreCleanup(rb, txn);
|
ReorderBufferRestoreCleanup(rb, txn);
|
||||||
|
|
||||||
/* deallocate */
|
/* deallocate */
|
||||||
ReorderBufferReturnTXN(rb, txn);
|
ReorderBufferFreeTXN(rb, txn);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1679,7 +1679,7 @@ ReorderBufferTruncateTXN(ReorderBuffer *rb, ReorderBufferTXN *txn, bool txn_prep
|
|||||||
*/
|
*/
|
||||||
mem_freed += ReorderBufferChangeSize(change);
|
mem_freed += ReorderBufferChangeSize(change);
|
||||||
|
|
||||||
ReorderBufferReturnChange(rb, change, false);
|
ReorderBufferFreeChange(rb, change, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update the memory counter */
|
/* Update the memory counter */
|
||||||
@ -1705,7 +1705,7 @@ ReorderBufferTruncateTXN(ReorderBuffer *rb, ReorderBufferTXN *txn, bool txn_prep
|
|||||||
/* Remove the change from its containing list. */
|
/* Remove the change from its containing list. */
|
||||||
dlist_delete(&change->node);
|
dlist_delete(&change->node);
|
||||||
|
|
||||||
ReorderBufferReturnChange(rb, change, true);
|
ReorderBufferFreeChange(rb, change, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2158,7 +2158,7 @@ ReorderBufferResetTXN(ReorderBuffer *rb, ReorderBufferTXN *txn,
|
|||||||
/* Return the spec insert change if it is not NULL */
|
/* Return the spec insert change if it is not NULL */
|
||||||
if (specinsert != NULL)
|
if (specinsert != NULL)
|
||||||
{
|
{
|
||||||
ReorderBufferReturnChange(rb, specinsert, true);
|
ReorderBufferFreeChange(rb, specinsert, true);
|
||||||
specinsert = NULL;
|
specinsert = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2399,7 +2399,7 @@ ReorderBufferProcessTXN(ReorderBuffer *rb, ReorderBufferTXN *txn,
|
|||||||
*/
|
*/
|
||||||
if (specinsert != NULL)
|
if (specinsert != NULL)
|
||||||
{
|
{
|
||||||
ReorderBufferReturnChange(rb, specinsert, true);
|
ReorderBufferFreeChange(rb, specinsert, true);
|
||||||
specinsert = NULL;
|
specinsert = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2428,7 +2428,7 @@ ReorderBufferProcessTXN(ReorderBuffer *rb, ReorderBufferTXN *txn,
|
|||||||
/* clear out a pending (and thus failed) speculation */
|
/* clear out a pending (and thus failed) speculation */
|
||||||
if (specinsert != NULL)
|
if (specinsert != NULL)
|
||||||
{
|
{
|
||||||
ReorderBufferReturnChange(rb, specinsert, true);
|
ReorderBufferFreeChange(rb, specinsert, true);
|
||||||
specinsert = NULL;
|
specinsert = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2458,7 +2458,7 @@ ReorderBufferProcessTXN(ReorderBuffer *rb, ReorderBufferTXN *txn,
|
|||||||
ReorderBufferToastReset(rb, txn);
|
ReorderBufferToastReset(rb, txn);
|
||||||
|
|
||||||
/* We don't need this record anymore. */
|
/* We don't need this record anymore. */
|
||||||
ReorderBufferReturnChange(rb, specinsert, true);
|
ReorderBufferFreeChange(rb, specinsert, true);
|
||||||
specinsert = NULL;
|
specinsert = NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -3253,7 +3253,7 @@ void
|
|||||||
ReorderBufferAddSnapshot(ReorderBuffer *rb, TransactionId xid,
|
ReorderBufferAddSnapshot(ReorderBuffer *rb, TransactionId xid,
|
||||||
XLogRecPtr lsn, Snapshot snap)
|
XLogRecPtr lsn, Snapshot snap)
|
||||||
{
|
{
|
||||||
ReorderBufferChange *change = ReorderBufferGetChange(rb);
|
ReorderBufferChange *change = ReorderBufferAllocChange(rb);
|
||||||
|
|
||||||
change->data.snapshot = snap;
|
change->data.snapshot = snap;
|
||||||
change->action = REORDER_BUFFER_CHANGE_INTERNAL_SNAPSHOT;
|
change->action = REORDER_BUFFER_CHANGE_INTERNAL_SNAPSHOT;
|
||||||
@ -3302,7 +3302,7 @@ void
|
|||||||
ReorderBufferAddNewCommandId(ReorderBuffer *rb, TransactionId xid,
|
ReorderBufferAddNewCommandId(ReorderBuffer *rb, TransactionId xid,
|
||||||
XLogRecPtr lsn, CommandId cid)
|
XLogRecPtr lsn, CommandId cid)
|
||||||
{
|
{
|
||||||
ReorderBufferChange *change = ReorderBufferGetChange(rb);
|
ReorderBufferChange *change = ReorderBufferAllocChange(rb);
|
||||||
|
|
||||||
change->data.command_id = cid;
|
change->data.command_id = cid;
|
||||||
change->action = REORDER_BUFFER_CHANGE_INTERNAL_COMMAND_ID;
|
change->action = REORDER_BUFFER_CHANGE_INTERNAL_COMMAND_ID;
|
||||||
@ -3403,7 +3403,7 @@ ReorderBufferAddNewTupleCids(ReorderBuffer *rb, TransactionId xid,
|
|||||||
ItemPointerData tid, CommandId cmin,
|
ItemPointerData tid, CommandId cmin,
|
||||||
CommandId cmax, CommandId combocid)
|
CommandId cmax, CommandId combocid)
|
||||||
{
|
{
|
||||||
ReorderBufferChange *change = ReorderBufferGetChange(rb);
|
ReorderBufferChange *change = ReorderBufferAllocChange(rb);
|
||||||
ReorderBufferTXN *txn;
|
ReorderBufferTXN *txn;
|
||||||
|
|
||||||
txn = ReorderBufferTXNByXid(rb, xid, true, NULL, lsn, true);
|
txn = ReorderBufferTXNByXid(rb, xid, true, NULL, lsn, true);
|
||||||
@ -3476,7 +3476,7 @@ ReorderBufferAddInvalidations(ReorderBuffer *rb, TransactionId xid,
|
|||||||
txn->ninvalidations += nmsgs;
|
txn->ninvalidations += nmsgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
change = ReorderBufferGetChange(rb);
|
change = ReorderBufferAllocChange(rb);
|
||||||
change->action = REORDER_BUFFER_CHANGE_INVALIDATION;
|
change->action = REORDER_BUFFER_CHANGE_INVALIDATION;
|
||||||
change->data.inval.ninvalidations = nmsgs;
|
change->data.inval.ninvalidations = nmsgs;
|
||||||
change->data.inval.invalidations = (SharedInvalidationMessage *)
|
change->data.inval.invalidations = (SharedInvalidationMessage *)
|
||||||
@ -3891,7 +3891,7 @@ ReorderBufferSerializeTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
|
|||||||
|
|
||||||
ReorderBufferSerializeChange(rb, txn, fd, change);
|
ReorderBufferSerializeChange(rb, txn, fd, change);
|
||||||
dlist_delete(&change->node);
|
dlist_delete(&change->node);
|
||||||
ReorderBufferReturnChange(rb, change, false);
|
ReorderBufferFreeChange(rb, change, false);
|
||||||
|
|
||||||
spilled++;
|
spilled++;
|
||||||
}
|
}
|
||||||
@ -4395,7 +4395,7 @@ ReorderBufferRestoreChanges(ReorderBuffer *rb, ReorderBufferTXN *txn,
|
|||||||
dlist_container(ReorderBufferChange, node, cleanup_iter.cur);
|
dlist_container(ReorderBufferChange, node, cleanup_iter.cur);
|
||||||
|
|
||||||
dlist_delete(&cleanup->node);
|
dlist_delete(&cleanup->node);
|
||||||
ReorderBufferReturnChange(rb, cleanup, true);
|
ReorderBufferFreeChange(rb, cleanup, true);
|
||||||
}
|
}
|
||||||
txn->nentries_mem = 0;
|
txn->nentries_mem = 0;
|
||||||
Assert(dlist_is_empty(&txn->changes));
|
Assert(dlist_is_empty(&txn->changes));
|
||||||
@ -4528,7 +4528,7 @@ ReorderBufferRestoreChange(ReorderBuffer *rb, ReorderBufferTXN *txn,
|
|||||||
|
|
||||||
ondisk = (ReorderBufferDiskChange *) data;
|
ondisk = (ReorderBufferDiskChange *) data;
|
||||||
|
|
||||||
change = ReorderBufferGetChange(rb);
|
change = ReorderBufferAllocChange(rb);
|
||||||
|
|
||||||
/* copy static part */
|
/* copy static part */
|
||||||
memcpy(change, &ondisk->change, sizeof(ReorderBufferChange));
|
memcpy(change, &ondisk->change, sizeof(ReorderBufferChange));
|
||||||
@ -4548,7 +4548,7 @@ ReorderBufferRestoreChange(ReorderBuffer *rb, ReorderBufferTXN *txn,
|
|||||||
uint32 tuplelen = ((HeapTuple) data)->t_len;
|
uint32 tuplelen = ((HeapTuple) data)->t_len;
|
||||||
|
|
||||||
change->data.tp.oldtuple =
|
change->data.tp.oldtuple =
|
||||||
ReorderBufferGetTupleBuf(rb, tuplelen - SizeofHeapTupleHeader);
|
ReorderBufferAllocTupleBuf(rb, tuplelen - SizeofHeapTupleHeader);
|
||||||
|
|
||||||
/* restore ->tuple */
|
/* restore ->tuple */
|
||||||
memcpy(change->data.tp.oldtuple, data,
|
memcpy(change->data.tp.oldtuple, data,
|
||||||
@ -4573,7 +4573,7 @@ ReorderBufferRestoreChange(ReorderBuffer *rb, ReorderBufferTXN *txn,
|
|||||||
sizeof(uint32));
|
sizeof(uint32));
|
||||||
|
|
||||||
change->data.tp.newtuple =
|
change->data.tp.newtuple =
|
||||||
ReorderBufferGetTupleBuf(rb, tuplelen - SizeofHeapTupleHeader);
|
ReorderBufferAllocTupleBuf(rb, tuplelen - SizeofHeapTupleHeader);
|
||||||
|
|
||||||
/* restore ->tuple */
|
/* restore ->tuple */
|
||||||
memcpy(change->data.tp.newtuple, data,
|
memcpy(change->data.tp.newtuple, data,
|
||||||
@ -4655,8 +4655,7 @@ ReorderBufferRestoreChange(ReorderBuffer *rb, ReorderBufferTXN *txn,
|
|||||||
{
|
{
|
||||||
Oid *relids;
|
Oid *relids;
|
||||||
|
|
||||||
relids = ReorderBufferGetRelids(rb,
|
relids = ReorderBufferAllocRelids(rb, change->data.truncate.nrelids);
|
||||||
change->data.truncate.nrelids);
|
|
||||||
memcpy(relids, data, change->data.truncate.nrelids * sizeof(Oid));
|
memcpy(relids, data, change->data.truncate.nrelids * sizeof(Oid));
|
||||||
change->data.truncate.relids = relids;
|
change->data.truncate.relids = relids;
|
||||||
|
|
||||||
@ -5126,7 +5125,7 @@ ReorderBufferToastReset(ReorderBuffer *rb, ReorderBufferTXN *txn)
|
|||||||
dlist_container(ReorderBufferChange, node, it.cur);
|
dlist_container(ReorderBufferChange, node, it.cur);
|
||||||
|
|
||||||
dlist_delete(&change->node);
|
dlist_delete(&change->node);
|
||||||
ReorderBufferReturnChange(rb, change, true);
|
ReorderBufferFreeChange(rb, change, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -689,16 +689,15 @@ struct ReorderBuffer
|
|||||||
extern ReorderBuffer *ReorderBufferAllocate(void);
|
extern ReorderBuffer *ReorderBufferAllocate(void);
|
||||||
extern void ReorderBufferFree(ReorderBuffer *rb);
|
extern void ReorderBufferFree(ReorderBuffer *rb);
|
||||||
|
|
||||||
extern HeapTuple ReorderBufferGetTupleBuf(ReorderBuffer *rb,
|
extern HeapTuple ReorderBufferAllocTupleBuf(ReorderBuffer *rb, Size tuple_len);
|
||||||
Size tuple_len);
|
extern void ReorderBufferFreeTupleBuf(HeapTuple tuple);
|
||||||
extern void ReorderBufferReturnTupleBuf(HeapTuple tuple);
|
|
||||||
|
|
||||||
extern ReorderBufferChange *ReorderBufferGetChange(ReorderBuffer *rb);
|
extern ReorderBufferChange *ReorderBufferAllocChange(ReorderBuffer *rb);
|
||||||
extern void ReorderBufferReturnChange(ReorderBuffer *rb,
|
extern void ReorderBufferFreeChange(ReorderBuffer *rb,
|
||||||
ReorderBufferChange *change, bool upd_mem);
|
ReorderBufferChange *change, bool upd_mem);
|
||||||
|
|
||||||
extern Oid *ReorderBufferGetRelids(ReorderBuffer *rb, int nrelids);
|
extern Oid *ReorderBufferAllocRelids(ReorderBuffer *rb, int nrelids);
|
||||||
extern void ReorderBufferReturnRelids(ReorderBuffer *rb, Oid *relids);
|
extern void ReorderBufferFreeRelids(ReorderBuffer *rb, Oid *relids);
|
||||||
|
|
||||||
extern void ReorderBufferQueueChange(ReorderBuffer *rb, TransactionId xid,
|
extern void ReorderBufferQueueChange(ReorderBuffer *rb, TransactionId xid,
|
||||||
XLogRecPtr lsn, ReorderBufferChange *change,
|
XLogRecPtr lsn, ReorderBufferChange *change,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user