if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
return;
- change = ReorderBufferGetChange(ctx->reorder);
+ change = ReorderBufferAllocChange(ctx->reorder);
if (!(xlrec->flags & XLH_INSERT_IS_SPECULATIVE))
change->action = REORDER_BUFFER_CHANGE_INSERT;
else
tuplelen = datalen - SizeOfHeapHeader;
change->data.tp.newtuple =
- ReorderBufferGetTupleBuf(ctx->reorder, tuplelen);
+ ReorderBufferAllocTupleBuf(ctx->reorder, tuplelen);
DecodeXLogTuple(tupledata, datalen, change->data.tp.newtuple);
if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
return;
- change = ReorderBufferGetChange(ctx->reorder);
+ change = ReorderBufferAllocChange(ctx->reorder);
change->action = REORDER_BUFFER_CHANGE_UPDATE;
change->origin_id = XLogRecGetOrigin(r);
memcpy(&change->data.tp.rlocator, &target_locator, sizeof(RelFileLocator));
tuplelen = datalen - SizeOfHeapHeader;
change->data.tp.newtuple =
- ReorderBufferGetTupleBuf(ctx->reorder, tuplelen);
+ ReorderBufferAllocTupleBuf(ctx->reorder, tuplelen);
DecodeXLogTuple(data, datalen, change->data.tp.newtuple);
}
tuplelen = datalen - SizeOfHeapHeader;
change->data.tp.oldtuple =
- ReorderBufferGetTupleBuf(ctx->reorder, tuplelen);
+ ReorderBufferAllocTupleBuf(ctx->reorder, tuplelen);
DecodeXLogTuple(data, datalen, change->data.tp.oldtuple);
}
if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
return;
- change = ReorderBufferGetChange(ctx->reorder);
+ change = ReorderBufferAllocChange(ctx->reorder);
if (xlrec->flags & XLH_DELETE_IS_SUPER)
change->action = REORDER_BUFFER_CHANGE_INTERNAL_SPEC_ABORT;
Assert(XLogRecGetDataLen(r) > (SizeOfHeapDelete + SizeOfHeapHeader));
change->data.tp.oldtuple =
- ReorderBufferGetTupleBuf(ctx->reorder, tuplelen);
+ ReorderBufferAllocTupleBuf(ctx->reorder, tuplelen);
DecodeXLogTuple((char *) xlrec + SizeOfHeapDelete,
datalen, change->data.tp.oldtuple);
if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
return;
- change = ReorderBufferGetChange(ctx->reorder);
+ change = ReorderBufferAllocChange(ctx->reorder);
change->action = REORDER_BUFFER_CHANGE_TRUNCATE;
change->origin_id = XLogRecGetOrigin(r);
if (xlrec->flags & XLH_TRUNCATE_CASCADE)
if (xlrec->flags & XLH_TRUNCATE_RESTART_SEQS)
change->data.truncate.restart_seqs = true;
change->data.truncate.nrelids = xlrec->nrelids;
- change->data.truncate.relids = ReorderBufferGetRelids(ctx->reorder,
- xlrec->nrelids);
+ change->data.truncate.relids = ReorderBufferAllocRelids(ctx->reorder,
+ xlrec->nrelids);
memcpy(change->data.truncate.relids, xlrec->relids,
xlrec->nrelids * sizeof(Oid));
ReorderBufferQueueChange(ctx->reorder, XLogRecGetXid(r),
HeapTuple tuple;
HeapTupleHeader header;
- change = ReorderBufferGetChange(ctx->reorder);
+ change = ReorderBufferAllocChange(ctx->reorder);
change->action = REORDER_BUFFER_CHANGE_INSERT;
change->origin_id = XLogRecGetOrigin(r);
datalen = xlhdr->datalen;
change->data.tp.newtuple =
- ReorderBufferGetTupleBuf(ctx->reorder, datalen);
+ ReorderBufferAllocTupleBuf(ctx->reorder, datalen);
tuple = change->data.tp.newtuple;
header = tuple->t_data;
if (FilterByOrigin(ctx, XLogRecGetOrigin(r)))
return;
- change = ReorderBufferGetChange(ctx->reorder);
+ change = ReorderBufferAllocChange(ctx->reorder);
change->action = REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM;
change->origin_id = XLogRecGetOrigin(r);
* primary reorderbuffer support routines
* ---------------------------------------
*/
-static ReorderBufferTXN *ReorderBufferGetTXN(ReorderBuffer *rb);
-static void ReorderBufferReturnTXN(ReorderBuffer *rb, ReorderBufferTXN *txn);
+static ReorderBufferTXN *ReorderBufferAllocTXN(ReorderBuffer *rb);
+static void ReorderBufferFreeTXN(ReorderBuffer *rb, ReorderBufferTXN *txn);
static ReorderBufferTXN *ReorderBufferTXNByXid(ReorderBuffer *rb,
TransactionId xid, bool create, bool *is_new,
XLogRecPtr lsn, bool create_as_top);
}
/*
- * Get an unused, possibly preallocated, ReorderBufferTXN.
+ * Allocate a new ReorderBufferTXN.
*/
static ReorderBufferTXN *
-ReorderBufferGetTXN(ReorderBuffer *rb)
+ReorderBufferAllocTXN(ReorderBuffer *rb)
{
ReorderBufferTXN *txn;
* Free a ReorderBufferTXN.
*/
static void
-ReorderBufferReturnTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
+ReorderBufferFreeTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
{
/* clean the lookup cache if we were cached (quite likely) */
if (rb->by_txn_last_xid == txn->xid)
}
/*
- * Get a fresh ReorderBufferChange.
+ * Allocate a ReorderBufferChange.
*/
ReorderBufferChange *
-ReorderBufferGetChange(ReorderBuffer *rb)
+ReorderBufferAllocChange(ReorderBuffer *rb)
{
ReorderBufferChange *change;
* Free a ReorderBufferChange and update memory accounting, if requested.
*/
void
-ReorderBufferReturnChange(ReorderBuffer *rb, ReorderBufferChange *change,
- bool upd_mem)
+ReorderBufferFreeChange(ReorderBuffer *rb, ReorderBufferChange *change,
+ bool upd_mem)
{
/* update memory accounting info */
if (upd_mem)
case REORDER_BUFFER_CHANGE_INTERNAL_SPEC_INSERT:
if (change->data.tp.newtuple)
{
- ReorderBufferReturnTupleBuf(change->data.tp.newtuple);
+ ReorderBufferFreeTupleBuf(change->data.tp.newtuple);
change->data.tp.newtuple = NULL;
}
if (change->data.tp.oldtuple)
{
- ReorderBufferReturnTupleBuf(change->data.tp.oldtuple);
+ ReorderBufferFreeTupleBuf(change->data.tp.oldtuple);
change->data.tp.oldtuple = NULL;
}
break;
case REORDER_BUFFER_CHANGE_TRUNCATE:
if (change->data.truncate.relids != NULL)
{
- ReorderBufferReturnRelids(rb, change->data.truncate.relids);
+ ReorderBufferFreeRelids(rb, change->data.truncate.relids);
change->data.truncate.relids = NULL;
}
break;
}
/*
- * 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).
*/
HeapTuple
-ReorderBufferGetTupleBuf(ReorderBuffer *rb, Size tuple_len)
+ReorderBufferAllocTupleBuf(ReorderBuffer *rb, Size tuple_len)
{
HeapTuple tuple;
Size alloc_len;
}
/*
- * Free a HeapTuple returned by ReorderBufferGetTupleBuf().
+ * Free a HeapTuple returned by ReorderBufferAllocTupleBuf().
*/
void
-ReorderBufferReturnTupleBuf(HeapTuple tuple)
+ReorderBufferFreeTupleBuf(HeapTuple 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
* none of the existing ones seems like a good match (some are SLAB, so we
* not particularly common operation, so it does not seem worth it.
*/
Oid *
-ReorderBufferGetRelids(ReorderBuffer *rb, int nrelids)
+ReorderBufferAllocRelids(ReorderBuffer *rb, int nrelids)
{
Oid *relids;
Size alloc_len;
* Free an array of relids.
*/
void
-ReorderBufferReturnRelids(ReorderBuffer *rb, Oid *relids)
+ReorderBufferFreeRelids(ReorderBuffer *rb, Oid *relids)
{
pfree(relids);
}
Assert(ent != NULL);
Assert(lsn != InvalidXLogRecPtr);
- ent->txn = ReorderBufferGetTXN(rb);
+ ent->txn = ReorderBufferAllocTXN(rb);
ent->txn->xid = xid;
txn = ent->txn;
txn->first_lsn = lsn;
* We don't need to update memory accounting for this change as we
* have not added it to the queue yet.
*/
- ReorderBufferReturnChange(rb, change, false);
+ ReorderBufferFreeChange(rb, change, false);
return;
}
oldcontext = MemoryContextSwitchTo(rb->context);
- change = ReorderBufferGetChange(rb);
+ change = ReorderBufferAllocChange(rb);
change->action = REORDER_BUFFER_CHANGE_MESSAGE;
change->data.msg.prefix = pstrdup(prefix);
change->data.msg.message_size = message_size;
{
change = dlist_container(ReorderBufferChange, node,
dlist_pop_head_node(&state->old_change));
- ReorderBufferReturnChange(rb, change, true);
+ ReorderBufferFreeChange(rb, change, true);
Assert(dlist_is_empty(&state->old_change));
}
change = dlist_container(ReorderBufferChange, node,
dlist_pop_head_node(&state->old_change));
- ReorderBufferReturnChange(rb, change, true);
+ ReorderBufferFreeChange(rb, change, true);
Assert(dlist_is_empty(&state->old_change));
}
*/
mem_freed += ReorderBufferChangeSize(change);
- ReorderBufferReturnChange(rb, change, false);
+ ReorderBufferFreeChange(rb, change, false);
}
/* Update the memory counter */
Assert(change->txn == txn);
Assert(change->action == REORDER_BUFFER_CHANGE_INTERNAL_TUPLECID);
- ReorderBufferReturnChange(rb, change, true);
+ ReorderBufferFreeChange(rb, change, true);
}
/*
ReorderBufferRestoreCleanup(rb, txn);
/* deallocate */
- ReorderBufferReturnTXN(rb, txn);
+ ReorderBufferFreeTXN(rb, txn);
}
/*
*/
mem_freed += ReorderBufferChangeSize(change);
- ReorderBufferReturnChange(rb, change, false);
+ ReorderBufferFreeChange(rb, change, false);
}
/* Update the memory counter */
/* Remove the change from its containing list. */
dlist_delete(&change->node);
- ReorderBufferReturnChange(rb, change, true);
+ ReorderBufferFreeChange(rb, change, true);
}
}
/* Return the spec insert change if it is not NULL */
if (specinsert != NULL)
{
- ReorderBufferReturnChange(rb, specinsert, true);
+ ReorderBufferFreeChange(rb, specinsert, true);
specinsert = NULL;
}
*/
if (specinsert != NULL)
{
- ReorderBufferReturnChange(rb, specinsert, true);
+ ReorderBufferFreeChange(rb, specinsert, true);
specinsert = NULL;
}
/* clear out a pending (and thus failed) speculation */
if (specinsert != NULL)
{
- ReorderBufferReturnChange(rb, specinsert, true);
+ ReorderBufferFreeChange(rb, specinsert, true);
specinsert = NULL;
}
ReorderBufferToastReset(rb, txn);
/* We don't need this record anymore. */
- ReorderBufferReturnChange(rb, specinsert, true);
+ ReorderBufferFreeChange(rb, specinsert, true);
specinsert = NULL;
}
break;
ReorderBufferAddSnapshot(ReorderBuffer *rb, TransactionId xid,
XLogRecPtr lsn, Snapshot snap)
{
- ReorderBufferChange *change = ReorderBufferGetChange(rb);
+ ReorderBufferChange *change = ReorderBufferAllocChange(rb);
change->data.snapshot = snap;
change->action = REORDER_BUFFER_CHANGE_INTERNAL_SNAPSHOT;
ReorderBufferAddNewCommandId(ReorderBuffer *rb, TransactionId xid,
XLogRecPtr lsn, CommandId cid)
{
- ReorderBufferChange *change = ReorderBufferGetChange(rb);
+ ReorderBufferChange *change = ReorderBufferAllocChange(rb);
change->data.command_id = cid;
change->action = REORDER_BUFFER_CHANGE_INTERNAL_COMMAND_ID;
ItemPointerData tid, CommandId cmin,
CommandId cmax, CommandId combocid)
{
- ReorderBufferChange *change = ReorderBufferGetChange(rb);
+ ReorderBufferChange *change = ReorderBufferAllocChange(rb);
ReorderBufferTXN *txn;
txn = ReorderBufferTXNByXid(rb, xid, true, NULL, lsn, true);
txn->ninvalidations += nmsgs;
}
- change = ReorderBufferGetChange(rb);
+ change = ReorderBufferAllocChange(rb);
change->action = REORDER_BUFFER_CHANGE_INVALIDATION;
change->data.inval.ninvalidations = nmsgs;
change->data.inval.invalidations = (SharedInvalidationMessage *)
ReorderBufferSerializeChange(rb, txn, fd, change);
dlist_delete(&change->node);
- ReorderBufferReturnChange(rb, change, false);
+ ReorderBufferFreeChange(rb, change, false);
spilled++;
}
dlist_container(ReorderBufferChange, node, cleanup_iter.cur);
dlist_delete(&cleanup->node);
- ReorderBufferReturnChange(rb, cleanup, true);
+ ReorderBufferFreeChange(rb, cleanup, true);
}
txn->nentries_mem = 0;
Assert(dlist_is_empty(&txn->changes));
ondisk = (ReorderBufferDiskChange *) data;
- change = ReorderBufferGetChange(rb);
+ change = ReorderBufferAllocChange(rb);
/* copy static part */
memcpy(change, &ondisk->change, sizeof(ReorderBufferChange));
uint32 tuplelen = ((HeapTuple) data)->t_len;
change->data.tp.oldtuple =
- ReorderBufferGetTupleBuf(rb, tuplelen - SizeofHeapTupleHeader);
+ ReorderBufferAllocTupleBuf(rb, tuplelen - SizeofHeapTupleHeader);
/* restore ->tuple */
memcpy(change->data.tp.oldtuple, data,
sizeof(uint32));
change->data.tp.newtuple =
- ReorderBufferGetTupleBuf(rb, tuplelen - SizeofHeapTupleHeader);
+ ReorderBufferAllocTupleBuf(rb, tuplelen - SizeofHeapTupleHeader);
/* restore ->tuple */
memcpy(change->data.tp.newtuple, data,
{
Oid *relids;
- relids = ReorderBufferGetRelids(rb,
- change->data.truncate.nrelids);
+ relids = ReorderBufferAllocRelids(rb, change->data.truncate.nrelids);
memcpy(relids, data, change->data.truncate.nrelids * sizeof(Oid));
change->data.truncate.relids = relids;
dlist_container(ReorderBufferChange, node, it.cur);
dlist_delete(&change->node);
- ReorderBufferReturnChange(rb, change, true);
+ ReorderBufferFreeChange(rb, change, true);
}
}