|
| 1 | +-- |
| 2 | +-- Verify correct calculation of checksums |
| 3 | +-- |
| 4 | +-- Postgres' checksum algorithm produces different answers on little-endian |
| 5 | +-- and big-endian machines. The results of this test also vary depending |
| 6 | +-- on the configured block size. This test has several different expected |
| 7 | +-- results files to handle the following possibilities: |
| 8 | +-- |
| 9 | +-- BLCKSZ end file |
| 10 | +-- 8K LE checksum.out |
| 11 | +-- 8K BE checksum_1.out |
| 12 | +-- |
| 13 | +-- In future we might provide additional expected-results files for other |
| 14 | +-- block sizes, but there seems little point as long as so many other |
| 15 | +-- test scripts also show false failures for non-default block sizes. |
| 16 | +-- |
| 17 | +-- This is to label the results files with blocksize: |
| 18 | +SHOW block_size; |
| 19 | + block_size |
| 20 | +------------ |
| 21 | + 8192 |
| 22 | +(1 row) |
| 23 | + |
| 24 | +SHOW block_size \gset |
| 25 | +-- Apply page_checksum() to some different data patterns and block numbers |
| 26 | +SELECT blkno, |
| 27 | + page_checksum(decode(repeat('01', :block_size), 'hex'), blkno) AS checksum_01, |
| 28 | + page_checksum(decode(repeat('04', :block_size), 'hex'), blkno) AS checksum_04, |
| 29 | + page_checksum(decode(repeat('ff', :block_size), 'hex'), blkno) AS checksum_ff, |
| 30 | + page_checksum(decode(repeat('abcd', :block_size / 2), 'hex'), blkno) AS checksum_abcd, |
| 31 | + page_checksum(decode(repeat('e6d6', :block_size / 2), 'hex'), blkno) AS checksum_e6d6, |
| 32 | + page_checksum(decode(repeat('4a5e', :block_size / 2), 'hex'), blkno) AS checksum_4a5e |
| 33 | + FROM generate_series(0, 100, 50) AS a (blkno); |
| 34 | + blkno | checksum_01 | checksum_04 | checksum_ff | checksum_abcd | checksum_e6d6 | checksum_4a5e |
| 35 | +-------+-------------+-------------+-------------+---------------+---------------+--------------- |
| 36 | + 0 | -16327 | 8766 | -2722 | 13757 | -11485 | -31426 |
| 37 | + 50 | -16281 | 8780 | -2708 | 13771 | -11503 | -31440 |
| 38 | + 100 | -16235 | 8866 | -2758 | 13721 | -11577 | -31518 |
| 39 | +(3 rows) |
| 40 | + |
0 commit comments