mirror of https://github.com/postgres/postgres
Fix contrib/pageinspect's test for sequences.
I managed to break this test in two different ways in commit05036a3155
. First, the output of the new call to tuple_data_split() on the test sequence is dependent on endianness. This is fixed by setting a special start value for the test sequence that produces the same output regardless of the endianness of the machine. Second, on versions older than v15, the new test case fails under "force_parallel_mode = regress" with the following error: ERROR: cannot access temporary tables during a parallel operation This is because pageinspect's disk-accessing functions are incorrectly marked PARALLEL SAFE on versions older than v15 (see commitaeaaf520f4
for details). This one is fixed by changing the test sequence to be permanent. The only reason it was previously marked temporary was to avoid needing a DROP SEQUENCE command at the end of the test. Unlike some other tests in this file, the use of a permanent sequence here shouldn't result in any test instability like what was fixed by commite2933a6e11
. Reviewed-by: Tom Lane Discussion: https://postgr.es/m/ZuOKOut5hhDlf_bP%40nathan Backpatch-through: 12
This commit is contained in:
parent
8a94af8a2d
commit
0970889e35
|
@ -237,11 +237,12 @@ SELECT page_checksum(decode(repeat('00', :block_size), 'hex'), 1);
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
-- tests for sequences
|
-- tests for sequences
|
||||||
create temporary sequence test_sequence;
|
create sequence test_sequence start 72057594037927937;
|
||||||
select tuple_data_split('test_sequence'::regclass, t_data, t_infomask, t_infomask2, t_bits)
|
select tuple_data_split('test_sequence'::regclass, t_data, t_infomask, t_infomask2, t_bits)
|
||||||
from heap_page_items(get_raw_page('test_sequence', 0));
|
from heap_page_items(get_raw_page('test_sequence', 0));
|
||||||
tuple_data_split
|
tuple_data_split
|
||||||
-------------------------------------------------------
|
-------------------------------------------------------
|
||||||
{"\\x0100000000000000","\\x0000000000000000","\\x00"}
|
{"\\x0100000000000001","\\x0000000000000000","\\x00"}
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
|
drop sequence test_sequence;
|
||||||
|
|
|
@ -99,6 +99,7 @@ SELECT page_header(decode(repeat('00', :block_size), 'hex'));
|
||||||
SELECT page_checksum(decode(repeat('00', :block_size), 'hex'), 1);
|
SELECT page_checksum(decode(repeat('00', :block_size), 'hex'), 1);
|
||||||
|
|
||||||
-- tests for sequences
|
-- tests for sequences
|
||||||
create temporary sequence test_sequence;
|
create sequence test_sequence start 72057594037927937;
|
||||||
select tuple_data_split('test_sequence'::regclass, t_data, t_infomask, t_infomask2, t_bits)
|
select tuple_data_split('test_sequence'::regclass, t_data, t_infomask, t_infomask2, t_bits)
|
||||||
from heap_page_items(get_raw_page('test_sequence', 0));
|
from heap_page_items(get_raw_page('test_sequence', 0));
|
||||||
|
drop sequence test_sequence;
|
||||||
|
|
Loading…
Reference in New Issue