From f5db56fc4d6e95c582b61c99328ea0702b869fa0 Mon Sep 17 00:00:00 2001 From: David Rowley Date: Tue, 2 Jul 2019 03:44:56 +1200 Subject: [PATCH] Revert fix missing call to table_finish_bulk_insert during COPY This reverts commits 4de60244e and b2d69806d. Further thought is required to make this work properly. --- src/backend/commands/copy.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index a4eee4c0d7..f1161f0fee 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -2518,8 +2518,7 @@ CopyMultiInsertBufferFlush(CopyMultiInsertInfo *miinfo, * The buffer must be flushed before cleanup. */ static inline void -CopyMultiInsertBufferCleanup(CopyMultiInsertInfo *miinfo, - CopyMultiInsertBuffer *buffer) +CopyMultiInsertBufferCleanup(CopyMultiInsertBuffer *buffer) { int i; @@ -2535,9 +2534,6 @@ CopyMultiInsertBufferCleanup(CopyMultiInsertInfo *miinfo, for (i = 0; i < MAX_BUFFERED_TUPLES && buffer->slots[i] != NULL; i++) ExecDropSingleTupleTableSlot(buffer->slots[i]); - table_finish_bulk_insert(buffer->resultRelInfo->ri_RelationDesc, - miinfo->ti_options); - pfree(buffer); } @@ -2589,7 +2585,7 @@ CopyMultiInsertInfoFlush(CopyMultiInsertInfo *miinfo, ResultRelInfo *curr_rri) buffer = (CopyMultiInsertBuffer *) linitial(miinfo->multiInsertBuffers); } - CopyMultiInsertBufferCleanup(miinfo, buffer); + CopyMultiInsertBufferCleanup(buffer); miinfo->multiInsertBuffers = list_delete_first(miinfo->multiInsertBuffers); } } @@ -2603,7 +2599,7 @@ CopyMultiInsertInfoCleanup(CopyMultiInsertInfo *miinfo) ListCell *lc; foreach(lc, miinfo->multiInsertBuffers) - CopyMultiInsertBufferCleanup(miinfo, lfirst(lc)); + CopyMultiInsertBufferCleanup(lfirst(lc)); list_free(miinfo->multiInsertBuffers); } @@ -3325,6 +3321,9 @@ CopyFrom(CopyState cstate) { if (!CopyMultiInsertInfoIsEmpty(&multiInsertInfo)) CopyMultiInsertInfoFlush(&multiInsertInfo, NULL); + + /* Tear down the multi-insert buffer data */ + CopyMultiInsertInfoCleanup(&multiInsertInfo); } /* Done, clean up */ @@ -3367,11 +3366,7 @@ CopyFrom(CopyState cstate) FreeExecutorState(estate); - if (insertMethod != CIM_SINGLE) - { - /* Tear down the multi-insert buffer data */ - CopyMultiInsertInfoCleanup(&multiInsertInfo); - } + table_finish_bulk_insert(cstate->rel, ti_options); return processed; } -- 2.40.0