| -- |
| -- 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); |