Non-text mode for pg_dumpall

Started by Andrew Dunstanover 1 year ago211 messages
Jump to latest
#1Andrew Dunstan
andrew@dunslane.net

Tom and Nathan opined recently that providing for non-text mode for
pg_dumpall would be a Good Thing (TM). Not having it has been a
long-standing complaint, so I've decided to give it a go.

I think we would need to restrict it to directory mode, at least to
begin with. I would have a toc.dat with a different magic block (say
"PGGLO" instead of "PGDMP") containing the global entries (roles,
tablespaces, databases). Then for each database there would be a
subdirectory (named for its toc entry) with a standard directory mode
dump for that database. These could be generated in parallel (possibly
by pg_dumpall calling pg_dump for each database). pg_restore on
detecting a global type toc.data would restore the globals and then each
of the databases (again possibly in parallel).

I'm sure there are many wrinkles I haven't thought of, but I don't see
any insurmountable obstacles, just a significant amount of code.

Barring the unforeseen my main is to have a preliminary patch by the
September CF.

Following that I would turn my attention to using it in pg_upgrade.

cheers

andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com

#2Nathan Bossart
nathandbossart@gmail.com
In reply to: Andrew Dunstan (#1)
Re: Non-text mode for pg_dumpall

On Mon, Jun 10, 2024 at 08:58:49AM -0400, Andrew Dunstan wrote:

Tom and Nathan opined recently that providing for non-text mode for
pg_dumpall would be a Good Thing (TM). Not having it has been a
long-standing complaint, so I've decided to give it a go.

Thank you!

I think we would need to restrict it to directory mode, at least to begin
with. I would have a toc.dat with a different magic block (say "PGGLO"
instead of "PGDMP") containing the global entries (roles, tablespaces,
databases). Then for each database there would be a subdirectory (named for
its toc entry) with a standard directory mode dump for that database. These
could be generated in parallel (possibly by pg_dumpall calling pg_dump for
each database). pg_restore on detecting a global type toc.data would restore
the globals and then each of the databases (again possibly in parallel).

I'm curious why we couldn't also support the "custom" format.

Following that I would turn my attention to using it in pg_upgrade.

+1

--
nathan

#3Andrew Dunstan
andrew@dunslane.net
In reply to: Nathan Bossart (#2)
Re: Non-text mode for pg_dumpall

On 2024-06-10 Mo 10:14, Nathan Bossart wrote:

On Mon, Jun 10, 2024 at 08:58:49AM -0400, Andrew Dunstan wrote:

Tom and Nathan opined recently that providing for non-text mode for
pg_dumpall would be a Good Thing (TM). Not having it has been a
long-standing complaint, so I've decided to give it a go.

Thank you!

I think we would need to restrict it to directory mode, at least to begin
with. I would have a toc.dat with a different magic block (say "PGGLO"
instead of "PGDMP") containing the global entries (roles, tablespaces,
databases). Then for each database there would be a subdirectory (named for
its toc entry) with a standard directory mode dump for that database. These
could be generated in parallel (possibly by pg_dumpall calling pg_dump for
each database). pg_restore on detecting a global type toc.data would restore
the globals and then each of the databases (again possibly in parallel).

I'm curious why we couldn't also support the "custom" format.

We could, but the housekeeping would be a bit harder. We'd need to keep
pointers to the offsets of the per-database TOCs (I don't want to have a
single per-cluster TOC). And we can't produce it in parallel, so I'd
rather start with something we can produce in parallel.

cheers

andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com

#4Magnus Hagander
magnus@hagander.net
In reply to: Nathan Bossart (#2)
Re: Non-text mode for pg_dumpall

On Mon, Jun 10, 2024 at 4:14 PM Nathan Bossart <nathandbossart@gmail.com>
wrote:

On Mon, Jun 10, 2024 at 08:58:49AM -0400, Andrew Dunstan wrote:

Tom and Nathan opined recently that providing for non-text mode for
pg_dumpall would be a Good Thing (TM). Not having it has been a
long-standing complaint, so I've decided to give it a go.

Thank you!

Indeed, this has been quite annoying!

I think we would need to restrict it to directory mode, at least to begin

with. I would have a toc.dat with a different magic block (say "PGGLO"
instead of "PGDMP") containing the global entries (roles, tablespaces,
databases). Then for each database there would be a subdirectory (named

for

its toc entry) with a standard directory mode dump for that database.

These

could be generated in parallel (possibly by pg_dumpall calling pg_dump

for

each database). pg_restore on detecting a global type toc.data would

restore

the globals and then each of the databases (again possibly in parallel).

I'm curious why we couldn't also support the "custom" format.

Or maybe even a combo - a directory of custom format files? Plus that one
special file being globals? I'd say that's what most use cases I've seen
would prefer.

--
Magnus Hagander
Me: https://www.hagander.net/ <http://www.hagander.net/&gt;
Work: https://www.redpill-linpro.com/ <http://www.redpill-linpro.com/&gt;

#5Nathan Bossart
nathandbossart@gmail.com
In reply to: Andrew Dunstan (#3)
Re: Non-text mode for pg_dumpall

On Mon, Jun 10, 2024 at 10:51:42AM -0400, Andrew Dunstan wrote:

On 2024-06-10 Mo 10:14, Nathan Bossart wrote:

I'm curious why we couldn't also support the "custom" format.

We could, but the housekeeping would be a bit harder. We'd need to keep
pointers to the offsets of the per-database TOCs (I don't want to have a
single per-cluster TOC). And we can't produce it in parallel, so I'd rather
start with something we can produce in parallel.

Got it.

--
nathan

#6Nathan Bossart
nathandbossart@gmail.com
In reply to: Magnus Hagander (#4)
Re: Non-text mode for pg_dumpall

On Mon, Jun 10, 2024 at 04:52:06PM +0200, Magnus Hagander wrote:

On Mon, Jun 10, 2024 at 4:14 PM Nathan Bossart <nathandbossart@gmail.com>
wrote:

I'm curious why we couldn't also support the "custom" format.

Or maybe even a combo - a directory of custom format files? Plus that one
special file being globals? I'd say that's what most use cases I've seen
would prefer.

Is there a particular advantage to that approach as opposed to just using
"directory" mode for everything? I know pg_upgrade uses "custom" mode for
each of the databases, so a combo approach would be a closer match to the
existing behavior, but that doesn't strike me as an especially strong
reason to keep doing it that way.

--
nathan

#7Magnus Hagander
magnus@hagander.net
In reply to: Nathan Bossart (#6)
Re: Non-text mode for pg_dumpall

On Mon, Jun 10, 2024 at 5:03 PM Nathan Bossart <nathandbossart@gmail.com>
wrote:

On Mon, Jun 10, 2024 at 04:52:06PM +0200, Magnus Hagander wrote:

On Mon, Jun 10, 2024 at 4:14 PM Nathan Bossart <nathandbossart@gmail.com

wrote:

I'm curious why we couldn't also support the "custom" format.

Or maybe even a combo - a directory of custom format files? Plus that one
special file being globals? I'd say that's what most use cases I've seen
would prefer.

Is there a particular advantage to that approach as opposed to just using
"directory" mode for everything? I know pg_upgrade uses "custom" mode for
each of the databases, so a combo approach would be a closer match to the
existing behavior, but that doesn't strike me as an especially strong
reason to keep doing it that way.

A gazillion files to deal with? Much easier to work with individual custom
files if you're moving databases around and things like that.
Much easier to monitor eg sizes/dates if you're using it for backups.

It's not things that are make-it-or-break-it or anything, but there are
some smaller things that definitely can be useful.

--
Magnus Hagander
Me: https://www.hagander.net/ <http://www.hagander.net/&gt;
Work: https://www.redpill-linpro.com/ <http://www.redpill-linpro.com/&gt;

#8Nathan Bossart
nathandbossart@gmail.com
In reply to: Magnus Hagander (#7)
Re: Non-text mode for pg_dumpall

On Mon, Jun 10, 2024 at 05:45:19PM +0200, Magnus Hagander wrote:

On Mon, Jun 10, 2024 at 5:03 PM Nathan Bossart <nathandbossart@gmail.com>
wrote:

Is there a particular advantage to that approach as opposed to just using
"directory" mode for everything? I know pg_upgrade uses "custom" mode for
each of the databases, so a combo approach would be a closer match to the
existing behavior, but that doesn't strike me as an especially strong
reason to keep doing it that way.

A gazillion files to deal with? Much easier to work with individual custom
files if you're moving databases around and things like that.
Much easier to monitor eg sizes/dates if you're using it for backups.

It's not things that are make-it-or-break-it or anything, but there are
some smaller things that definitely can be useful.

Makes sense, thanks for elaborating.

--
nathan

#9Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#7)
Re: Non-text mode for pg_dumpall

Magnus Hagander <magnus@hagander.net> writes:

On Mon, Jun 10, 2024 at 5:03 PM Nathan Bossart <nathandbossart@gmail.com>
wrote:

Is there a particular advantage to that approach as opposed to just using
"directory" mode for everything?

A gazillion files to deal with? Much easier to work with individual custom
files if you're moving databases around and things like that.
Much easier to monitor eg sizes/dates if you're using it for backups.

You can always tar up the directory tree after-the-fact if you want
one file. Sure, that step's not parallelized, but I think we'd need
some non-parallelized copying to create such a file anyway.

regards, tom lane

#10Andrew Dunstan
andrew@dunslane.net
In reply to: Tom Lane (#9)
Re: Non-text mode for pg_dumpall

On 2024-06-10 Mo 12:21, Tom Lane wrote:

Magnus Hagander <magnus@hagander.net> writes:

On Mon, Jun 10, 2024 at 5:03 PM Nathan Bossart <nathandbossart@gmail.com>
wrote:

Is there a particular advantage to that approach as opposed to just using
"directory" mode for everything?

A gazillion files to deal with? Much easier to work with individual custom
files if you're moving databases around and things like that.
Much easier to monitor eg sizes/dates if you're using it for backups.

You can always tar up the directory tree after-the-fact if you want
one file. Sure, that step's not parallelized, but I think we'd need
some non-parallelized copying to create such a file anyway.

Yeah.

I think I can probably allow for Magnus' suggestion fairly easily, but
if I have to choose I'm going to go for the format that can be produced
with the maximum parallelism.

cheers

andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com

#11Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#9)
Re: Non-text mode for pg_dumpall

On Mon, Jun 10, 2024 at 6:21 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:

Magnus Hagander <magnus@hagander.net> writes:

On Mon, Jun 10, 2024 at 5:03 PM Nathan Bossart <nathandbossart@gmail.com

wrote:

Is there a particular advantage to that approach as opposed to just

using

"directory" mode for everything?

A gazillion files to deal with? Much easier to work with individual

custom

files if you're moving databases around and things like that.
Much easier to monitor eg sizes/dates if you're using it for backups.

You can always tar up the directory tree after-the-fact if you want
one file. Sure, that step's not parallelized, but I think we'd need
some non-parallelized copying to create such a file anyway.

That would require double the disk space.

But you can also just run pg_dump manually on each database and a
pg_dumpall -g like people are doing today -- I thought this whole thing was
about making it more convenient :)

--
Magnus Hagander
Me: https://www.hagander.net/ <http://www.hagander.net/&gt;
Work: https://www.redpill-linpro.com/ <http://www.redpill-linpro.com/&gt;

#12Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Magnus Hagander (#11)
Re: Non-text mode for pg_dumpall

Hi all,
With the help of Andrew and Dilip Kumar, I made a poc patch to dump all the
databases in archive format and then restore them using pg_restore.

Brief about the patch:
new option to pg_dumpall:
-F, --format=d|p (directory|plain) output file format (directory, plain
text (default))

Ex: ./pg_dumpall --format=directory --file=dumpDirName

dumps are as:
global.dat ::: global sql commands in simple plain format
map.dat. ::: dboid dbname ---entries for all databases in simple text form
databases. :::
subdir dboid1 -> toc.dat and data files in archive format
subdir dboid2. -> toc.dat and data files in archive format
etc
---------------------------------------------------------------------------

new options to pg_restore:
-g, --globals-only restore only global objects, no databases
--exclude-database=PATTERN exclude databases whose name matches PATTERN

When we give -g/--globals-only option, then only restore globals, no db
restoring.

*Design*:
When --format=directory is specified and there is no toc.dat file in the
main directory, then check
for global.dat and map.dat to restore all databases. If both files exist in
a directory,
then first restore all globals from global.dat and then restore all
databases one by one
from map.dat list.
While restoring, skip the databases that are given with exclude-database.

---------------------------------------------------------------------------
NOTE:
if needed, restore single db by particular subdir

Ex: ./pg_restore --format=directory -d postgres dumpDirName/databases/5
-- here, 5 is the dboid of postgres db
-- to get dboid, refer dbname in map.file
--------------------------------------------------------------------------

Please let me know feedback for the attached patch.

On Tue, 11 Jun 2024 at 01:06, Magnus Hagander <magnus@hagander.net> wrote:

On Mon, Jun 10, 2024 at 6:21 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:

Magnus Hagander <magnus@hagander.net> writes:

On Mon, Jun 10, 2024 at 5:03 PM Nathan Bossart <

nathandbossart@gmail.com>

wrote:

Is there a particular advantage to that approach as opposed to just

using

"directory" mode for everything?

A gazillion files to deal with? Much easier to work with individual

custom

files if you're moving databases around and things like that.
Much easier to monitor eg sizes/dates if you're using it for backups.

You can always tar up the directory tree after-the-fact if you want
one file. Sure, that step's not parallelized, but I think we'd need
some non-parallelized copying to create such a file anyway.

That would require double the disk space.

But you can also just run pg_dump manually on each database and a
pg_dumpall -g like people are doing today -- I thought this whole thing was
about making it more convenient :)

--
Magnus Hagander
Me: https://www.hagander.net/ <http://www.hagander.net/&gt;
Work: https://www.redpill-linpro.com/ <http://www.redpill-linpro.com/&gt;

--
Thanks and Regards
Mahendra Singh Thalor
EnterpriseDB: http://www.enterprisedb.com

Attachments:

v01_poc_pg_dumpall_with_directory_31dec.patchapplication/octet-stream; name=v01_poc_pg_dumpall_with_directory_31dec.patchDownload+739-34
#13Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Mahendra Singh Thalor (#12)
Re: Non-text mode for pg_dumpall

Here, I am attaching an updated patch. I fixed some bugs of v01 patch and
did some code cleanup also.

TODO WIP 1: after excluding databases, we have paths of all the databases
that are needed to
restore so we can launch parallel workers for each database. I am studying
for this part.

TODO WIP 2: exclude-database=NAME, for pg_restore, I am using NAME as of
now, I will try to make it PATTERN. PATTERN
should be matched from map.dat file.

Please have a look over the patch and let me know feedback.

On Tue, 31 Dec 2024 at 23:53, Mahendra Singh Thalor <mahi6run@gmail.com>
wrote:

Hi all,
With the help of Andrew and Dilip Kumar, I made a poc patch to dump all
the databases in archive format and then restore them using pg_restore.

Brief about the patch:
new option to pg_dumpall:
-F, --format=d|p (directory|plain) output file format (directory, plain
text (default))

Ex: ./pg_dumpall --format=directory --file=dumpDirName

dumps are as:
global.dat ::: global sql commands in simple plain format
map.dat. ::: dboid dbname ---entries for all databases in simple text
form
databases. :::
subdir dboid1 -> toc.dat and data files in archive format
subdir dboid2. -> toc.dat and data files in archive format
etc
---------------------------------------------------------------------------

new options to pg_restore:
-g, --globals-only restore only global objects, no databases
--exclude-database=PATTERN exclude databases whose name matches PATTERN

When we give -g/--globals-only option, then only restore globals, no db
restoring.

*Design*:
When --format=directory is specified and there is no toc.dat file in the
main directory, then check
for global.dat and map.dat to restore all databases. If both files exist
in a directory,
then first restore all globals from global.dat and then restore all
databases one by one
from map.dat list.
While restoring, skip the databases that are given with exclude-database.

---------------------------------------------------------------------------
NOTE:
if needed, restore single db by particular subdir

Ex: ./pg_restore --format=directory -d postgres dumpDirName/databases/5
-- here, 5 is the dboid of postgres db
-- to get dboid, refer dbname in map.file
--------------------------------------------------------------------------

Please let me know feedback for the attached patch.

On Tue, 11 Jun 2024 at 01:06, Magnus Hagander <magnus@hagander.net> wrote:

On Mon, Jun 10, 2024 at 6:21 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:

Magnus Hagander <magnus@hagander.net> writes:

On Mon, Jun 10, 2024 at 5:03 PM Nathan Bossart <

nathandbossart@gmail.com>

wrote:

Is there a particular advantage to that approach as opposed to just

using

"directory" mode for everything?

A gazillion files to deal with? Much easier to work with individual

custom

files if you're moving databases around and things like that.
Much easier to monitor eg sizes/dates if you're using it for backups.

You can always tar up the directory tree after-the-fact if you want
one file. Sure, that step's not parallelized, but I think we'd need
some non-parallelized copying to create such a file anyway.

That would require double the disk space.

But you can also just run pg_dump manually on each database and a
pg_dumpall -g like people are doing today -- I thought this whole thing was
about making it more convenient :)

--
Magnus Hagander
Me: https://www.hagander.net/ <http://www.hagander.net/&gt;
Work: https://www.redpill-linpro.com/ <http://www.redpill-linpro.com/&gt;

--
Thanks and Regards
Mahendra Singh Thalor
EnterpriseDB: http://www.enterprisedb.com

--
Thanks and Regards
Mahendra Singh Thalor
EnterpriseDB: http://www.enterprisedb.com

Attachments:

v02_poc_pg_dumpall_with_directory_2nd_jan.patchapplication/octet-stream; name=v02_poc_pg_dumpall_with_directory_2nd_jan.patchDownload+829-34
#14Nathan Bossart
nathandbossart@gmail.com
In reply to: Mahendra Singh Thalor (#13)
Re: Non-text mode for pg_dumpall

On Thu, Jan 02, 2025 at 02:05:13AM +0530, Mahendra Singh Thalor wrote:

Here, I am attaching an updated patch. I fixed some bugs of v01 patch and
did some code cleanup also.

Thank you for picking this up! I started to review it, but the
documentation changes didn't build, and a few tests in check-world are
failing. Would you mind resolving those issues? Also, if you haven't
already, please add an entry to the next commitfest [0]https://commitfest.postgresql.org to ensure that 1)
this feature is tracked and 2) the automated tests will run.

+	if (dbfile)
+	{
+		printfPQExpBuffer(&cmd, "\"%s\" %s %s", pg_dump_bin,
+						  dbfile, create_opts);
+		appendPQExpBufferStr(&cmd, " -F d ");
+	}

Have you given any thought to allowing a directory of custom format files,
as discussed upthread [1]/messages/by-id/CABUevExoQ26jo+aQ9QZq+UMA1aD6gfpm9xBnh_t5e0DhaCeRYA@mail.gmail.com? Perhaps that is better handled as a follow-up
patch, but it'd be good to understand the plan, anyway.

[0]: https://commitfest.postgresql.org
[1]: /messages/by-id/CABUevExoQ26jo+aQ9QZq+UMA1aD6gfpm9xBnh_t5e0DhaCeRYA@mail.gmail.com

--
nathan

#15Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Nathan Bossart (#14)
Re: Non-text mode for pg_dumpall

On Mon, 6 Jan 2025 at 23:05, Nathan Bossart <nathandbossart@gmail.com>
wrote:

On Thu, Jan 02, 2025 at 02:05:13AM +0530, Mahendra Singh Thalor wrote:

Here, I am attaching an updated patch. I fixed some bugs of v01 patch

and

did some code cleanup also.

Thank you for picking this up! I started to review it, but the
documentation changes didn't build, and a few tests in check-world are
failing. Would you mind resolving those issues? Also, if you haven't
already, please add an entry to the next commitfest [0] to ensure that 1)
this feature is tracked and 2) the automated tests will run.

Thanks Nathan for the quick response.

I fixed bugs of documentation changes and check-world in the latest patch.
Now docs are building and check-world is passing.

I added entry into commitfest for this patch.[0]
<https://commitfest.postgresql.org/52/5495/&gt;

+       if (dbfile)
+       {
+               printfPQExpBuffer(&cmd, "\"%s\" %s %s", pg_dump_bin,
+                                                 dbfile, create_opts);
+               appendPQExpBufferStr(&cmd, " -F d ");
+       }

Have you given any thought to allowing a directory of custom format files,
as discussed upthread [1]? Perhaps that is better handled as a follow-up
patch, but it'd be good to understand the plan, anyway.

I will make these changes and will test. I will update my findings after
doing some testing.

Apart from these bugs, I added code to handle --exclude-database= PATTERN.
Earlier I was using NAME only to skip databases for restore.

*TODO: .pl test cases for new added options.*

Here, I am attaching an updated patch for review and feedback.

[0] https://commitfest.postgresql.org
[1]

/messages/by-id/CABUevExoQ26jo+aQ9QZq+UMA1aD6gfpm9xBnh_t5e0DhaCeRYA@mail.gmail.com

--
nathan

--
Thanks and Regards
Mahendra Singh Thalor
EnterpriseDB: http://www.enterprisedb.com

Attachments:

v03-pg_dumpall-with-directory-format-and-restore-08_jan.patchapplication/octet-stream; name=v03-pg_dumpall-with-directory-format-and-restore-08_jan.patchDownload+945-34
#16Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Mahendra Singh Thalor (#15)
Re: Non-text mode for pg_dumpall

Hi all,

On Wed, 8 Jan 2025 at 00:34, Mahendra Singh Thalor <mahi6run@gmail.com>
wrote:

On Mon, 6 Jan 2025 at 23:05, Nathan Bossart <nathandbossart@gmail.com>

wrote:

On Thu, Jan 02, 2025 at 02:05:13AM +0530, Mahendra Singh Thalor wrote:

Here, I am attaching an updated patch. I fixed some bugs of v01 patch

and

did some code cleanup also.

Thank you for picking this up! I started to review it, but the
documentation changes didn't build, and a few tests in check-world are
failing. Would you mind resolving those issues? Also, if you haven't
already, please add an entry to the next commitfest [0] to ensure that

1)

this feature is tracked and 2) the automated tests will run.

Thanks Nathan for the quick response.

I fixed bugs of documentation changes and check-world in the latest

patch. Now docs are building and check-world is passing.

I added entry into commitfest for this patch.[0]

+       if (dbfile)
+       {
+               printfPQExpBuffer(&cmd, "\"%s\" %s %s", pg_dump_bin,
+                                                 dbfile, create_opts);
+               appendPQExpBufferStr(&cmd, " -F d ");
+       }

Have you given any thought to allowing a directory of custom format

files,

as discussed upthread [1]? Perhaps that is better handled as a

follow-up

patch, but it'd be good to understand the plan, anyway.

I will make these changes and will test. I will update my findings after

doing some testing.

In the latest patch, I added dump and restoring for
directory/custom/tar/plain formats. Please consider this patch for review
and testing.

*Design*:
When we give --format=d|c|t then we are dumping all global sql commands in
global.dat in plain sql format and we are making a map.dat file with dbname
and dboid. For each database, we are making separate subdirectory with
dboid under databases directory and dumping as per archive format(d|c|t).
While restoring, first we are restoring all global sql commands from
global.dat and then we are restoring one by one all databases. As we are
supporting --exclude-database with pg_dumpall, the same we are supporting
with pg_restore also to skip restoring on some specified database patterns.
If we want to restore a single database, then we can specided particular
subdirectory from the databases folder. To get file name, we refer
dbname into map.file.

*TODO*: Now I will work on test cases for these new added options to the
pg_dumpall and pg_restore.

Here, I am attaching the v04 patch for testing and review.

Apart from these bugs, I added code to handle --exclude-database=

PATTERN. Earlier I was using NAME only to skip databases for restore.

TODO: .pl test cases for new added options.

Here, I am attaching an updated patch for review and feedback.

[0] https://commitfest.postgresql.org
[1]

/messages/by-id/CABUevExoQ26jo+aQ9QZq+UMA1aD6gfpm9xBnh_t5e0DhaCeRYA@mail.gmail.com

--
nathan

--
Thanks and Regards
Mahendra Singh Thalor
EnterpriseDB: http://www.enterprisedb.com

--
Thanks and Regards
Mahendra Singh Thalor
EnterpriseDB: http://www.enterprisedb.com

Attachments:

v04-pg_dumpall-with-directory-format-and-restore-08_jan.patchapplication/octet-stream; name=v04-pg_dumpall-with-directory-format-and-restore-08_jan.patchDownload+214-142
#17Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Mahendra Singh Thalor (#16)
Re: Non-text mode for pg_dumpall

On Wed, 8 Jan 2025 at 20:07, Mahendra Singh Thalor <mahi6run@gmail.com> wrote:

Hi all,

On Wed, 8 Jan 2025 at 00:34, Mahendra Singh Thalor <mahi6run@gmail.com> wrote:

On Mon, 6 Jan 2025 at 23:05, Nathan Bossart <nathandbossart@gmail.com> wrote:

On Thu, Jan 02, 2025 at 02:05:13AM +0530, Mahendra Singh Thalor wrote:

Here, I am attaching an updated patch. I fixed some bugs of v01 patch and
did some code cleanup also.

Thank you for picking this up! I started to review it, but the
documentation changes didn't build, and a few tests in check-world are
failing. Would you mind resolving those issues? Also, if you haven't
already, please add an entry to the next commitfest [0] to ensure that 1)
this feature is tracked and 2) the automated tests will run.

Thanks Nathan for the quick response.

I fixed bugs of documentation changes and check-world in the latest patch. Now docs are building and check-world is passing.

I added entry into commitfest for this patch.[0]

+       if (dbfile)
+       {
+               printfPQExpBuffer(&cmd, "\"%s\" %s %s", pg_dump_bin,
+                                                 dbfile, create_opts);
+               appendPQExpBufferStr(&cmd, " -F d ");
+       }

Have you given any thought to allowing a directory of custom format files,
as discussed upthread [1]? Perhaps that is better handled as a follow-up
patch, but it'd be good to understand the plan, anyway.

I will make these changes and will test. I will update my findings after doing some testing.

In the latest patch, I added dump and restoring for directory/custom/tar/plain formats. Please consider this patch for review and testing.

Design:
When we give --format=d|c|t then we are dumping all global sql commands in global.dat in plain sql format and we are making a map.dat file with dbname and dboid. For each database, we are making separate subdirectory with dboid under databases directory and dumping as per archive format(d|c|t).
While restoring, first we are restoring all global sql commands from global.dat and then we are restoring one by one all databases. As we are supporting --exclude-database with pg_dumpall, the same we are supporting with pg_restore also to skip restoring on some specified database patterns.
If we want to restore a single database, then we can specided particular subdirectory from the databases folder. To get file name, we refer dbname into map.file.

