| From: | Andrew Dunstan <andrew(at)dunslane(dot)net> |
|---|---|
| To: | Mahendra Singh Thalor <mahi6run(at)gmail(dot)com>, tushar <tushar(dot)ahuja(at)enterprisedb(dot)com> |
| Cc: | jian he <jian(dot)universality(at)gmail(dot)com>, Vaibhav Dalvi <vaibhav(dot)dalvi(at)enterprisedb(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org |
| Subject: | Re: Non-text mode for pg_dumpall |
| Date: | 2026-02-19 20:00:03 |
| Message-ID: | 4022765f-38ee-48a3-b246-615b3f8e1c23@dunslane.net |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On 2026-02-18 We 12:15 AM, Mahendra Singh Thalor wrote:
> On Wed, 28 Jan 2026 at 13:04, tushar <tushar(dot)ahuja(at)enterprisedb(dot)com>
> wrote:
> >
> >
> >
> > On Tue, Jan 27, 2026 at 9:11 PM Mahendra Singh Thalor
> <mahi6run(at)gmail(dot)com> wrote:
> >>
> >> On Fri, 23 Jan 2026 at 19:07, tushar
> <tushar(dot)ahuja(at)enterprisedb(dot)com> wrote:
> >> >
> >> >
> >> >
> >> > On Fri, Jan 23, 2026 at 12:21 PM tushar
> <tushar(dot)ahuja(at)enterprisedb(dot)com> wrote:
> >> >>
> >> >>
> >> >> Thanks Mahendra, a minor observation - The pg_restore output
> shows a double slash in the map.dat path (e.g., abc.tar//map.dat).
> >> >> While it doesn't break the restore, we may want to clean up the
> path joining logic.
> >> >>
> >> >> [edb(at)1a1c15437e7c bin]$ ./pg_restore -Ft -C abc.tar/ -d postgres
> -p 9011 -U ed -v
> >> >> pg_restore: found database "template1
> >> >> " (OID: 1) in file "abc.tar//map.dat"
> >> >> pg_restore: found database "postgres
> >> >> " (OID: 5) in file "abc.tar//map.dat"
> >> >>
> >> >>
> >> >
> >> > Please refer to this scenario where - Objects created under
> template1 and the postgres database by a specific user are failing
> during a cross-cluster restore.
> >> > When restoring to a new cluster as a different superuser,
> pg_restore throws the error: ERROR: role "edb" does not exist.
> >> > It appears the restore is attempting to preserve the original
> ownership of template1 objects even when the target environment lacks
> those specific roles.
> >> >
> >> > Steps to reproduce:
> >> > initdb ( ./initdb -U edb -D data) , start the server , connect to
> postgres and template1 database one by one and create
> >> > this table ( create table test(n int); )
> >> > perform pg_dumpall operation ( ./pg_dumpall -Ft -f abc.tar)
> >> > initdb (./initdb -U xyz) , start the server , create a database (
> create database abc;)
> >> > perform pg_restore operation ( ./pg_restore -Ft -C abc.tar/ -d
> postgres -p 9033 -U xyz)
> >> > --getting an error, table 'test' will be created on 'template1'
> database but failed to create on an another database ( in this case -
> 'abc' database)
> >> >
> >> > regards,
> >>
> >> Hi,
> >> Here I am attaching an updated patch for the review and testing.
> >> Thanks Jian for the reporting rebase issue.
> >>
> >
> > Thanks Mahendra, getting a regression error during the restore
> process after applying this patch.
> >
> > [edb(at)1a1c15437e7c bin]$ ./pg_restore -Ft -C abc1.tar/ -d postgres
> -p 9000
> > pg_restore: error: could not execute query: ERROR: non-standard
> string literals are not supported
> > Command was: SET standard_conforming_strings = off;
> > pg_restore: warning: errors ignored on restore: 1
> >
> > in earlier patches - this was not coming.
> >
> > regards,
> >
>
> Thanks Andrew for some design related feedback.
>
> Thanks Jian for the offline discussions, reviews, testing and delta
> patches.
>
> Thanks Tushar for the detailed testing.
>
> *Brief about this patch:*
> new option to pg_dumpall: --format=d/t/c/p directory/tar/custam/plain
>
> If the user gives a non-text format with pg_dumpall command, then the
> full cluster will be dumped and global objects (roles. tablespaces,
> databases) will be dumped into toc.glo file in custom format with drop
> commands and databases will be dumped into a given archive format one
> by one with oid.tar/oid.dmp/oid files/dir.
> When restoring, if the user gives -g(globals-only) option, then
> creating commands of only global users/tablespaces/databases will be
> restored. (no drop commands will be executed)
> toc.glo will be executed with -e(exit-on-error=false)
> and --transaction-size=0 as some user already created. If the user
> wants to restore a single database, they can restore it by a single
> dump file. For --clean and -g(globals-only), we added some error cases
> so that roles/databases/tablespaces will not be dropped.
> Here, I am attaching an updated patch for the review and testing.
Here's an update after a round of review. Most of the changes are pretty
minor, but it should get the cfbot all green, with a Windows fix in the
tests.
cheers
andrew
--
Andrew Dunstan
EDB:https://www.enterprisedb.com
| Attachment | Content-Type | Size |
|---|---|---|
| v17_19022026-Non-text-modes-for-pg_dumpall-correspondingly-change.patch | text/x-patch | 98.9 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Greg Burd | 2026-02-19 20:32:25 | Re: Expanding HOT updates for expression and partial indexes |
| Previous Message | Nathan Bossart | 2026-02-19 19:54:23 | Re: assume availability of "inline" keyword |