| From: | tushar <tushar(dot)ahuja(at)enterprisedb(dot)com> |
|---|---|
| To: | Mahendra Singh Thalor <mahi6run(at)gmail(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-01-23 06:51:17 |
| Message-ID: | CAC6VRoZbP=-=a+a78RoWcs2L4=4VEDZqJMg+7SyUAcSHATyDAQ@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Sat, Jan 17, 2026 at 1:39 AM Mahendra Singh Thalor <mahi6run(at)gmail(dot)com>
wrote:
> Thanks Tushar for the testing.
>
> On Wed, 7 Jan 2026 at 13:53, tushar <tushar(dot)ahuja(at)enterprisedb(dot)com> wrote:
> >
> >
> >
> > On Tue, Jan 6, 2026 at 11:56 AM Mahendra Singh Thalor <
> mahi6run(at)gmail(dot)com> wrote:
> >>
> >>
> >>
> >>
> >> We have another thread for this. We have patches also. Last year, we
> >> planned to block these databases at creation time.
> >>
> >> >
> >> > It's probably harmless, we connect to the databases further down to
> do actual work. But it's also not nice. The toc.glo seems to have a bunch
> of extraneous entries of type COMMENT and CONNECT. Why is that? As far as
> poible this should have output pretty much identical to a plain pg_dumpall.
> >> >
> >> >
> >> > cheer
> >> >
> >> >
> >> > andrew
> >>
>
> Thanks Andrew for the feedback.
>
> In the attached patch, I fixed some comments. In the next version, I
> will try to make it much identical to a plain pg_dumpall.
>
> >> If we don't dump those comments in non-text format, then the output of
> >> "pg_restore -f filename dump_non_text" will not be the same as the
> >> plain dump of pg_dumpall.
> >>
> >> Here, I am attaching an updated patch for the review and testing.
> >>
> >
> > Hi Mahendra,
> >
> > I found a scenario in which the table is not restored if
> --transaction-size switch is used at the time of pg_restore operation
> >
> > Please refer this scenario:
> > Case A --pg_restore operation with "--transaction-size" against the
> dump (taken using pg_dump) -
> > create a table ( create table t(n int); )
> > perform pg_dump ( ./pg_dump -Ft postgres -f xyz.tar)
> > create a database (create database test;)
> > perform pg_restore using switch "--transaction-size" ( ./pg_restore
> --transaction-size=1 -d test xyz.tar)
> > table is restored into test database
> >
> > Case B --pg_restore operation with "--transaction-size" against the
> dump (taken using pg_dumpall) -
> > create a table ( create table t(n int); )
> > perform pg_dumpall ( ./pg_dumpall -Ft -f abc.tar)
> > create a new cluster, start the server against a different port
> > perform pg_restore using switch "--transaction-size" (./pg_restore -Ft
> --transaction-size=10 -d postgres abc.tar -p 9000 -C)
> > table is not restored
> >
> > if i remove --transaction-size switch then this works.
> >
> > regards,
> >
>
> Fixed.
>
> On Mon, 12 Jan 2026 at 13:39, tushar <tushar(dot)ahuja(at)enterprisedb(dot)com>
> wrote:
> >
> >
> >
> > On Tue, Jan 6, 2026 at 11:56 AM Mahendra Singh Thalor <
> mahi6run(at)gmail(dot)com> wrote:
> >>
> >>
> >> Here, I am attaching an updated patch for the review and testing.
> >>
> >> Note: some of the review comments are still not fixed. I am working on
> >> those and will post an updated patch.
> >>
> > Hi Mahendra,
> > Please refer this scenario - if we are using with "--jobs" switch then
> getting an error at the time of restore
> >
> > Create a table ( create table t(n int); insert into t values (1); )
> > Perform pg_dumpall ( ./pg_dumpall -Fd -f abc1.dr )
> > Create a new cluster, start the server against a different port
> > Perform pg_restore using switch "--jobs 4 " (./pg_restore -j 4 -d
> postgres abc1.dr/ -p 9000 -C )
> >
> > "
> > [edb(at)1a1c15437e7c bin]$ ./pg_restore -j 4 -d postgres abc1.dr/ -p 9000
> -C
> > pg_restore: error: could not execute query: ERROR: role "edb" already
> exists
> > Command was: CREATE ROLE edb;
> > ALTER ROLE edb WITH SUPERUSER INHERIT CREATEROLE CREATEDB LOGIN
> REPLICATION BYPASSRLS;
> >
> >
> > pg_restore: error: could not execute query: ERROR: syntax error at or
> near "\"
> > LINE 1: \connect template1
> > ^
> > Command was: \connect template1
> >
> >
> >
> > pg_restore: error: could not execute query: ERROR: syntax error at or
> near "\"
> > LINE 1: \connect postgres
> > ^
> > Command was: \connect postgres
> >
> >
> >
> > pg_restore: warning: errors ignored on restore: 3
> > [edb(at)1a1c15437e7c bin]$
> > "
> >
> > regards,
>
> Fixed this syntax error but user error is still there for parallel
> mode(for non-parallel, fixed). This will be fixed in the next version.
>
> Here, I am attaching an updated patch for the review and testing.
>
>
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"
regards,
| From | Date | Subject | |
|---|---|---|---|
| Next Message | shveta malik | 2026-01-23 07:02:47 | Re: pg_upgrade: optimize replication slot caught-up check |
| Previous Message | Corey Huinker | 2026-01-23 06:45:38 | Re: Extended Statistics set/restore/clear functions. |