TODO: Now I will work on test cases for these new added options to the pg_dumpall and pg_restore.

Here, I am attaching the v04 patch for testing and review.

Sorry. My mistake.
v04 was the delta patch on the top of v03.

Here, I am attaching the v05 patch for testing and review.

Apart from these bugs, I added code to handle --exclude-database= PATTERN. Earlier I was using NAME only to skip databases for restore.

TODO: .pl test cases for new added options.

Here, I am attaching an updated patch for review and feedback.

[0] https://commitfest.postgresql.org
[1] /messages/by-id/CABUevExoQ26jo+aQ9QZq+UMA1aD6gfpm9xBnh_t5e0DhaCeRYA@mail.gmail.com

--
nathan

--
Thanks and Regards
Mahendra Singh Thalor
EnterpriseDB: http://www.enterprisedb.com

--
Thanks and Regards
Mahendra Singh Thalor
EnterpriseDB: http://www.enterprisedb.com

--
Thanks and Regards
Mahendra Singh Thalor
EnterpriseDB: http://www.enterprisedb.com

Attachments:

v05_pg_dumpall-with-directory-tar-custom-format-08-jan.patchapplication/octet-stream; name=v05_pg_dumpall-with-directory-tar-custom-format-08-jan.patchDownload+1020-32
#18Guillaume Lelarge
guillaume@lelarge.info
In reply to: Mahendra Singh Thalor (#17)
Re: Non-text mode for pg_dumpall

Hi,

Le mer. 8 janv. 2025 à 17:41, Mahendra Singh Thalor <mahi6run@gmail.com> a
écrit :

On Wed, 8 Jan 2025 at 20:07, Mahendra Singh Thalor <mahi6run@gmail.com>
wrote:

Hi all,

On Wed, 8 Jan 2025 at 00:34, Mahendra Singh Thalor <mahi6run@gmail.com>

wrote:

On Mon, 6 Jan 2025 at 23:05, Nathan Bossart <nathandbossart@gmail.com>

wrote:

On Thu, Jan 02, 2025 at 02:05:13AM +0530, Mahendra Singh Thalor

wrote:

Here, I am attaching an updated patch. I fixed some bugs of v01

patch and

did some code cleanup also.

Thank you for picking this up! I started to review it, but the
documentation changes didn't build, and a few tests in check-world

are

failing. Would you mind resolving those issues? Also, if you

haven't

already, please add an entry to the next commitfest [0] to ensure

that 1)

