Skip to content

Commit a686050

Browse files
author
Maxim Orlov
committed
Issue #27: Fix savepoint in transaction issue.
1 parent 4b85a7c commit a686050

File tree

3 files changed

+425
-10
lines changed

3 files changed

+425
-10
lines changed

expected/pg_variables_trans.out

+129
Original file line numberDiff line numberDiff line change
@@ -3653,3 +3653,132 @@ SELECT pgv_free();
36533653

36543654
(1 row)
36553655

3656+
---
3657+
--- Some special cases
3658+
---
3659+
-- 1
3660+
BEGIN;
3661+
SAVEPOINT comm2;
3662+
SELECT pgv_insert('test', 'x1', ROW (2::float, 1::float), TRUE);
3663+
pgv_insert
3664+
------------
3665+
3666+
(1 row)
3667+
3668+
DECLARE r1_cur CURSOR FOR SELECT pgv_stats();
3669+
DECLARE r2_cur CURSOR FOR SELECT pgv_stats();
3670+
FETCH 1 in r1_cur;
3671+
pgv_stats
3672+
--------------
3673+
(test,32768)
3674+
(1 row)
3675+
3676+
FETCH 1 in r2_cur;
3677+
pgv_stats
3678+
--------------
3679+
(test,32768)
3680+
(1 row)
3681+
3682+
COMMIT;
3683+
-- 2
3684+
BEGIN;
3685+
SELECT pgv_insert('test', 'x2', ROW (2::float, 1::float), TRUE);
3686+
pgv_insert
3687+
------------
3688+
3689+
(1 row)
3690+
3691+
SAVEPOINT comm2;
3692+
DECLARE r1_cur CURSOR FOR SELECT pgv_stats();
3693+
DECLARE r2_cur CURSOR FOR SELECT pgv_stats();
3694+
FETCH 1 in r1_cur;
3695+
pgv_stats
3696+
--------------
3697+
(test,49152)
3698+
(1 row)
3699+
3700+
FETCH 1 in r2_cur;
3701+
pgv_stats
3702+
--------------
3703+
(test,49152)
3704+
(1 row)
3705+
3706+
COMMIT;
3707+
-- 3
3708+
BEGIN;
3709+
SELECT pgv_insert('test', 'x3', ROW (2::float, 1::float), TRUE);
3710+
pgv_insert
3711+
------------
3712+
3713+
(1 row)
3714+
3715+
DECLARE r1_cur CURSOR FOR SELECT pgv_stats();
3716+
DECLARE r2_cur CURSOR FOR SELECT pgv_stats();
3717+
SAVEPOINT comm2;
3718+
FETCH 1 in r1_cur;
3719+
pgv_stats
3720+
--------------
3721+
(test,65536)
3722+
(1 row)
3723+
3724+
FETCH 1 in r2_cur;
3725+
pgv_stats
3726+
--------------
3727+
(test,65536)
3728+
(1 row)
3729+
3730+
COMMIT;
3731+
-- 4
3732+
BEGIN;
3733+
SELECT pgv_insert('test', 'x4', ROW (2::float, 1::float), TRUE);
3734+
pgv_insert
3735+
------------
3736+
3737+
(1 row)
3738+
3739+
DECLARE r1_cur CURSOR FOR SELECT pgv_stats();
3740+
DECLARE r2_cur CURSOR FOR SELECT pgv_stats();
3741+
FETCH 1 in r1_cur;
3742+
pgv_stats
3743+
--------------
3744+
(test,81920)
3745+
(1 row)
3746+
3747+
SAVEPOINT comm2;
3748+
FETCH 1 in r2_cur;
3749+
pgv_stats
3750+
--------------
3751+
(test,81920)
3752+
(1 row)
3753+
3754+
COMMIT;
3755+
-- 5
3756+
BEGIN;
3757+
SELECT pgv_insert('test', 'x5', ROW (2::float, 1::float), TRUE);
3758+
pgv_insert
3759+
------------
3760+
3761+
(1 row)
3762+
3763+
DECLARE r1_cur CURSOR FOR SELECT pgv_stats();
3764+
DECLARE r2_cur CURSOR FOR SELECT pgv_stats();
3765+
FETCH 1 in r1_cur;
3766+
pgv_stats
3767+
--------------
3768+
(test,98304)
3769+
(1 row)
3770+
3771+
FETCH 1 in r2_cur;
3772+
pgv_stats
3773+
--------------
3774+
(test,98304)
3775+
(1 row)
3776+
3777+
SAVEPOINT comm2;
3778+
COMMIT;
3779+
SELECT pgv_free();
3780+
pgv_free
3781+
----------
3782+
3783+
(1 row)
3784+

