Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1b0b3be

Browse files
committed
Fix for68edd02: Do not call hash_seq_term(), we can't trust to its pointer in the callback function
1 parente5af4d3 commit1b0b3be

File tree

3 files changed

+41
-23
lines changed

3 files changed

+41
-23
lines changed

‎expected/pg_variables.out‎

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -553,20 +553,6 @@ SELECT pgv_insert('vars3', 'r1', row(1, 1));
553553
ERROR: new record structure differs from variable "r1" structure
554554
SELECT pgv_insert('vars3', 'r1', row('str1', 'str1'));
555555
ERROR: new record structure differs from variable "r1" structure
556-
SELECT pgv_select('vars3', 'r1') LIMIT 2;
557-
pgv_select
558-
------------
559-
(,strNULL)
560-
(1,str11)
561-
(2 rows)
562-
563-
SELECT pgv_select('vars3', 'r1') LIMIT 2 OFFSET 2;
564-
pgv_select
565-
------------
566-
(2,)
567-
(0,str00)
568-
(2 rows)
569-
570556
SELECT pgv_select('vars3', 'r1');
571557
pgv_select
572558
------------
@@ -657,6 +643,35 @@ SELECT pgv_exists('vars3', 'r1');
657643

658644
SELECT pgv_select('vars2', 'j1');
659645
ERROR: variable "j1" requires "jsonb" value
646+
-- Tests for SRF's sequential scan of an internal hash table
647+
DO
648+
$$BEGIN
649+
PERFORM pgv_select('vars3', 'r1') LIMIT 2 OFFSET 2;
650+
PERFORM pgv_select('vars3', 'r3');
651+
END$$;
652+
ERROR: unrecognized variable "r3"
653+
CONTEXT: SQL statement "SELECT pgv_select('vars3', 'r3')"
654+
PL/pgSQL function inline_code_block line 3 at PERFORM
655+
-- Check that the hash table was cleaned up after rollback
656+
SELECT pgv_select('vars3', 'r1', 1);
657+
pgv_select
658+
------------
659+
660+
(1 row)
661+
662+
SELECT pgv_select('vars3', 'r1') LIMIT 2;
663+
pgv_select
664+
------------
665+
(,strNULL)
666+
(2,)
667+
(2 rows)
668+
669+
SELECT pgv_select('vars3', 'r1') LIMIT 2 OFFSET 2;
670+
pgv_select
671+
------------
672+
(0,str00)
673+
(1 row)
674+
660675
-- Manipulate variables
661676
SELECT * FROM pgv_list() order by package, name;
662677
package | name | is_transactional

‎pg_variables.c‎

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2121,14 +2121,9 @@ pgvTransCallback(XactEvent event, void *arg)
21212121
}
21222122
}
21232123

2124-
if (event==XACT_EVENT_PARALLEL_COMMIT||event==XACT_EVENT_COMMIT||
2125-
event==XACT_EVENT_PREPARE||
2126-
event==XACT_EVENT_PARALLEL_ABORT||event==XACT_EVENT_ABORT)
2124+
if (event==XACT_EVENT_PARALLEL_ABORT||event==XACT_EVENT_ABORT)
21272125
if (LastHSeqStatus)
2128-
{
2129-
hash_seq_term(LastHSeqStatus);
21302126
LastHSeqStatus=NULL;
2131-
}
21322127
}
21332128

21342129
/*

‎sql/pg_variables.sql‎

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,6 @@ SELECT pgv_insert('vars3', 'r1', row(1, 'str1', 'str2'));
153153
SELECT pgv_insert('vars3','r1', row(1,1));
154154
SELECT pgv_insert('vars3','r1', row('str1','str1'));
155155

156-
SELECT pgv_select('vars3','r1')LIMIT2;
157-
SELECT pgv_select('vars3','r1')LIMIT2 OFFSET2;
158-
159156
SELECT pgv_select('vars3','r1');
160157
SELECT pgv_select('vars3','r1',1);
161158
SELECT pgv_select('vars3','r1',0);
@@ -175,6 +172,17 @@ SELECT pgv_exists('vars3', 'r3');
175172
SELECT pgv_exists('vars3','r1');
176173
SELECT pgv_select('vars2','j1');
177174

175+
-- Tests for SRF's sequential scan of an internal hash table
176+
DO
177+
$$BEGIN
178+
PERFORM pgv_select('vars3','r1')LIMIT2 OFFSET2;
179+
PERFORM pgv_select('vars3','r3');
180+
END$$;
181+
-- Check that the hash table was cleaned up after rollback
182+
SELECT pgv_select('vars3','r1',1);
183+
SELECT pgv_select('vars3','r1')LIMIT2;
184+
SELECT pgv_select('vars3','r1')LIMIT2 OFFSET2;
185+
178186
-- Manipulate variables
179187
SELECT*FROM pgv_list()order by package, name;
180188
SELECT packageFROM pgv_stats()order by package;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp