Re: ModifyTable overheads in generic plans

Amit Langote <amitlangote09@gmail.com>

From: Amit Langote <amitlangote09@gmail.com>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: Robert Haas <robertmhaas@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>, David Rowley <dgrowleyml@gmail.com>, "Tsunakawa, Takayuki" <tsunakawa.takay@jp.fujitsu.com>
Date: 2021-02-09T08:38:06Z
Lists: pgsql-hackers

Attachments

On Mon, Jan 25, 2021 at 2:23 PM Amit Langote <amitlangote09@gmail.com> wrote:
> On Tue, Dec 22, 2020 at 5:16 PM Amit Langote <amitlangote09@gmail.com> wrote:
> > On Mon, Dec 7, 2020 at 3:53 PM Amit Langote <amitlangote09@gmail.com> wrote:
> > > On Thu, Nov 12, 2020 at 5:04 PM Amit Langote <amitlangote09@gmail.com> wrote:
> > > > Attached new 0002 which does these adjustments.  I went with
> > > > ri_RootTargetDesc to go along with ri_RelationDesc.
> > > >
> > > > Also, I have updated the original 0002 (now 0003) to make
> > > > GetChildToRootMap() use ri_RootTargetDesc instead of
> > > > ModifyTableState.rootResultRelInfo.ri_RelationDesc, so that even
> > > > AfterTriggerSaveEvent() can now use that function.  This allows us to
> > > > avoid having to initialize ri_ChildToRootMap anywhere but inside
> > > > GetChildRootMap(), with that long comment defending doing so. :-)
> > >
> > > These needed to be rebased due to recent copy.c upheavals.  Attached.
> >
> > Needed to be rebased again.
>
> And again, this time over the recent batch insert API related patches.

Another rebase.

I've dropped what was patch 0001 in the previous set, because I think
it has been rendered unnecessary due to recently committed changes.
However, the rebase led to a couple of additional regression test
output changes that I think are harmless.  The changes are caused by
the fact that ri_RootResultRelInfo now gets initialized in *all* child
result relations, not just those that participate in tuple routing.

-- 
Amit Langote
EDB: http://www.enterprisedb.com

Commits

  1. Comment cleanup for a1115fa07.

  2. Postpone some more stuff out of ExecInitModifyTable.

  3. Postpone some stuff out of ExecInitModifyTable.