Re: Example in "42.8. Transaction Management" doesn't work for PostgreSQL v 12.7

Поиск
Список
Период
Сортировка
От Guillaume Lelarge
Тема Re: Example in "42.8. Transaction Management" doesn't work for PostgreSQL v 12.7
Дата
Msg-id CAECtzeVS6xMTJ5Y4BnWJ5jZx1vmfD_SbEdVU4xjOqoW+26K9YA@mail.gmail.com
обсуждение исходный текст
Ответ на Example in "42.8. Transaction Management" doesn't work for PostgreSQL v 12.7  (Vladimir Shvartsgor <vshvartsgor@gmail.com>)
Ответы Re: Example in "42.8. Transaction Management" doesn't work for PostgreSQL v 12.7
Список pgsql-bugs
Hi,

Le mer. 23 juin 2021 à 10:01, Vladimir Shvartsgor <vshvartsgor@gmail.com> a écrit :
Hi,


--run before:
--create table test1(a int);

CREATE PROCEDURE transaction_test1()
LANGUAGE plpgsql
AS $$
BEGIN
    FOR i IN 0..9 LOOP
        INSERT INTO test1 (a) VALUES (i);
        IF i % 2 = 0 THEN
            COMMIT;
        ELSE
            ROLLBACK;
        END IF;
    END LOOP;
END;
$$;

CALL transaction_test1();

The CALL fails with error:
ERROR: invalid transaction termination
CONTEXT: PL/pgSQL function transaction_test1() line 6 at COMMIT
SQL state: 2D000

The exact version of PostgreSQL: PostgreSQL 12.7 (Ubuntu 12.7-0ubuntu0.20.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, 64-bit


I copy and paste your example, and it works for me. And the contents of the table look good to me:

$ psql
Time: 4.458 ms
psql (12.7)
Type "help" for help.

postgres@r12 =# truncate test1;
TRUNCATE TABLE
Time: 6.504 ms
postgres@r12 =# CALL transaction_test1();
CALL
Time: 15.540 ms
postgres@r12 =# TABLE test1;
┌───┐
│ a │
├───┤
│ 0 │
│ 2 │
│ 4 │
│ 6 │
│ 8 │
└───┘
(5 rows)
Time: 0.948 ms

There must be something else on your side that makes it fail.


--
Guillaume.

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

Предыдущее
От: Telford Tendys
Дата:
Сообщение: Re: Unicode FFFF Special Codepoint should always collate high.
Следующее
От: Sudheer H R
Дата:
Сообщение: Found a buffer-overflow defect in asynchronous database connection API PQconnectPoll