this feature is tracked and 2) the automated tests will run.

Thanks Nathan for the quick response.

I fixed bugs of documentation changes and check-world in the latest

patch. Now docs are building and check-world is passing.

I added entry into commitfest for this patch.[0]

+       if (dbfile)
+       {
+               printfPQExpBuffer(&cmd, "\"%s\" %s %s", pg_dump_bin,
+                                                 dbfile,

create_opts);

+               appendPQExpBufferStr(&cmd, " -F d ");
+       }

Have you given any thought to allowing a directory of custom format

files,

as discussed upthread [1]? Perhaps that is better handled as a

follow-up

patch, but it'd be good to understand the plan, anyway.

I will make these changes and will test. I will update my findings

after doing some testing.

In the latest patch, I added dump and restoring for

directory/custom/tar/plain formats. Please consider this patch for review
and testing.

Design:
When we give --format=d|c|t then we are dumping all global sql commands

in global.dat in plain sql format and we are making a map.dat file with
dbname and dboid. For each database, we are making separate subdirectory
with dboid under databases directory and dumping as per archive
format(d|c|t).

While restoring, first we are restoring all global sql commands from

global.dat and then we are restoring one by one all databases. As we are
supporting --exclude-database with pg_dumpall, the same we are supporting
with pg_restore also to skip restoring on some specified database patterns.

