From 1b5d3c04f21e764756f89f0456d0f96e2b2350de Mon Sep 17 00:00:00 2001 From: Bharath Rupireddy Date: Tue, 23 Apr 2024 05:25:21 +0000 Subject: [PATCH v19 6/6] Remove table_multi_insert and table_finish_bulk_insert --- src/backend/access/heap/heapam_handler.c | 1 - src/backend/access/table/tableamapi.c | 1 - src/backend/commands/tablecmds.c | 4 -- src/include/access/tableam.h | 56 +----------------------- 4 files changed, 1 insertion(+), 61 deletions(-) diff --git a/src/backend/access/heap/heapam_handler.c b/src/backend/access/heap/heapam_handler.c index eda0c73a16..fe9701773a 100644 --- a/src/backend/access/heap/heapam_handler.c +++ b/src/backend/access/heap/heapam_handler.c @@ -2614,7 +2614,6 @@ static const TableAmRoutine heapam_methods = { .tuple_insert = heapam_tuple_insert, .tuple_insert_speculative = heapam_tuple_insert_speculative, .tuple_complete_speculative = heapam_tuple_complete_speculative, - .multi_insert = heap_multi_insert, .tuple_modify_begin = heap_modify_begin, .tuple_modify_buffer_insert = heap_modify_buffer_insert, diff --git a/src/backend/access/table/tableamapi.c b/src/backend/access/table/tableamapi.c index 96ac951af6..0af8f1ac1f 100644 --- a/src/backend/access/table/tableamapi.c +++ b/src/backend/access/table/tableamapi.c @@ -71,7 +71,6 @@ GetTableAmRoutine(Oid amhandler) Assert(routine->tuple_insert_speculative != NULL); Assert(routine->tuple_complete_speculative != NULL); - Assert(routine->multi_insert != NULL); Assert(routine->tuple_delete != NULL); Assert(routine->tuple_update != NULL); Assert(routine->tuple_lock != NULL); diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 0c984aa656..22bcb12abb 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -20969,8 +20969,6 @@ deleteSplitPartitionContext(SplitPartitionContext *pc, int ti_options) ExecDropSingleTupleTableSlot(pc->dstslot); FreeBulkInsertState(pc->bistate); - table_finish_bulk_insert(pc->partRel, ti_options); - pfree(pc); } @@ -21453,8 +21451,6 @@ moveMergedTablesRows(Relation rel, List *mergingPartitionsList, ExecDropSingleTupleTableSlot(dstslot); FreeBulkInsertState(bistate); - - table_finish_bulk_insert(newPartRel, ti_options); } /* diff --git a/src/include/access/tableam.h b/src/include/access/tableam.h index ddb6e6f3a5..82798fd641 100644 --- a/src/include/access/tableam.h +++ b/src/include/access/tableam.h @@ -563,10 +563,6 @@ typedef struct TableAmRoutine uint32 specToken, bool succeeded); - /* see table_multi_insert() for reference about parameters */ - void (*multi_insert) (Relation rel, TupleTableSlot **slots, int nslots, - CommandId cid, int options, struct BulkInsertStateData *bistate); - /* see table_tuple_delete() for reference about parameters */ TM_Result (*tuple_delete) (Relation rel, ItemPointer tid, @@ -600,21 +596,6 @@ typedef struct TableAmRoutine uint8 flags, TM_FailureData *tmfd); - /* - * Perform operations necessary to complete insertions made via - * tuple_insert and multi_insert with a BulkInsertState specified. In-tree - * access methods ceased to use this. - * - * Typically callers of tuple_insert and multi_insert will just pass all - * the flags that apply to them, and each AM has to decide which of them - * make sense for it, and then only take actions in finish_bulk_insert for - * those flags, and ignore others. - * - * Optional callback. - */ - void (*finish_bulk_insert) (Relation rel, int options); - - /* ------------------------------------------------------------------------ * Table Modify related functions. * ------------------------------------------------------------------------ @@ -1453,8 +1434,7 @@ table_index_delete_tuples(Relation rel, TM_IndexDeleteOp *delstate) * heap's TOAST table, too, if the tuple requires any out-of-line data. * * The BulkInsertState object (if any; bistate can be NULL for default - * behavior) is also just passed through to RelationGetBufferForTuple. If - * `bistate` is provided, table_finish_bulk_insert() needs to be called. + * behavior) is also just passed through to RelationGetBufferForTuple. * * On return the slot's tts_tid and tts_tableOid are updated to reflect the * insertion. But note that any toasting of fields within the slot is NOT @@ -1501,28 +1481,6 @@ table_tuple_complete_speculative(Relation rel, TupleTableSlot *slot, succeeded); } -/* - * Insert multiple tuples into a table. - * - * This is like table_tuple_insert(), but inserts multiple tuples in one - * operation. That's often faster than calling table_tuple_insert() in a loop, - * because e.g. the AM can reduce WAL logging and page locking overhead. - * - * Except for taking `nslots` tuples as input, and an array of TupleTableSlots - * in `slots`, the parameters for table_multi_insert() are the same as for - * table_tuple_insert(). - * - * Note: this leaks memory into the current memory context. You can create a - * temporary context before calling this, if that's a problem. - */ -static inline void -table_multi_insert(Relation rel, TupleTableSlot **slots, int nslots, - CommandId cid, int options, struct BulkInsertStateData *bistate) -{ - rel->rd_tableam->multi_insert(rel, slots, nslots, - cid, options, bistate); -} - /* * Delete a tuple. * @@ -1649,18 +1607,6 @@ table_tuple_lock(Relation rel, ItemPointer tid, Snapshot snapshot, flags, tmfd); } -/* - * Perform operations necessary to complete insertions made via - * tuple_insert and multi_insert with a BulkInsertState specified. - */ -static inline void -table_finish_bulk_insert(Relation rel, int options) -{ - /* optional callback */ - if (rel->rd_tableam && rel->rd_tableam->finish_bulk_insert) - rel->rd_tableam->finish_bulk_insert(rel, options); -} - /* ------------------------------------------------------------------------ * Table Modify related functions. * ------------------------------------------------------------------------ -- 2.34.1