Re: BUG #15727: PANIC: cannot abort transaction 295144144, it was already committed

Thomas Munro <thomas.munro@gmail.com>

From: Thomas Munro <thomas.munro@gmail.com>
To: Жарков Роман <r.zharkov@postgrespro.ru>
Cc: Michael Paquier <michael@paquier.xyz>, Andres Freund <andres@anarazel.de>, Tom Lane <tgl@sss.pgh.pa.us>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2019-04-11T08:52:17Z
Lists: pgsql-bugs

Attachments

On Thu, Apr 11, 2019 at 5:35 PM <r.zharkov@postgrespro.ru> wrote:
> TRAP: FailedAssertion("!((((tuple->t_data->t_infomask) & 0x0080) ||
> (((tuple->t_data->t_infomask) & (0x1000 | ((0x0040 | 0x0010) | 0x0040 |
> 0x0010))) == 0x0040)))", File: "heapam.c", Line:
> 4289)

Hi Roman,

Ah, I see it.  Can you reproduce the problem with this patch applied?

While going over that commit spotted an incorrect sizeof in
EstimateTransactionStateSpace(), but I'll fix that separately.

-- 
Thomas Munro
https://enterprisedb.com

Commits

  1. Fix GetNewTransactionId()'s interaction with xidVacLimit.

  2. Fix example in comment.

  3. Fix EvalPlanQualStart to handle partitioned result rels correctly.

  4. Fix a number of issues around modifying a previously updated row.

  5. Use FullTransactionId for the transaction stack.

  6. Add basic infrastructure for 64 bit transaction IDs.

  7. tableam: Add tuple_{insert, delete, update, lock} and use.

  8. Throw error if expiring tuple is again updated or deleted.