From: Alvaro Herrera Date: Fri, 24 Oct 2014 10:14:09 +0000 (-0300) Subject: psql: complain if pg_dump custom-format is detected X-Git-Tag: REL9_5_ALPHA1~1310 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3c2aa0c6f27fc921c881b3bf0b6df03fdf557304;p=postgresql psql: complain if pg_dump custom-format is detected Apparently, this is a very common mistake for users to make; it is better to have it fail reasonably rather than throw potentially a large number of errors. Since we have a magic string at the start of the file, we can detect the case easily and there's no other possible useful behavior anyway. Author: Craig Ringer --- diff --git a/src/bin/psql/mainloop.c b/src/bin/psql/mainloop.c index 98211dcb2a..7b02609701 100644 --- a/src/bin/psql/mainloop.c +++ b/src/bin/psql/mainloop.c @@ -175,6 +175,18 @@ MainLoop(FILE *source) if (pset.lineno == 1 && pset.encoding == PG_UTF8 && strncmp(line, "\xef\xbb\xbf", 3) == 0) memmove(line, line + 3, strlen(line + 3) + 1); + /* Detect attempts to run custom-format dumps as SQL scripts */ + if (pset.lineno == 1 && !pset.cur_cmd_interactive && + strncmp(line, "PGDMP", 5) == 0) + { + free(line); + puts(_("The input is a PostgreSQL custom-format dump.\n" + "Use the pg_restore command-line client to restore this dump to a database.\n")); + fflush(stdout); + successResult = EXIT_FAILURE; + break; + } + /* nothing left on line? then ignore */ if (line[0] == '\0' && !psql_scan_in_quote(scan_state)) {