Re: New Table Access Methods for Multi and Single Inserts
Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
From: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
To: Luc Vlaming <luc@swarm64.com>
Cc: Justin Pryzby <pryzby@telsasoft.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>,
Andres Freund <andres@anarazel.de>, Paul Guo <guopa@vmware.com>, Jeff Davis <pgsql@j-davis.com>
Date: 2021-02-17T07:16:25Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
libpq: Fix some issues in TAP tests for service files
- 2c7bd2ba507e 18.0 cited
-
Multiple revisions to the GROUP BY reordering tests
- 874d817baa16 17.0 cited
-
Explore alternative orderings of group-by pathkeys during optimization.
- 0452b461bc40 17.0 cited
Attachments
- v3-0001-New-Table-AMs-for-Multi-and-Single-Inserts.patch (application/x-patch) patch v3-0001
- v3-0002-CTAS-and-REFRESH-Mat-View-With-New-Multi-Insert-T.patch (application/x-patch) patch v3-0002
- v3-0003-COPY-With-New-Multi-and-Single-Insert-Table-AM.patch (application/x-patch) patch v3-0003
Hi, I addressed the following review comments and attaching v3 patch set. 1) ExecClearTuple happens before ExecCopySlot in heap_multi_insert_v2 and this allowed us to remove clear_mi_slots flag from TableInsertState. 2) I retained the flushed variable inside TableInsertState so that the callers can know whether the buffered slots have been flushed. If yes, the callers can execute after insert row triggers or perform index insertions. This is easier than passing the after insert row triggers info and index info to new multi insert table am and let it do. This way the functionalities can be kept separate i.e. multi insert ams do only buffering, decisions on when to flush, insertions and the callers will execute triggers or index insertions. And also none of the existing table ams are performing these operations within them, so this is inline with the current design of the table ams. 3) I have kept the single and multi insert API separate. The previous suggestion was to have only a single insert API and let the callers provide initially whether they want multi or single inserts. One problem with that approach is that we have to allow table ams to execute the after row triggers or index insertions. That is something I personally don't like. 0001 - new table ams implementation 0002 - the new multi table ams used in CREATE TABLE AS and REFRESH MATERIALIZED VIEW 0003 - the new multi table ams used in COPY Please review the v3 patch set further. With Regards, Bharath Rupireddy. EnterpriseDB: http://www.enterprisedb.com