This is an automated email from the ASF dual-hosted git repository.

chenjinbao1989 pushed a commit to branch cbdb-postgres-merge
in repository https://gitbox.apache.org/repos/asf/cloudberry.git


The following commit(s) were added to refs/heads/cbdb-postgres-merge by this 
push:
     new 6ae4ce27a51 Add target_gp_dbid to symlink
6ae4ce27a51 is described below

commit 6ae4ce27a51ae889f0f845215e922ee22e5e3fa2
Author: Jinbao Chen <[email protected]>
AuthorDate: Thu Feb 5 22:50:20 2026 +0800

    Add target_gp_dbid to symlink
---
 src/bin/pg_basebackup/bbstreamer.h     | 3 ++-
 src/bin/pg_basebackup/bbstreamer_tar.c | 8 ++++++--
 src/bin/pg_basebackup/pg_basebackup.c  | 4 ++--
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/bin/pg_basebackup/bbstreamer.h 
b/src/bin/pg_basebackup/bbstreamer.h
index f999e635d98..6842dd0d9c7 100644
--- a/src/bin/pg_basebackup/bbstreamer.h
+++ b/src/bin/pg_basebackup/bbstreamer.h
@@ -100,6 +100,7 @@ struct bbstreamer
        const bbstreamer_ops *bbs_ops;
        bbstreamer *bbs_next;
        StringInfoData bbs_buffer;
+       int target_gp_dbid;
 };
 
 /*
@@ -213,7 +214,7 @@ extern bbstreamer 
*bbstreamer_lz4_decompressor_new(bbstreamer *next);
 extern bbstreamer *bbstreamer_zstd_compressor_new(bbstreamer *next,
                                                                                
                  pg_compress_specification *compress);
 extern bbstreamer *bbstreamer_zstd_decompressor_new(bbstreamer *next);
-extern bbstreamer *bbstreamer_tar_parser_new(bbstreamer *next);
+extern bbstreamer *bbstreamer_tar_parser_new(bbstreamer *next, int 
target_gp_dbid);
 extern bbstreamer *bbstreamer_tar_terminator_new(bbstreamer *next);
 extern bbstreamer *bbstreamer_tar_archiver_new(bbstreamer *next);
 
diff --git a/src/bin/pg_basebackup/bbstreamer_tar.c 
b/src/bin/pg_basebackup/bbstreamer_tar.c
index 03d7fd3375a..a8f5afea02f 100644
--- a/src/bin/pg_basebackup/bbstreamer_tar.c
+++ b/src/bin/pg_basebackup/bbstreamer_tar.c
@@ -34,6 +34,7 @@ typedef struct bbstreamer_tar_parser
        bbstreamer_member member;
        size_t          file_bytes_sent;
        size_t          pad_bytes_expected;
+       int                     target_gp_dbid;
 } bbstreamer_tar_parser;
 
 typedef struct bbstreamer_tar_archiver
@@ -90,7 +91,7 @@ const bbstreamer_ops bbstreamer_tar_terminator_ops = {
  * conventions described in bbstreamer.h.
  */
 extern bbstreamer *
-bbstreamer_tar_parser_new(bbstreamer *next)
+bbstreamer_tar_parser_new(bbstreamer *next, int target_gp_dbid)
 {
        bbstreamer_tar_parser *streamer;
 
@@ -100,7 +101,7 @@ bbstreamer_tar_parser_new(bbstreamer *next)
        streamer->base.bbs_next = next;
        initStringInfo(&streamer->base.bbs_buffer);
        streamer->next_context = BBSTREAMER_MEMBER_HEADER;
-
+       streamer->target_gp_dbid = target_gp_dbid;
        return &streamer->base;
 }
 
@@ -303,6 +304,9 @@ bbstreamer_tar_header(bbstreamer_tar_parser *mystreamer)
        if (member->is_link)
                strlcpy(member->linktarget, &buffer[157], 100);
 
+       if (strlen(member->linktarget) != 0 && mystreamer->target_gp_dbid)
+               sprintf(member->linktarget, "%s/%d", member->linktarget, 
mystreamer->target_gp_dbid);
+
        /* Compute number of padding bytes. */
        mystreamer->pad_bytes_expected = tarPaddingBytesRequired(member->size);
 
diff --git a/src/bin/pg_basebackup/pg_basebackup.c 
b/src/bin/pg_basebackup/pg_basebackup.c
index 47ee928a758..24cd2f05258 100644
--- a/src/bin/pg_basebackup/pg_basebackup.c
+++ b/src/bin/pg_basebackup/pg_basebackup.c
@@ -1196,7 +1196,7 @@ CreateBackupStreamer(char *archive_name, char 
*spclocation,
                else
                {
                        snprintf(archive_filename, sizeof(archive_filename),
-                                        "%s/%s", basedir, archive_name);
+                                        "%s/%s/%d", basedir, archive_name, 
target_gp_dbid);
                        archive_file = NULL;
                }
 
@@ -1266,7 +1266,7 @@ CreateBackupStreamer(char *archive_name, char 
*spclocation,
         * we're talking to such a server we'll need to add the terminator here.
         */
        if (must_parse_archive)
-               streamer = bbstreamer_tar_parser_new(streamer);
+               streamer = bbstreamer_tar_parser_new(streamer, target_gp_dbid);
        else if (expect_unterminated_tarfile)
                streamer = bbstreamer_tar_terminator_new(streamer);
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to