Re: BUG #17518: Getting Error "new multixact has more than one updating member" when trying to delete records.

Dave Cramer <davecramer@postgres.rocks>

From: Dave Cramer <davecramer@postgres.rocks>
To: "David G. Johnston" <david.g.johnston@gmail.com>
Cc: "Krier, Bob" <rkrier@cleo.com>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2022-06-28T19:33:27Z
Lists: pgsql-bugs
On Mon, 27 Jun 2022 at 13:11, David G. Johnston <david.g.johnston@gmail.com>
wrote:

> On Mon, Jun 27, 2022 at 9:36 AM Krier, Bob <rkrier@cleo.com> wrote:
>
>> Hi David,
>>
>>
>>
>> Thanks for the response.
>>
>>
>>
>>    - I haven’t tried via psql.  I only have a snapshot of the customer’s
>>    database that I can restore in RDS.  It is very time consuming to set this
>>    up.  I’ve corrected the problem by running VACUUM (FULL, FREEZE,
>>    VERBOSE, ANALYZE, INDEX_CLEANUP, TRUNCATE) on the table and the
>>    problem is resolved.
>>
>>
> Once you say "FULL" the rest of those options (except verbose) don't
> matter.
>
>
>>
>>    -
>>    - Deleting by date where it only matches to 1 row seems to work.  If
>>    I match on more than one, it seems to fail.  I’m not sure what conditions
>>    make it happen.  I have not tried to delete by PK.  I’m not sure what you
>>    mean by “How about columns?”.  You don’t specify columns on a delete
>>    statement.
>>
>>  Not sure I was thinking clearly on that one - but ultimately you could
> try "ALTER TABLE ... DROP COLUMN" though I'm doubting it would be
> productive
>
>
>>    - Can I construct a self-contained minimal reproducer?:  No
>>    unfortunately exporting the table and importing it to another Postgres
>>    instance does not reproduce the issue.   Again the vacuum above corrects
>>    the issue.
>>    - Does it manifiest standalone…?  Again I only have the snapshot to
>>    restore on RDS and can reproduce it that way.
>>
>>
Sounds to me like a corrupt table which is fixed by vacuuming.

Dave Cramer

>
>>    -
>>
>>
>>
> David J.
>

Commits

  1. Make multixact error message more explicit

  2. CREATE INDEX: use the original userid for more ACL checks.