/** * @brief Clean up load status information * * @param self [in/out] Load status information * @return void */ static WriterResult DirectWriterClose(DirectWriter *self, bool onError) { WriterResult ret = { 0 }; Assert(self != NULL); /* Flush unflushed block buffer and close the heap file. */ if (!onError) flush_pages(self); close_data_file(self); UnlinkLSF(self); if (!onError) { SpoolerClose(&self->spooler); ret.num_dup_new = self->spooler.dup_new; ret.num_dup_old = self->spooler.dup_old; if (self->base.rel) heap_close(self->base.rel, AccessExclusiveLock); if (self->blocks) pfree(self->blocks); pfree(self); } return ret; }
static WriterResult BufferedWriterClose(BufferedWriter *self, bool onError) { WriterResult ret = { 0 }; if (!onError) { if (self->bistate) FreeBulkInsertState(self->bistate); SpoolerClose(&self->spooler); ret.num_dup_new = self->spooler.dup_new; ret.num_dup_old = self->spooler.dup_old; if (self->base.rel) heap_close(self->base.rel, AccessExclusiveLock); pfree(self); } return ret; }