LCOV - code coverage report
Current view: top level - src/backend/backup - basebackup_sink.c (source / functions) Coverage Total Hit
Test: PostgreSQL 19devel Lines: 100.0 % 29 29
Test Date: 2026-03-03 02:14:47 Functions: 100.0 % 9 9
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /*-------------------------------------------------------------------------
       2              :  *
       3              :  * basebackup_sink.c
       4              :  *    Default implementations for bbsink (basebackup sink) callbacks.
       5              :  *
       6              :  * Portions Copyright (c) 2010-2026, PostgreSQL Global Development Group
       7              :  *
       8              :  * src/backend/backup/basebackup_sink.c
       9              :  *
      10              :  *-------------------------------------------------------------------------
      11              :  */
      12              : 
      13              : #include "postgres.h"
      14              : 
      15              : #include "backup/basebackup_sink.h"
      16              : 
      17              : /*
      18              :  * Forward begin_backup callback.
      19              :  *
      20              :  * Only use this implementation if you want the bbsink you're implementing to
      21              :  * share a buffer with the successor bbsink.
      22              :  */
      23              : void
      24          178 : bbsink_forward_begin_backup(bbsink *sink)
      25              : {
      26              :     Assert(sink->bbs_next != NULL);
      27              :     Assert(sink->bbs_state != NULL);
      28          178 :     bbsink_begin_backup(sink->bbs_next, sink->bbs_state,
      29          178 :                         sink->bbs_buffer_length);
      30          178 :     sink->bbs_buffer = sink->bbs_next->bbs_buffer;
      31          178 : }
      32              : 
      33              : /*
      34              :  * Forward begin_archive callback.
      35              :  */
      36              : void
      37          219 : bbsink_forward_begin_archive(bbsink *sink, const char *archive_name)
      38              : {
      39              :     Assert(sink->bbs_next != NULL);
      40          219 :     bbsink_begin_archive(sink->bbs_next, archive_name);
      41          219 : }
      42              : 
      43              : /*
      44              :  * Forward archive_contents callback.
      45              :  *
      46              :  * Code that wants to use this should initialize its own bbs_buffer and
      47              :  * bbs_buffer_length fields to the values from the successor sink. In cases
      48              :  * where the buffer isn't shared, the data needs to be copied before forwarding
      49              :  * the callback. We don't do try to do that here, because there's really no
      50              :  * reason to have separately allocated buffers containing the same identical
      51              :  * data.
      52              :  */
      53              : void
      54       396377 : bbsink_forward_archive_contents(bbsink *sink, size_t len)
      55              : {
      56              :     Assert(sink->bbs_next != NULL);
      57              :     Assert(sink->bbs_buffer == sink->bbs_next->bbs_buffer);
      58              :     Assert(sink->bbs_buffer_length == sink->bbs_next->bbs_buffer_length);
      59       396377 :     bbsink_archive_contents(sink->bbs_next, len);
      60       396377 : }
      61              : 
      62              : /*
      63              :  * Forward end_archive callback.
      64              :  */
      65              : void
      66          221 : bbsink_forward_end_archive(bbsink *sink)
      67              : {
      68              :     Assert(sink->bbs_next != NULL);
      69          221 :     bbsink_end_archive(sink->bbs_next);
      70          221 : }
      71              : 
      72              : /*
      73              :  * Forward begin_manifest callback.
      74              :  */
      75              : void
      76          176 : bbsink_forward_begin_manifest(bbsink *sink)
      77              : {
      78              :     Assert(sink->bbs_next != NULL);
      79          176 :     bbsink_begin_manifest(sink->bbs_next);
      80          176 : }
      81              : 
      82              : /*
      83              :  * Forward manifest_contents callback.
      84              :  *
      85              :  * As with the archive_contents callback, it's expected that the buffer is
      86              :  * shared.
      87              :  */
      88              : void
      89          883 : bbsink_forward_manifest_contents(bbsink *sink, size_t len)
      90              : {
      91              :     Assert(sink->bbs_next != NULL);
      92              :     Assert(sink->bbs_buffer == sink->bbs_next->bbs_buffer);
      93              :     Assert(sink->bbs_buffer_length == sink->bbs_next->bbs_buffer_length);
      94          883 :     bbsink_manifest_contents(sink->bbs_next, len);
      95          883 : }
      96              : 
      97              : /*
      98              :  * Forward end_manifest callback.
      99              :  */
     100              : void
     101          176 : bbsink_forward_end_manifest(bbsink *sink)
     102              : {
     103              :     Assert(sink->bbs_next != NULL);
     104          176 :     bbsink_end_manifest(sink->bbs_next);
     105          176 : }
     106              : 
     107              : /*
     108              :  * Forward end_backup callback.
     109              :  */
     110              : void
     111          177 : bbsink_forward_end_backup(bbsink *sink, XLogRecPtr endptr, TimeLineID endtli)
     112              : {
     113              :     Assert(sink->bbs_next != NULL);
     114          177 :     bbsink_end_backup(sink->bbs_next, endptr, endtli);
     115          177 : }
     116              : 
     117              : /*
     118              :  * Forward cleanup callback.
     119              :  */
     120              : void
     121          173 : bbsink_forward_cleanup(bbsink *sink)
     122              : {
     123              :     Assert(sink->bbs_next != NULL);
     124          173 :     bbsink_cleanup(sink->bbs_next);
     125          173 : }
        

Generated by: LCOV version 2.0-1