Thread
Commits
-
Use elog, not Assert, to report failure to provide an outer snapshot.
- f260436459a6 12.8 landed
- ef12f32c0870 15.0 landed
- ec410c985e6d 14.0 landed
- cefb1230e7aa 11.13 landed
- 93f99693f9c2 13.4 landed
-
Restore the portal-level snapshot after procedure COMMIT/ROLLBACK.
- d18ee6f92d9a 13.4 cited
-
BUG #17035: assert after commit
The Post Office <noreply@postgresql.org> — 2021-05-26T06:55:18Z
The following bug has been logged on the website: Bug reference: 17035 Logged by: RekGRpth Email address: rekgrpth@gmail.com PostgreSQL version: 13.3 Operating system: docker alpine Description: after this commit https://github.com/postgres/postgres/commit/d18ee6f92d9a22b4fae57f515797b2196bf385c7 I got assert TRAP: FailedAssertion("portal != NULL", File: "pquery.c", Line: 1758) in my plugin https://github.com/RekGRpth/pg_task -
Re: BUG #17035: assert after commit
Tom Lane <tgl@sss.pgh.pa.us> — 2021-05-26T13:52:31Z
PG Bug reporting form <noreply@postgresql.org> writes: > after this commit > https://github.com/postgres/postgres/commit/d18ee6f92d9a22b4fae57f515797b2196bf385c7 > I got assert > TRAP: FailedAssertion("portal != NULL", File: "pquery.c", Line: 1758) > in my plugin > https://github.com/RekGRpth/pg_task I'm inclined to think that means you were doing something you should not have been doing. But without any details it's hard to say. regards, tom lane -
Re: BUG #17035: assert after commit
RekGRpth <rekgrpth@gmail.com> — 2021-05-26T13:54:03Z
Ok, thanks. I only use SPI_execute_plan and before that commit all works fine with bst regrds, Rek>pth ср, 26 мая 2021 г. в 18:52, Tom Lane <tgl@sss.pgh.pa.us>: > > PG Bug reporting form <noreply@postgresql.org> writes: > > after this commit > > https://github.com/postgres/postgres/commit/d18ee6f92d9a22b4fae57f515797b2196bf385c7 > > I got assert > > TRAP: FailedAssertion("portal != NULL", File: "pquery.c", Line: 1758) > > in my plugin > > https://github.com/RekGRpth/pg_task > > I'm inclined to think that means you were doing something you > should not have been doing. But without any details it's > hard to say. > > regards, tom lane -
Re: BUG #17035: assert after commit
Alvaro Herrera <alvherre@alvh.no-ip.org> — 2021-05-26T17:40:17Z
On 2021-May-26, Tom Lane wrote: > PG Bug reporting form <noreply@postgresql.org> writes: > > after this commit > > https://github.com/postgres/postgres/commit/d18ee6f92d9a22b4fae57f515797b2196bf385c7 > > I got assert > > TRAP: FailedAssertion("portal != NULL", File: "pquery.c", Line: 1758) > > in my plugin > > https://github.com/RekGRpth/pg_task > > I'm inclined to think that means you were doing something you > should not have been doing. But without any details it's > hard to say. Hmm, see for example [1] which is doing SPI_prepare_my() [2] and then SPI_execute_plan_my() ... Does the SPI interface really require that you create an ActivePortal in the SPI-calling code? This looks a bit suspicious to me ... [1] https://github.com/RekGRpth/pg_task/blob/master/work.c#L703 [2] https://github.com/RekGRpth/pg_task/blob/master/spi.c -- Álvaro Herrera Valdivia, Chile -
Re: BUG #17035: assert after commit
Tom Lane <tgl@sss.pgh.pa.us> — 2021-05-26T17:47:53Z
Alvaro Herrera <alvherre@alvh.no-ip.org> writes: > Hmm, see for example [1] which is doing SPI_prepare_my() [2] and then > SPI_execute_plan_my() ... Does the SPI interface really require that you > create an ActivePortal in the SPI-calling code? The expectation is that the calling code is already executing inside some Portal. If it isn't, it's incumbent on the caller to set up an adequate substitute environment, in particular a transaction snapshot. The only thing 84f5c2908 changed is that now you get a guaranteed failure if you neglect to provide that, rather than failing only in corner cases. Possibly we should change that Assert to an elog that tries to make it clear that the blame is on the caller. regards, tom lane
-
Re: BUG #17035: assert after commit
RekGRpth <rekgrpth@gmail.com> — 2021-05-27T03:00:59Z
Ok, I see. But I use SPI_execute_plan in background worker and no ActivePortal there with bst regrds, Rek>pth ср, 26 мая 2021 г. в 22:47, Tom Lane <tgl@sss.pgh.pa.us>: > > Alvaro Herrera <alvherre@alvh.no-ip.org> writes: > > Hmm, see for example [1] which is doing SPI_prepare_my() [2] and then > > SPI_execute_plan_my() ... Does the SPI interface really require that you > > create an ActivePortal in the SPI-calling code? > > The expectation is that the calling code is already executing inside > some Portal. If it isn't, it's incumbent on the caller to set up > an adequate substitute environment, in particular a transaction > snapshot. The only thing 84f5c2908 changed is that now you get > a guaranteed failure if you neglect to provide that, rather than > failing only in corner cases. > > Possibly we should change that Assert to an elog that tries to > make it clear that the blame is on the caller. > > regards, tom lane
-
Re: BUG #17035: assert after commit
Tom Lane <tgl@sss.pgh.pa.us> — 2021-05-27T03:22:42Z
RekGRpth <rekgrpth@gmail.com> writes: > Ok, I see. But I use SPI_execute_plan in background worker and no > ActivePortal there Well, you need to provide a snapshot. replication/worker.c might serve as an example. regards, tom lane
-
Re: BUG #17035: assert after commit
RekGRpth <rekgrpth@gmail.com> — 2021-05-27T03:51:09Z
Ok, thanks. I add PushActiveSnapshot(GetTransactionSnapshot()); after SPI_start_transaction and PopActiveSnapshot(); before SPI_commit and it works! with bst regrds, Rek>pth чт, 27 мая 2021 г. в 08:22, Tom Lane <tgl@sss.pgh.pa.us>: > > RekGRpth <rekgrpth@gmail.com> writes: > > Ok, I see. But I use SPI_execute_plan in background worker and no > > ActivePortal there > > Well, you need to provide a snapshot. replication/worker.c > might serve as an example. > > regards, tom lane