expected/pg_variables_trans_1.out

+129
Original file line numberDiff line numberDiff line change
@@ -3653,3 +3653,132 @@ SELECT pgv_free();
36533653

36543654
(1 row)
36553655

3656+
---
3657+
--- Some special cases
3658+
---
3659+
-- 1
3660+
BEGIN;
3661+
SAVEPOINT comm2;
3662+
SELECT pgv_insert('test', 'x1', ROW (2::float, 1::float), TRUE);
3663+
pgv_insert
3664+
------------
3665+
3666+
(1 row)
3667+
3668+
DECLARE r1_cur CURSOR FOR SELECT pgv_stats();
3669+
DECLARE r2_cur CURSOR FOR SELECT pgv_stats();
3670+
FETCH 1 in r1_cur;
3671+
pgv_stats
3672+
--------------
3673+
(test,0)
3674+
(1 row)
3675+
3676+
FETCH 1 in r2_cur;
3677+
pgv_stats
3678+
--------------
3679+
(test,0)
3680+
(1 row)
3681+
3682+
COMMIT;
3683+
-- 2
3684+
BEGIN;
3685+
SELECT pgv_insert('test', 'x2', ROW (2::float, 1::float), TRUE);
3686+
pgv_insert
3687+
------------
3688+
3689+
(1 row)
3690+
3691+
SAVEPOINT comm2;
3692+
DECLARE r1_cur CURSOR FOR SELECT pgv_stats();
3693+
DECLARE r2_cur CURSOR FOR SELECT pgv_stats();
3694+
FETCH 1 in r1_cur;
3695+
pgv_stats
3696+
--------------
3697+
(test,0)
3698+
(1 row)
3699+
3700+
FETCH 1 in r2_cur;
3701+
pgv_stats
3702+
--------------
3703+
(test,0)
3704+
(1 row)
3705+
3706+
COMMIT;
3707+
-- 3
3708+
BEGIN;
3709+
SELECT pgv_insert('test', 'x3', ROW (2::float, 1::float), TRUE);
3710+
pgv_insert
3711+
------------
3712+
3713+
(1 row)
3714+
3715+
DECLARE r1_cur CURSOR FOR SELECT pgv_stats();
3716+
DECLARE r2_cur CURSOR FOR SELECT pgv_stats();
3717+
SAVEPOINT comm2;
3718+
FETCH 1 in r1_cur;
3719+
pgv_stats
3720+
--------------
3721+
(test,0)
3722+
(1 row)
3723+
3724+
FETCH 1 in r2_cur;
3725+
pgv_stats
3726+
--------------
3727+
(test,0)
3728+
(1 row)
3729+
3730+
COMMIT;
3731+
-- 4
3732+
BEGIN;
3733+
SELECT pgv_insert('test', 'x4', ROW (2::float, 1::float), TRUE);
3734+
pgv_insert
3735+
------------
3736+
3737+
(1 row)
3738+
3739+
DECLARE r1_cur CURSOR FOR SELECT pgv_stats();
3740+
DECLARE r2_cur CURSOR FOR SELECT pgv_stats();
3741+
FETCH 1 in r1_cur;
3742+
pgv_stats
3743+
--------------
3744+
(test,0)
3745+
(1 row)
3746+
3747+
SAVEPOINT comm2;
3748+
FETCH 1 in r2_cur;
3749+
pgv_stats
3750+
--------------
3751+
(test,0)
3752+
(1 row)
3753+
3754+
COMMIT;
3755+
-- 5
3756+
BEGIN;
3757+
SELECT pgv_insert('test', 'x5', ROW (2::float, 1::float), TRUE);
3758+
pgv_insert
3759+
------------
3760+
3761+
(1 row)
3762+
3763+
DECLARE r1_cur CURSOR FOR SELECT pgv_stats();
3764+
DECLARE r2_cur CURSOR FOR SELECT pgv_stats();
3765+
FETCH 1 in r1_cur;
3766+
pgv_stats
3767+
--------------
3768+
(test,0)
3769+
(1 row)
3770+
3771+
FETCH 1 in r2_cur;
3772+
pgv_stats
3773+
--------------
3774+
(test,0)
3775+
(1 row)
3776+
3777+
SAVEPOINT comm2;
3778+
COMMIT;
3779+
SELECT pgv_free();
3780+
pgv_free
3781+
----------
3782+
3783+
(1 row)
3784+

0 commit comments

Comments
 (0)