Re: Non-text mode for pg_dumpall
Andrew Dunstan <andrew@dunslane.net>
From: Andrew Dunstan <andrew@dunslane.net>
To: Mahendra Singh Thalor <mahi6run@gmail.com>, Noah Misch <noah@leadboat.com>
Cc: Álvaro Herrera <alvherre@alvh.no-ip.org>, jian he <jian.universality@gmail.com>, Srinath Reddy <srinath2133@gmail.com>, pgsql-hackers@lists.postgresql.org
Date: 2025-07-21T20:41:03Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add non-text output formats to pg_dumpall
- 763aaa06f034 19 (unreleased) landed
-
Improve pg_dump/pg_dumpall help synopses and terminology
- dec6643487bb 18.0 cited
-
Non text modes for pg_dumpall, correspondingly change pg_restore
- 1495eff7bdb0 18.0 landed
-
Doc: manually break lines in wide UUID examples.
- a6524105d20b 18.0 cited
On 2025-07-17 Th 6:18 AM, Mahendra Singh Thalor wrote >>>>>> --- a/src/bin/pg_dump/pg_restore.c >>>>>> +++ b/src/bin/pg_dump/pg_restore.c >>>>>> +/* >>>>>> + * read_one_statement >>>>>> + * >>>>>> + * This will start reading from passed file pointer using fgetc and read till >>>>>> + * semicolon(sql statement terminator for global.dat file) >>>>>> + * >>>>>> + * EOF is returned if end-of-file input is seen; time to shut down. >>>>> What makes it okay to use this particular subset of SQL lexing? >>>> To support complex syntax, we used this code from another file. >>> I'm hearing that you copied this code from somewhere. Running >>> "git grep 'time to shut down'" suggests you copied it from >>> InteractiveBackend(). Is that right? I do see other similarities between >>> read_one_statement() and InteractiveBackend(). >>> >>> Copying InteractiveBackend() provides negligible assurance that this is the >>> right subset of SQL lexing. Only single-user mode uses InteractiveBackend(). >>> Single-user mode survives mostly as a last resort for recovering from having >>> reached xidStopLimit, is rarely used, and only superusers write queries to it. >> Yes, we copied this from InteractiveBackend to read statements from >> global.dat file. Maybe we should ensure that identifiers with CR or LF are turned into Unicode quoted identifiers, so each SQL statement would always only occupy one line. Or just reject role and tablespace names with CR or LF altogether, just as we do for database names. cheers andrew -- Andrew Dunstan EDB:https://www.enterprisedb.com