Re: BUG #18377: Assert false in "partdesc->nparts >= pinfo->nparts", fileName="execPartition.c", lineNumber=1943

Tender Wang <tndrwang@gmail.com>

From: Tender Wang <tndrwang@gmail.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: 1026592243@qq.com, pgsql-bugs@lists.postgresql.org
Date: 2024-06-24T08:43:39Z
Lists: pgsql-bugs
Alvaro Herrera <alvherre@alvh.no-ip.org> 于2024年6月21日周五 20:39写道:

> I noticed further problems with this patch, and it turned out to have
> other bugs that would manifest under very high concurrency of detach and
> attach (I think the problem was a detach followed by an immediate attach
> of the same partition, or perhaps it was an attach of a neighboring
> partition), so I spent more time ironing those out and ended up with the
> following, which I'm rather embarrased not to have had as the previous
> version because it looks simpler and more obvious.
>
> Unless further surprises arise soon, I'll push this soonish.
>

 If we abstract the problem that this patch attempts to solve,it would try
to find same elements on two arrays.
The lengths of these two arrays are not guaranteed to be equal. In this
issue, even though the lengths of two arrays
is same, we can't assume the each element on two arrays is same.

The algorithm used in patch is correct if I understand correctly.

-- 
Tender Wang

Commits

  1. Fix partition pruning setup during DETACH CONCURRENTLY

  2. Revert "Fix partition pruning setup during DETACH CONCURRENTLY"

  3. Fix creation of partition descriptor during concurrent detach

  4. Use MyBackendType in more places to check what process this is