2016-11-04 9:35 GMT+01:00 Guillaume Lelarge <guillaume@xxxxxxxxxxxx>:
Hi Amul,2016-11-04 7:52 GMT+01:00 amul sul <sulamul@xxxxxxxxx>:Hi Guillaume,
I found following issues with this patch, sorry missed in previous post:
You don't have to be sorry for me doing shitty things :)
#1 :
43 @@ -392,6 +393,10 @@ main(int argc, char **argv)
44 dopt.outputBlobs = true;
45 break;
46
47 + case 'B': /* Don't dump blobs */
48 + dopt.include_everything = false;
49 + break;
50 +
Touching dopt.include_everything flag does not seems to be a good idea
for '--no-blobs' option, our intension is to exclude blob only, but
this excluds other dump too (e.g COMMENT ON DATABASE, CREATE
EXTENSION, COMMENT ON EXTENSION, .., etc) that what we don't want,
right?
Agreed. I was afraid of that, but for some reason, didn't find that. I'll fix this.
Fixed in v4.
#2 :
We should add note for default behaviour if --no-blobs & --blobs both
are specified.
Right. I don't know how I will handle this, but you're right that the behaviour should be specified. I'll also fix this.
I checked other options, such as --format, and there's nothing noted as a default behaviour. Last one wins, which is what this patch does.
I'll try to work on this today but as I'm in pgconf.eu 2016, it may be only for tomorrow.
It tooks me more time than expected. v4 attached.
--
diff --git a/doc/src/sgml/ref/pg_dump.sgml b/doc/src/sgml/ref/pg_dump.sgml index 371a614..83dc52f 100644 --- a/doc/src/sgml/ref/pg_dump.sgml +++ b/doc/src/sgml/ref/pg_dump.sgml @@ -145,6 +145,16 @@ PostgreSQL documentation </varlistentry> <varlistentry> + <term><option>-B</></term> + <term><option>--no-blobs</></term> + <listitem> + <para> + Exclude large objects in the dump. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><option>-c</option></term> <term><option>--clean</option></term> <listitem> diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index 0e20985..f90c074 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -137,6 +137,7 @@ InitDumpOptions(DumpOptions *opts) { memset(opts, 0, sizeof(DumpOptions)); /* set any fields that shouldn't default to zeroes */ + opts->outputBlobs = true; opts->include_everything = true; opts->dumpSections = DUMP_UNSECTIONED; } diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 4da297f..4d3e245 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -291,6 +291,7 @@ main(int argc, char **argv) static struct option long_options[] = { {"data-only", no_argument, NULL, 'a'}, {"blobs", no_argument, NULL, 'b'}, + {"no-blobs", no_argument, NULL, 'B'}, {"clean", no_argument, NULL, 'c'}, {"create", no_argument, NULL, 'C'}, {"dbname", required_argument, NULL, 'd'}, @@ -379,7 +380,7 @@ main(int argc, char **argv) InitDumpOptions(&dopt); - while ((c = getopt_long(argc, argv, "abcCd:E:f:F:h:j:n:N:oOp:RsS:t:T:U:vwWxZ:", + while ((c = getopt_long(argc, argv, "abBcCd:E:f:F:h:j:n:N:oOp:RsS:t:T:U:vwWxZ:", long_options, &optindex)) != -1) { switch (c) @@ -392,6 +393,10 @@ main(int argc, char **argv) dopt.outputBlobs = true; break; + case 'B': /* Don't dump blobs */ + dopt.outputBlobs = false; + break; + case 'c': /* clean (i.e., drop) schema prior to create */ dopt.outputClean = 1; break; @@ -708,7 +713,7 @@ main(int argc, char **argv) * Dumping blobs is now default unless we saw an inclusion switch or -s * ... but even if we did see one of these, -b turns it back on. */ - if (dopt.include_everything && !dopt.schemaOnly) + if (dopt.include_everything && !dopt.schemaOnly && !dopt.outputBlobs) dopt.outputBlobs = true; /* @@ -864,6 +869,7 @@ help(const char *progname) printf(_("\nOptions controlling the output content:\n")); printf(_(" -a, --data-only dump only the data, not the schema\n")); printf(_(" -b, --blobs include large objects in dump\n")); + printf(_(" -B, --no-blobs exclude large objects in dump\n")); printf(_(" -c, --clean clean (drop) database objects before recreating\n")); printf(_(" -C, --create include commands to create database in dump\n")); printf(_(" -E, --encoding=ENCODING dump the data in encoding ENCODING\n"));
-- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general