Re: FailedAssertion("pd_idx == pinfo->nparts", File: "execPartition.c", Line: 1689)

Andy Fan <zhihui.fan1213@gmail.com>

From: Andy Fan <zhihui.fan1213@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Robert Haas <robertmhaas@gmail.com>, Amit Langote <amitlangote09@gmail.com>, Justin Pryzby <pryzby@telsasoft.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2020-08-06T15:57:08Z
Lists: pgsql-hackers

Attachments

On Thu, Aug 6, 2020 at 10:42 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:

> Andy Fan <zhihui.fan1213@gmail.com> writes:
> > On Thu, Aug 6, 2020 at 12:02 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
> >> See my straw-man proposal downthread.
>
> > Thanks for your explanation, I checked it again and it looks a very clean
> > method.  The attached is a draft patch based on my understanding.  Hope
> > I didn't  misunderstand you..
>
> Ah, I was going to play arond with that today, but you beat me to it ;-)
>
>
Very glad to be helpful.


> A few thoughts after a quick look at the patch:
>
> * I had envisioned that there's a custom GUC controlling the lock ID
> used; this would allow blocking different sessions at different points,
> if we ever need that.  Also, I'd make the GUC start out as zero which
> means "do nothing", so that merely loading the module has no immediate
> effect.
>
>
I forgot to say I didn't get the point of the guc variable in the last
thread,
now I think it is a smart idea, so added it.  In this way, one session
can only be blocked at one place, it may not be an issue in practise.

* Don't really see the point of the before-planning lock.
>
>
yes.. it was removed now.

* Rather than exposing internal declarations from lockfuncs.c, you
> could just write calls to pg_advisory_lock_int8 etc. using
> DirectFunctionCall1.
>
>
Thanks for sharing it,  this method looks pretty good.


> * We need some better name than "test_module".  I had vaguely thought
> about "delay_execution", but am surely open to better ideas.
>
>
Both names look good to me, delay_execution looks better,  it is used in
v2.

Attached is the v2 patch.

-- 
Best Regards
Andy Fan

Commits

  1. Support testing of cases where table schemas change after planning.

  2. Fix matching of sub-partitions when a partitioned plan is stale.

  3. Speed up planning when partitions can be pruned at plan time.

  4. Allow ATTACH PARTITION with only ShareUpdateExclusiveLock.