If we want to restore a single database, then we can specided particular

subdirectory from the databases folder. To get file name, we refer dbname
into map.file.

TODO: Now I will work on test cases for these new added options to the

pg_dumpall and pg_restore.

Here, I am attaching the v04 patch for testing and review.

Sorry. My mistake.
v04 was the delta patch on the top of v03.

Here, I am attaching the v05 patch for testing and review.

Just FWIW, I did a quick test tonight. It applies cleanly, compiles OK. I
did a dump:

$ pg_dumpall -Fd -f dir

and then a restore (after dropping the databases I had):

$ pg_restore -Cd postgres -v dir

It worked really well. That's great.

Quick thing to fix: you've got this error message:
pg_restore: error: -d/--dbanme should be given when using archive dump of
pg_dumpall

I guess it is --dbname, rather than --dbanme.

Of course, it needs much more testing, but this feature would be great to
have. Thanks for working on this!

--
Guillaume.

#19Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Guillaume Lelarge (#18)
Re: Non-text mode for pg_dumpall

On Thu, 9 Jan 2025 at 02:30, Guillaume Lelarge <guillaume@lelarge.info> wrote:

Hi,

Le mer. 8 janv. 2025 à 17:41, Mahendra Singh Thalor <mahi6run@gmail.com> a écrit :

On Wed, 8 Jan 2025 at 20:07, Mahendra Singh Thalor <mahi6run@gmail.com> wrote:

Hi all,

On Wed, 8 Jan 2025 at 00:34, Mahendra Singh Thalor <mahi6run@gmail.com> wrote:

On Mon, 6 Jan 2025 at 23:05, Nathan Bossart <nathandbossart@gmail.com> wrote:

On Thu, Jan 02, 2025 at 02:05:13AM +0530, Mahendra Singh Thalor wrote:

Here, I am attaching an updated patch. I fixed some bugs of v01 patch and
did some code cleanup also.

Thank you for picking this up! I started to review it, but the
documentation changes didn't build, and a few tests in check-world are
failing. Would you mind resolving those issues? Also, if you haven't
already, please add an entry to the next commitfest [0] to ensure that 1)
this feature is tracked and 2) the automated tests will run.

Thanks Nathan for the quick response.

I fixed bugs of documentation changes and check-world in the latest patch. Now docs are building and check-world is passing.

I added entry into commitfest for this patch.[0]

+       if (dbfile)
+       {
+               printfPQExpBuffer(&cmd, "\"%s\" %s %s", pg_dump_bin,
+                                                 dbfile, create_opts);
+               appendPQExpBufferStr(&cmd, " -F d ");
+       }

Have you given any thought to allowing a directory of custom format files,
as discussed upthread [1]? Perhaps that is better handled as a follow-up
patch, but it'd be good to understand the plan, anyway.

I will make these changes and will test. I will update my findings after doing some testing.

