resstorewarn.patch
text/x-patch
Filename: resstorewarn.patch
Type: text/x-patch
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
| File | + | − |
|---|---|---|
| src/bin/pg_dump/pg_backup_archiver.c | 16 | 1 |
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c
index 7d895c4..9918c4d 100644
--- a/src/bin/pg_dump/pg_backup_archiver.c
+++ b/src/bin/pg_dump/pg_backup_archiver.c
@@ -77,6 +77,9 @@ typedef struct _parallel_slot
#define NO_SLOT (-1)
+#define TEXT_DUMP_HEADER "--\n-- PostgreSQL database dump\n--\n\n"
+#define TEXT_DUMPALL_HEADER "--\n-- PostgreSQL database cluster dump\n--\n\n"
+
/* state needed to save/restore an archive's output target */
typedef struct _outputContext
{
@@ -1872,7 +1875,19 @@ _discoverArchiveFormat(ArchiveHandle *AH)
die_horribly(AH, modulename, "input file does not appear to be a valid archive (too short?)\n");
if (!isValidTarHeader(AH->lookahead))
- die_horribly(AH, modulename, "input file does not appear to be a valid archive\n");
+ {
+ if (strncmp(AH->lookahead, TEXT_DUMP_HEADER, strlen(TEXT_DUMP_HEADER)) == 0 ||
+ strncmp(AH->lookahead, TEXT_DUMPALL_HEADER, strlen(TEXT_DUMPALL_HEADER)) == 0)
+ {
+ /* looks like it's probably a text format dump. so suggest they try psql */
+ die_horribly(AH, modulename, "input file appears to be a text format dump. Please use psql.\n");
+ }
+ else
+ {
+ /* we have no idea what this is */
+ die_horribly(AH, modulename, "input file does not appear to be a valid archive\n");
+ }
+ }
AH->format = archTar;
}