LCOV - code coverage report
Current view: top level - src/include/storage - checksum_block_internal.h Coverage Total Hit
Test: PostgreSQL 20devel Lines: 100.0 % 11 11
Test Date: 2026-07-25 22:15:46 Functions: - 0 0
Legend: Lines:     hit not hit
Branches: + taken - not taken # not executed
Branches: 66.7 % 30 20

             Branch data     Line data    Source code
       1                 :             : /*-------------------------------------------------------------------------
       2                 :             :  *
       3                 :             :  * checksum_block_internal.h
       4                 :             :  *    Core algorithm for page checksums, semi-private to checksum_impl.h
       5                 :             :  *    and checksum.c.
       6                 :             :  *
       7                 :             :  * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
       8                 :             :  * Portions Copyright (c) 1994, Regents of the University of California
       9                 :             :  *
      10                 :             :  * src/include/storage/checksum_block_internal.h
      11                 :             :  *
      12                 :             :  *-------------------------------------------------------------------------
      13                 :             :  */
      14                 :             : 
      15                 :             : /* there is deliberately not an #ifndef CHECKSUM_BLOCK_INTERNAL_H here */
      16                 :             : 
      17                 :             : uint32      sums[N_SUMS];
      18                 :     2608116 : uint32      result = 0;
      19                 :             : uint32      i,
      20                 :             :             j;
      21                 :             : 
      22                 :             : /* ensure that the size is compatible with the algorithm */
      23                 :             : Assert(sizeof(PGChecksummablePage) == BLCKSZ);
      24                 :             : 
      25                 :             : /* initialize partial checksums to their corresponding offsets */
      26                 :     2608116 : memcpy(sums, checksumBaseOffsets, sizeof(checksumBaseOffsets));
      27                 :             : 
      28                 :             : /* main checksum calculation */
      29   [ +  +  -  - ]:   169527540 : for (i = 0; i < (uint32) (BLCKSZ / (sizeof(uint32) * N_SUMS)); i++)
                 [ +  + ]
      30   [ +  +  -  - ]:  5508340992 :     for (j = 0; j < N_SUMS; j++)
                 [ +  + ]
      31                 :  5341421568 :         CHECKSUM_COMP(sums[j], page->data[i][j]);
      32                 :             : 
      33                 :             : /* finally add in two rounds of zeroes for additional mixing */
      34   [ +  +  -  - ]:     7824348 : for (i = 0; i < 2; i++)
                 [ +  + ]
      35   [ +  +  -  - ]:   172135656 :     for (j = 0; j < N_SUMS; j++)
                 [ +  + ]
      36                 :   166919424 :         CHECKSUM_COMP(sums[j], 0);
      37                 :             : 
      38                 :             : /* xor fold partial checksums together */
      39   [ +  +  -  - ]:    86067828 : for (i = 0; i < N_SUMS; i++)
                 [ +  + ]
      40                 :    83459712 :     result ^= sums[i];
      41                 :             : 
      42                 :     2608116 : return result;
        

Generated by: LCOV version 2.0-1