In the latest patch, I added dump and restoring for directory/custom/tar/plain formats. Please consider this patch for review and testing.

Design:
When we give --format=d|c|t then we are dumping all global sql commands in global.dat in plain sql format and we are making a map.dat file with dbname and dboid. For each database, we are making separate subdirectory with dboid under databases directory and dumping as per archive format(d|c|t).
While restoring, first we are restoring all global sql commands from global.dat and then we are restoring one by one all databases. As we are supporting --exclude-database with pg_dumpall, the same we are supporting with pg_restore also to skip restoring on some specified database patterns.
If we want to restore a single database, then we can specided particular subdirectory from the databases folder. To get file name, we refer dbname into map.file.

TODO: Now I will work on test cases for these new added options to the pg_dumpall and pg_restore.

Here, I am attaching the v04 patch for testing and review.

Sorry. My mistake.
v04 was the delta patch on the top of v03.

Here, I am attaching the v05 patch for testing and review.

Just FWIW, I did a quick test tonight. It applies cleanly, compiles OK. I did a dump:

Thanks for testing and review.

$ pg_dumpall -Fd -f dir

and then a restore (after dropping the databases I had):

$ pg_restore -Cd postgres -v dir

It worked really well. That's great.

Quick thing to fix: you've got this error message:
pg_restore: error: -d/--dbanme should be given when using archive dump of pg_dumpall

I guess it is --dbname, rather than --dbanme.

Fixed.

Of course, it needs much more testing, but this feature would be great to have. Thanks for working on this!

Apart from above typo, I fixed some review comments those I received
from Andrew in offline discussion. Thanks Andrew for the quick review.

Here, I am attaching an updated patch for review and testing.

--
Thanks and Regards
Mahendra Singh Thalor
EnterpriseDB: http://www.enterprisedb.com

Attachments:

v06_pg_dumpall-with-directory-tar-custom-format-08-jan.patchapplication/octet-stream; name=v06_pg_dumpall-with-directory-tar-custom-format-08-jan.patchDownload+1124-46
#20Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Mahendra Singh Thalor (#19)
Re: Non-text mode for pg_dumpall

On Thu, 9 Jan 2025 at 08:11, Mahendra Singh Thalor <mahi6run@gmail.com>
wrote:

On Thu, 9 Jan 2025 at 02:30, Guillaume Lelarge <guillaume@lelarge.info>

wrote:

Hi,

Le mer. 8 janv. 2025 à 17:41, Mahendra Singh Thalor <mahi6run@gmail.com>

a écrit :

On Wed, 8 Jan 2025 at 20:07, Mahendra Singh Thalor <mahi6run@gmail.com>

wrote:

Hi all,

On Wed, 8 Jan 2025 at 00:34, Mahendra Singh Thalor <

mahi6run@gmail.com> wrote:

On Mon, 6 Jan 2025 at 23:05, Nathan Bossart <

nathandbossart@gmail.com> wrote:

On Thu, Jan 02, 2025 at 02:05:13AM +0530, Mahendra Singh Thalor

wrote:

Here, I am attaching an updated patch. I fixed some bugs of

v01 patch and

did some code cleanup also.

Thank you for picking this up! I started to review it, but the
documentation changes didn't build, and a few tests in

check-world are

failing. Would you mind resolving those issues? Also, if you

haven't

already, please add an entry to the next commitfest [0] to

ensure that 1)

this feature is tracked and 2) the automated tests will run.

Thanks Nathan for the quick response.

I fixed bugs of documentation changes and check-world in the

latest patch. Now docs are building and check-world is passing.

I added entry into commitfest for this patch.[0]

+       if (dbfile)
+       {
+               printfPQExpBuffer(&cmd, "\"%s\" %s %s",

pg_dump_bin,

+ dbfile,

create_opts);

+               appendPQExpBufferStr(&cmd, " -F d ");
+       }

Have you given any thought to allowing a directory of custom

format files,

as discussed upthread [1]? Perhaps that is better handled as a

follow-up

patch, but it'd be good to understand the plan, anyway.

I will make these changes and will test. I will update my findings

after doing some testing.

In the latest patch, I added dump and restoring for

directory/custom/tar/plain formats. Please consider this patch for review
and testing.

Design:
When we give --format=d|c|t then we are dumping all global sql

commands in global.dat in plain sql format and we are making a map.dat file
with dbname and dboid. For each database, we are making separate
subdirectory with dboid under databases directory and dumping as per
archive format(d|c|t).

While restoring, first we are restoring all global sql commands from

global.dat and then we are restoring one by one all databases. As we are
supporting --exclude-database with pg_dumpall, the same we are supporting
with pg_restore also to skip restoring on some specified database patterns.

If we want to restore a single database, then we can specided

particular subdirectory from the databases folder. To get file name, we
refer dbname into map.file.

TODO: Now I will work on test cases for these new added options to

the pg_dumpall and pg_restore.

Here, I am attaching the v04 patch for testing and review.

Sorry. My mistake.
v04 was the delta patch on the top of v03.

Here, I am attaching the v05 patch for testing and review.

Just FWIW, I did a quick test tonight. It applies cleanly, compiles OK.

I did a dump:

Thanks for testing and review.

$ pg_dumpall -Fd -f dir

and then a restore (after dropping the databases I had):

$ pg_restore -Cd postgres -v dir

It worked really well. That's great.

Quick thing to fix: you've got this error message:
pg_restore: error: -d/--dbanme should be given when using archive dump

of pg_dumpall

I guess it is --dbname, rather than --dbanme.

Fixed.

Of course, it needs much more testing, but this feature would be great

to have. Thanks for working on this!

Apart from above typo, I fixed some review comments those I received
from Andrew in offline discussion. Thanks Andrew for the quick review.

Here, I am attaching an updated patch for review and testing.

Hi all,

Based on some testing(dump was shared by Andrew, Thanks Andrew), I fixed
some more bugs in the attached patch.
There are some open points for this patch. I will put those points in
follow-up patches also.

*Point 1*: With pg_dumpall, we have option --exclude-database=PATTERN, and
there we are validating this PATTERN by server because
we have connection but in pg_restore, we don't have some db connection in
some case so how to handle these patterns? or should we use
only NAMES for --exclude-database ?

*Point 2*:
For each database, we are registering entry to on_exit_nicely array due AH
entry but max size of array is MAX_ON_EXIT_NICELY=20,
so after 20 db restoring, we are getting fatal so either my code needs to
reset this array or do we need to increase array size?

Here, I am attaching an updated patch for review and testing.

--
Thanks and Regards
Mahendra Singh Thalor
EnterpriseDB: http://www.enterprisedb.com

Attachments:

