Re: BUG #14150: Attempted to delete invisible tuple

Поиск
Список
Период
Сортировка
От Oskari Saarenmaa
Тема Re: BUG #14150: Attempted to delete invisible tuple
Дата
Msg-id 62f3793f-13d6-567c-e512-f29d1fd76d00@aiven.io
обсуждение исходный текст
Ответ на Re: BUG #14150: Attempted to delete invisible tuple  (Oskari Saarenmaa <os@aiven.io>)
Ответы Re: BUG #14150: Attempted to delete invisible tuple  (Andres Freund <andres@anarazel.de>)
Re: BUG #14150: Attempted to delete invisible tuple  (Peter Geoghegan <pg@heroku.com>)
Список pgsql-bugs
06.07.2016, 09:05, Oskari Saarenmaa kirjoitti:
> I ran into this yesterday on 9.5.3 and created a test case before
> noticing this thread.  My test case just inserts a single
> toast-requiring row using ON CONFLICT DO NOTHING and typically fails
> immediately:
>
> pgbench -f random.sql -n -T 2 -c 2
>
> random.sql:
>
> -- CREATE TABLE vtest (id INT UNIQUE, blob BYTEA);
> TRUNCATE vtest;
> INSERT INTO vtest (id, blob) VALUES (1, encrypt(repeat('a',
> 8192)::bytea, 'x'::bytea, 'aes')) ON CONFLICT DO NOTHING;
>
> ISTM this is caused by toast knowing nothing about speculative
> insertion: when two backends have executed a speculative heap_insert
> with a conflicting key and the latter one tries to abort after receiving
> specConflict there's nothing in tqual.c to say that the toast rows
> associated with speculative insertion should be visible to that operation.

The attached patch against current master allows heap_abort_speculative
to delete toast rows created by the same command which makes the above
test case and "make check" run without failures.  Note that I haven't
touched this code before so I don't know how safe my patch is.

/ Oskari

Вложения

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Peter Geoghegan
Дата:
Сообщение: Re: BUG #14150: Attempted to delete invisible tuple
Следующее
От: nahumcastro@gmail.com
Дата:
Сообщение: BUG #14229: pg_config missing from postgresql95-devel