mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Add an explicit test to catch changes in checksumming calculations.
Seems like a good idea in view of006517432
andaddd034ae
. Michael Paquier, Tom Lane Discussion: https://postgr.es/m/20200306075230.GA118430@paquier.xyz
This commit is contained in:
31
contrib/pageinspect/sql/checksum.sql
Normal file
31
contrib/pageinspect/sql/checksum.sql
Normal file
@ -0,0 +1,31 @@
|
||||
--
|
||||
-- Verify correct calculation of checksums
|
||||
--
|
||||
-- Postgres' checksum algorithm produces different answers on little-endian
|
||||
-- and big-endian machines. The results of this test also vary depending
|
||||
-- on the configured block size. This test has several different expected
|
||||
-- results files to handle the following possibilities:
|
||||
--
|
||||
-- BLCKSZ end file
|
||||
-- 8K LE checksum.out
|
||||
-- 8K BE checksum_1.out
|
||||
--
|
||||
-- In future we might provide additional expected-results files for other
|
||||
-- block sizes, but there seems little point as long as so many other
|
||||
-- test scripts also show false failures for non-default block sizes.
|
||||
--
|
||||
|
||||
-- This is to label the results files with blocksize:
|
||||
SHOW block_size;
|
||||
|
||||
SHOW block_size \gset
|
||||
|
||||
-- Apply page_checksum() to some different data patterns and block numbers
|
||||
SELECT blkno,
|
||||
page_checksum(decode(repeat('01', :block_size), 'hex'), blkno) AS checksum_01,
|
||||
page_checksum(decode(repeat('04', :block_size), 'hex'), blkno) AS checksum_04,
|
||||
page_checksum(decode(repeat('ff', :block_size), 'hex'), blkno) AS checksum_ff,
|
||||
page_checksum(decode(repeat('abcd', :block_size / 2), 'hex'), blkno) AS checksum_abcd,
|
||||
page_checksum(decode(repeat('e6d6', :block_size / 2), 'hex'), blkno) AS checksum_e6d6,
|
||||
page_checksum(decode(repeat('4a5e', :block_size / 2), 'hex'), blkno) AS checksum_4a5e
|
||||
FROM generate_series(0, 100, 50) AS a (blkno);
|
Reference in New Issue
Block a user