v07_pg_dumpall-with-directory-tar-custom-format-08-jan.patchapplication/octet-stream; name=v07_pg_dumpall-with-directory-tar-custom-format-08-jan.patchDownload+1122-47
#21jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#20)
#22Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#21)
#23Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Mahendra Singh Thalor (#20)
#24Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Alvaro Herrera (#23)
#25jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#24)
#26Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#25)
#27Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Mahendra Singh Thalor (#26)
#28jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#27)
#29Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#28)
#30jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#29)
#31jian he
jian.universality@gmail.com
In reply to: jian he (#30)
#32Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#31)
#33jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#32)
#34jian he
jian.universality@gmail.com
In reply to: jian he (#33)
#35jian he
jian.universality@gmail.com
In reply to: jian he (#34)
#36Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#35)
#37jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#36)
#38Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#37)
#39jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#38)
#40jian he
jian.universality@gmail.com
In reply to: jian he (#39)
#41Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#40)
#42Srinath Reddy Sadipiralla
srinath2133@gmail.com
In reply to: Mahendra Singh Thalor (#41)
#43Srinath Reddy Sadipiralla
srinath2133@gmail.com
In reply to: Srinath Reddy Sadipiralla (#42)
#44Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Srinath Reddy Sadipiralla (#43)
#45Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Mahendra Singh Thalor (#44)
#46jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#45)
#47jian he
jian.universality@gmail.com
In reply to: jian he (#46)
#48jian he
jian.universality@gmail.com
In reply to: jian he (#47)
#49Srinath Reddy Sadipiralla
srinath2133@gmail.com
In reply to: jian he (#48)
#50Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#48)
#51Srinath Reddy Sadipiralla
srinath2133@gmail.com
In reply to: Mahendra Singh Thalor (#50)
#52Srinath Reddy Sadipiralla
srinath2133@gmail.com
In reply to: Srinath Reddy Sadipiralla (#51)
#53jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#50)
#54jian he
jian.universality@gmail.com
In reply to: jian he (#53)
#55Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#53)
#56jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#55)
#57jian he
jian.universality@gmail.com
In reply to: jian he (#56)
#58Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#56)
#59jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#58)
#60Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#59)
#61jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#60)
#62Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#61)
#63Srinath Reddy Sadipiralla
srinath2133@gmail.com
In reply to: Mahendra Singh Thalor (#62)
#64jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#62)
#65jian he
jian.universality@gmail.com
In reply to: jian he (#64)
#66Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Srinath Reddy Sadipiralla (#63)
#67jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#66)
#68Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#64)
#69Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Mahendra Singh Thalor (#68)
#70Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Alvaro Herrera (#69)
#71jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#70)
#72Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#71)
#73jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#72)
#74jian he
jian.universality@gmail.com
In reply to: jian he (#73)
#75Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Mahendra Singh Thalor (#72)
#76Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Alvaro Herrera (#75)
#77Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Mahendra Singh Thalor (#76)
#78Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Alvaro Herrera (#77)
#79jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#78)
#80Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Alvaro Herrera (#77)
#81Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Mahendra Singh Thalor (#80)
#82Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Alvaro Herrera (#81)
#83Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Mahendra Singh Thalor (#82)
In reply to: Alvaro Herrera (#83)
#85Andrew Dunstan
andrew@dunslane.net
In reply to: Dagfinn Ilmari Mannsåker (#84)
#86Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Andrew Dunstan (#85)
#87Andrew Dunstan
andrew@dunslane.net
In reply to: Alvaro Herrera (#86)
#88Isaac Morland
isaac.morland@gmail.com
In reply to: Andrew Dunstan (#87)
#89jian he
jian.universality@gmail.com
In reply to: Alvaro Herrera (#83)
#90Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Isaac Morland (#88)
#91Andrew Dunstan
andrew@dunslane.net
In reply to: jian he (#89)
#92Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Andrew Dunstan (#91)
#93Andrew Dunstan
andrew@dunslane.net
In reply to: Mahendra Singh Thalor (#92)
#94Andrew Dunstan
andrew@dunslane.net
In reply to: Andrew Dunstan (#93)
#95Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Andrew Dunstan (#94)
#96Andrew Dunstan
andrew@dunslane.net
In reply to: Mahendra Singh Thalor (#95)
#97Andrew Dunstan
andrew@dunslane.net
In reply to: Andrew Dunstan (#96)
#98Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Andrew Dunstan (#96)
#99Andrew Dunstan
andrew@dunslane.net
In reply to: Mahendra Singh Thalor (#98)
#100Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Andrew Dunstan (#99)
#101Andrew Dunstan
andrew@dunslane.net
In reply to: Mahendra Singh Thalor (#100)
#102Andrew Dunstan
andrew@dunslane.net
In reply to: Andrew Dunstan (#101)
#103Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Andrew Dunstan (#102)
#104Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Alvaro Herrera (#103)
#105Andrew Dunstan
andrew@dunslane.net
In reply to: Mahendra Singh Thalor (#104)
#106Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Andrew Dunstan (#105)
#107Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Mahendra Singh Thalor (#106)
#108Andrew Dunstan
andrew@dunslane.net
In reply to: Mahendra Singh Thalor (#107)
#109Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Andrew Dunstan (#108)
#110Ranier Vilela
ranier.vf@gmail.com
In reply to: Andrew Dunstan (#108)
#111Andrew Dunstan
andrew@dunslane.net
In reply to: Ranier Vilela (#110)
#112Ranier Vilela
ranier.vf@gmail.com
In reply to: Andrew Dunstan (#111)
#113Andrew Dunstan
andrew@dunslane.net
In reply to: Ranier Vilela (#112)
#114Ranier Vilela
ranier.vf@gmail.com
In reply to: Andrew Dunstan (#113)
#115Ranier Vilela
ranier.vf@gmail.com
In reply to: Ranier Vilela (#114)
#116Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Andrew Dunstan (#108)
#117Andrew Dunstan
andrew@dunslane.net
In reply to: Mahendra Singh Thalor (#116)
#118Noah Misch
noah@leadboat.com
In reply to: Andrew Dunstan (#108)
#119Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Noah Misch (#118)
#120Noah Misch
noah@leadboat.com
In reply to: Mahendra Singh Thalor (#119)
#121Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Noah Misch (#120)
#122Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Mahendra Singh Thalor (#121)
#123Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Mahendra Singh Thalor (#121)
#124Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Alvaro Herrera (#123)
#125Andrew Dunstan
andrew@dunslane.net
In reply to: Alvaro Herrera (#123)
#126Andrew Dunstan
andrew@dunslane.net
In reply to: Mahendra Singh Thalor (#122)
#127Noah Misch
noah@leadboat.com
In reply to: Andrew Dunstan (#126)
#128Andrew Dunstan
andrew@dunslane.net
In reply to: Noah Misch (#127)
#129Noah Misch
noah@leadboat.com
In reply to: Mahendra Singh Thalor (#121)
#130Robert Haas
robertmhaas@gmail.com
In reply to: Mahendra Singh Thalor (#119)
#131Andrew Dunstan
andrew@dunslane.net
In reply to: Noah Misch (#127)
#132Noah Misch
noah@leadboat.com
In reply to: Andrew Dunstan (#131)
#133Andrew Dunstan
andrew@dunslane.net
In reply to: Noah Misch (#132)
#134Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andrew Dunstan (#133)
#135Noah Misch
noah@leadboat.com
In reply to: Tom Lane (#134)
#136Andrew Dunstan
andrew@dunslane.net
In reply to: Noah Misch (#135)
#137Andrew Dunstan
andrew@dunslane.net
In reply to: Andrew Dunstan (#136)
#138Noah Misch
noah@leadboat.com
In reply to: Andrew Dunstan (#137)
#139Andrew Dunstan
andrew@dunslane.net
In reply to: Noah Misch (#138)
#140Andrew Dunstan
andrew@dunslane.net
In reply to: Andrew Dunstan (#137)
#141Christoph Berg
myon@debian.org
In reply to: Andrew Dunstan (#140)
#142Andrew Dunstan
andrew@dunslane.net
In reply to: Christoph Berg (#141)
#143Christoph Berg
myon@debian.org
In reply to: Andrew Dunstan (#142)
#144Nathan Bossart
nathandbossart@gmail.com
In reply to: Andrew Dunstan (#140)
#145Andrew Dunstan
andrew@dunslane.net
In reply to: Nathan Bossart (#144)
#146Noah Misch
noah@leadboat.com
In reply to: Andrew Dunstan (#140)
#147Andrew Dunstan
andrew@dunslane.net
In reply to: Noah Misch (#146)
#148Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Andrew Dunstan (#147)
#149Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Mahendra Singh Thalor (#148)
#150Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Mahendra Singh Thalor (#149)
#151Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Mahendra Singh Thalor (#150)
#152Vaibhav Dalvi
vaibhav.dalvi@enterprisedb.com
In reply to: Mahendra Singh Thalor (#151)
#153Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Vaibhav Dalvi (#152)
#154Vaibhav Dalvi
vaibhav.dalvi@enterprisedb.com
In reply to: Vaibhav Dalvi (#152)
#155tushar
tushar.ahuja@enterprisedb.com
In reply to: Mahendra Singh Thalor (#153)
#156Andrew Dunstan
andrew@dunslane.net
In reply to: tushar (#155)
#157Vaibhav Dalvi
vaibhav.dalvi@enterprisedb.com
In reply to: Mahendra Singh Thalor (#153)
#158Vaibhav Dalvi
vaibhav.dalvi@enterprisedb.com
In reply to: Vaibhav Dalvi (#157)
#159Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Vaibhav Dalvi (#158)
#160Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Mahendra Singh Thalor (#159)
#161Andrew Dunstan
andrew@dunslane.net
In reply to: Mahendra Singh Thalor (#160)
#162tushar
tushar.ahuja@enterprisedb.com
In reply to: Mahendra Singh Thalor (#160)
#163Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Andrew Dunstan (#161)
#164Vaibhav Dalvi
vaibhav.dalvi@enterprisedb.com
In reply to: Mahendra Singh Thalor (#163)
#165Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Vaibhav Dalvi (#164)
#166Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Mahendra Singh Thalor (#165)
#167tushar
tushar.ahuja@enterprisedb.com
In reply to: Mahendra Singh Thalor (#166)
#168tushar
tushar.ahuja@enterprisedb.com
In reply to: tushar (#167)
#169tushar
tushar.ahuja@enterprisedb.com
In reply to: tushar (#168)
#170Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: tushar (#169)
#171tushar
tushar.ahuja@enterprisedb.com
In reply to: Mahendra Singh Thalor (#170)
#172Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: tushar (#171)
#173tushar
tushar.ahuja@enterprisedb.com
In reply to: Mahendra Singh Thalor (#172)
#174Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: tushar (#173)
#175tushar
tushar.ahuja@enterprisedb.com
In reply to: Mahendra Singh Thalor (#174)
#176Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: tushar (#175)
#177jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#172)
#178Andrew Dunstan
andrew@dunslane.net
In reply to: jian he (#177)
#179tushar
tushar.ahuja@enterprisedb.com
In reply to: Mahendra Singh Thalor (#176)
#180jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#172)
#181Andrew Dunstan
andrew@dunslane.net
In reply to: tushar (#179)
#182Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Andrew Dunstan (#181)
#183Andrew Dunstan
andrew@dunslane.net
In reply to: Mahendra Singh Thalor (#182)
#184Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#180)
#185Andrew Dunstan
andrew@dunslane.net
In reply to: Mahendra Singh Thalor (#184)
#186tushar
tushar.ahuja@enterprisedb.com
In reply to: Mahendra Singh Thalor (#184)
#187tushar
tushar.ahuja@enterprisedb.com
In reply to: tushar (#186)
#188tushar
tushar.ahuja@enterprisedb.com
In reply to: Mahendra Singh Thalor (#184)
#189Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: tushar (#186)
#190tushar
tushar.ahuja@enterprisedb.com
In reply to: Mahendra Singh Thalor (#189)
#191tushar
tushar.ahuja@enterprisedb.com
In reply to: tushar (#190)
#192Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: tushar (#191)
#193tushar
tushar.ahuja@enterprisedb.com
In reply to: Mahendra Singh Thalor (#192)
#194Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: tushar (#193)
#195tushar
tushar.ahuja@enterprisedb.com
In reply to: Mahendra Singh Thalor (#194)
#196Andrew Dunstan
andrew@dunslane.net
In reply to: Mahendra Singh Thalor (#194)
#197Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Andrew Dunstan (#196)
#198jian he
jian.universality@gmail.com
In reply to: Mahendra Singh Thalor (#197)
#199Andrew Dunstan
andrew@dunslane.net
In reply to: jian he (#198)
#200jian he
jian.universality@gmail.com
In reply to: Andrew Dunstan (#199)
#201Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: jian he (#200)
#202Andrew Dunstan
andrew@dunslane.net
In reply to: Mahendra Singh Thalor (#201)
#203jian he
jian.universality@gmail.com
In reply to: Andrew Dunstan (#202)
#204Andrew Dunstan
andrew@dunslane.net
In reply to: jian he (#203)
#205Andrew Dunstan
andrew@dunslane.net
In reply to: Andrew Dunstan (#204)
#206Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Andrew Dunstan (#205)
#207Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andrew Dunstan (#205)
#208Andrew Dunstan
andrew@dunslane.net
In reply to: Tom Lane (#207)
#209Peter Eisentraut
peter_e@gmx.net
In reply to: Andrew Dunstan (#204)
#210Mahendra Singh Thalor
mahi6run@gmail.com
In reply to: Peter Eisentraut (#209)
#211Andrew Dunstan
andrew@dunslane.net
In reply to: Mahendra Singh Thalor (#210)