Re: New Table Access Methods for Multi and Single Inserts
Justin Pryzby <pryzby@telsasoft.com>
From: Justin Pryzby <pryzby@telsasoft.com>
To: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>, Andres Freund <andres@anarazel.de>, Luc Vlaming <luc@swarm64.com>, Paul Guo <guopa@vmware.com>
Date: 2020-12-18T17:54:39Z
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
On Fri, Dec 18, 2020 at 07:39:14AM +0530, Bharath Rupireddy wrote: > On Fri, Dec 18, 2020 at 2:14 AM Justin Pryzby <pryzby@telsasoft.com> wrote: > > Are you thinking that TableInsertState would eventually have additional > > attributes which would apply to other tableams, but not to heap ? Is > > heap_insert_begin() really specific to heap ? It's allocating and populating a > > structure based on its arguments, but those same arguments would be passed to > > every other AM's insert_begin routine, too. Do you need a more flexible data > > structure, something that would also accomodate extensions? I'm thinking of > > reloptions as a loose analogy. > > I could not think of other tableam attributes now. But +1 to have that > kind of flexible structure for TableInsertState. So, it can have > tableam type and attributes within the union for each type. Right now you have heap_insert_begin(), and I asked if it was really heap-specific. Right now, it populates a struct based on a static list of arguments, which are what heap uses. If you were to implement a burp_insert_begin(), how would it differ from heap's? With the current API, they'd (have to) be the same, which means either that it should apply to all AMs (or have a "default" implementation that can be overridden by an AM), or that this API assumes that other AMs will want to do exactly what heap does, and fails to allow other AMs to implement optimizations for bulk inserts as claimed. I don't think using a "union" solves the problem, since it can only accommodate core AMs, and not extensions, so I suggested something like reloptions, which have a "namespace" prefix (and core has toast.*, like ALTER TABLE t SET toast.autovacuum_enabled). -- Justin