Add pg_combinebackup --copy option
authorTomas Vondra <[email protected]>
Sun, 30 Jun 2024 17:20:02 +0000 (19:20 +0200)
committerTomas Vondra <[email protected]>
Sun, 30 Jun 2024 18:53:31 +0000 (20:53 +0200)
Introduces --copy as an alternative to --clone and --copy-file-range.
This option simply picks the default mode to copy files, as if none of
the options was specified. This makes pg_combinebackup options more
consistent with pg_upgrade, and it makes testing simpler.

Reported-by: Peter Eisentraut
Discussion: https://postgr.es/m/48da4a1f-ccd9-4988-9622-24f37b1de2b4%40eisentraut.org

doc/src/sgml/ref/pg_combinebackup.sgml
src/bin/pg_combinebackup/pg_combinebackup.c

index 375307d57bd425173111edba801a9020e21f56f4..091982f62ad56cec79f43ac75e4352ab7a146953 100644 (file)
@@ -162,6 +162,16 @@ PostgreSQL documentation
       </listitem>
      </varlistentry>
 
+     <varlistentry>
+      <term><option>--copy</option></term>
+      <listitem>
+       <para>
+        Perform regular file copy.  This is the default.  (See also
+        <option>--copy-file-range</option> and <option>--clone</option>.)
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry>
       <term><option>--copy-file-range</option></term>
       <listitem>
index 363fae234e93f158d9114312c8e15c040150af19..986a256dea502274f79fd002ffbdba73ccbf5d75 100644 (file)
@@ -139,7 +139,8 @@ main(int argc, char *argv[])
        {"no-manifest", no_argument, NULL, 2},
        {"sync-method", required_argument, NULL, 3},
        {"clone", no_argument, NULL, 4},
-       {"copy-file-range", no_argument, NULL, 5},
+       {"copy", no_argument, NULL, 5},
+       {"copy-file-range", no_argument, NULL, 6},
        {NULL, 0, NULL, 0}
    };
 
@@ -209,6 +210,9 @@ main(int argc, char *argv[])
                opt.copy_method = COPY_METHOD_CLONE;
                break;
            case 5:
+               opt.copy_method = COPY_METHOD_COPY;
+               break;
+           case 6:
                opt.copy_method = COPY_METHOD_COPY_FILE_RANGE;
                break;
            default:
@@ -763,6 +767,7 @@ help(const char *progname)
    printf(_("  -T, --tablespace-mapping=OLDDIR=NEWDIR\n"
             "                            relocate tablespace in OLDDIR to NEWDIR\n"));
    printf(_("      --clone               clone (reflink) instead of copying files\n"));
+   printf(_("      --copy                copy files (default)\n"));
    printf(_("      --copy-file-range     copy using copy_file_range() syscall\n"));
    printf(_("      --manifest-checksums=SHA{224,256,384,512}|CRC32C|NONE\n"
             "                            use algorithm for manifest checksums\n"));