Patch applied. Thanks. ---------------------------------------------------------------------------
Dave Page wrote: > Tom Lane wrote: > > Dave Page <[EMAIL PROTECTED]> writes: > >> pg_dumpall -g -- Dump roles and tablespaces per current behaviour > >> pg_dumpall -gr -- Dump roles only (or users and groups) > >> pg_dumpall -gt -- Dump tablespaces only > > > > This seems a bit ugly, mainly because (1) it doesn't have a natural > > translation to long-form switches, and (2) it screws up the usual > > habit of merging multiple single-letter switches into one argument. > > Perhaps something like > > > > --roles-only > > --tablespaces-only > > --globals-only > > > > Not sure if there are free single-letter codes for the first two, > > but on the whole I'm more interested in having sane long-form names > > than sane short ones ... > > Revised patch attached - it now has > > -r --roles-only > -t --tablespaces-only > -g --globals-only > > Regards, Dave. > > Index: doc/src/sgml/ref/pg_dumpall.sgml > =================================================================== > RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/pg_dumpall.sgml,v > retrieving revision 1.58 > diff -c -r1.58 pg_dumpall.sgml > *** doc/src/sgml/ref/pg_dumpall.sgml 7 Oct 2006 20:59:04 -0000 1.58 > --- doc/src/sgml/ref/pg_dumpall.sgml 15 Jan 2007 09:10:31 -0000 > *************** > *** 134,140 **** > <term><option>--globals-only</option></term> > <listitem> > <para> > ! Dump only global objects (users and groups), no databases. > </para> > </listitem> > </varlistentry> > --- 134,140 ---- > <term><option>--globals-only</option></term> > <listitem> > <para> > ! Dump only global objects (roles and tablespaces), no databases. > </para> > </listitem> > </varlistentry> > *************** > *** 194,199 **** > --- 194,209 ---- > </varlistentry> > > <varlistentry> > + <term><option>-r</option></term> > + <term><option>--roles-only</option></term> > + <listitem> > + <para> > + Dump only roles, no databases or tablespaces. > + </para> > + </listitem> > + </varlistentry> > + > + <varlistentry> > <term><option>-s</option></term> > <term><option>--schema-only</option></term> > <listitem> > *************** > *** 217,222 **** > --- 227,242 ---- > </varlistentry> > > <varlistentry> > + <term><option>-t</option></term> > + <term><option>--tablespaces-only</option></term> > + <listitem> > + <para> > + Dump only tablespaces, no databases or roles. > + </para> > + </listitem> > + </varlistentry> > + > + <varlistentry> > <term><option>-v</></term> > <term><option>--verbose</></term> > <listitem> > Index: src/bin/pg_dump/pg_dumpall.c > =================================================================== > RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_dumpall.c,v > retrieving revision 1.86 > diff -c -r1.86 pg_dumpall.c > *** src/bin/pg_dump/pg_dumpall.c 5 Jan 2007 22:19:48 -0000 1.86 > --- src/bin/pg_dump/pg_dumpall.c 15 Jan 2007 09:10:33 -0000 > *************** > *** 78,83 **** > --- 78,85 ---- > bool force_password = false; > bool data_only = false; > bool globals_only = false; > + bool roles_only = false; > + bool tablespaces_only = false; > bool schema_only = false; > PGconn *conn; > int encoding; > *************** > *** 97,107 **** > {"oids", no_argument, NULL, 'o'}, > {"no-owner", no_argument, NULL, 'O'}, > {"port", required_argument, NULL, 'p'}, > ! {"password", no_argument, NULL, 'W'}, > {"schema-only", no_argument, NULL, 's'}, > {"superuser", required_argument, NULL, 'S'}, > {"username", required_argument, NULL, 'U'}, > {"verbose", no_argument, NULL, 'v'}, > {"no-privileges", no_argument, NULL, 'x'}, > {"no-acl", no_argument, NULL, 'x'}, > > --- 99,111 ---- > {"oids", no_argument, NULL, 'o'}, > {"no-owner", no_argument, NULL, 'O'}, > {"port", required_argument, NULL, 'p'}, > ! {"roles-only", no_argument, NULL, 'r'}, > {"schema-only", no_argument, NULL, 's'}, > {"superuser", required_argument, NULL, 'S'}, > + {"tablespaces-only", no_argument, NULL, 't'}, > {"username", required_argument, NULL, 'U'}, > {"verbose", no_argument, NULL, 'v'}, > + {"password", no_argument, NULL, 'W'}, > {"no-privileges", no_argument, NULL, 'x'}, > {"no-acl", no_argument, NULL, 'x'}, > > *************** > *** 161,167 **** > > pgdumpopts = createPQExpBuffer(); > > ! while ((c = getopt_long(argc, argv, "acdDgh:ioOp:sS:U:vWxX:", > long_options, &optindex)) != -1) > { > switch (c) > { > --- 165,171 ---- > > pgdumpopts = createPQExpBuffer(); > > ! while ((c = getopt_long(argc, argv, "acdDgh:ioOp:rsS:tU:vWxX:", > long_options, &optindex)) != -1) > { > switch (c) > { > *************** > *** 214,219 **** > --- 218,227 ---- > appendPQExpBuffer(pgdumpopts, " -p \"%s\"", > pgport); > #endif > break; > + > + case 'r': > + roles_only = true; > + break; > > case 's': > schema_only = true; > *************** > *** 227,232 **** > --- 235,244 ---- > appendPQExpBuffer(pgdumpopts, " -S \"%s\"", > optarg); > #endif > break; > + > + case 't': > + tablespaces_only = true; > + break; > > case 'U': > pguser = optarg; > *************** > *** 295,300 **** > --- 307,340 ---- > progname); > exit(1); > } > + > + /* Make sure the user hasn't specified a mix of globals-only options */ > + if (globals_only && roles_only) > + { > + fprintf(stderr, _("%s: --globals-only and --roles-only cannot > be used together\n"), > + progname); > + fprintf(stderr, _("Try \"%s --help\" for more information.\n"), > + progname); > + exit(1); > + } > + > + if (globals_only && tablespaces_only) > + { > + fprintf(stderr, _("%s: --globals-only and --tablespaces-only > cannot be used together\n"), > + progname); > + fprintf(stderr, _("Try \"%s --help\" for more information.\n"), > + progname); > + exit(1); > + } > + > + if (roles_only && tablespaces_only) > + { > + fprintf(stderr, _("%s: --roles-only and --tablespaces-only > cannot be used together\n"), > + progname); > + fprintf(stderr, _("Try \"%s --help\" for more information.\n"), > + progname); > + exit(1); > + } > > /* > * First try to connect to database "postgres", and failing that > *************** > *** 332,356 **** > printf("SET escape_string_warning = 'off';\n"); > printf("\n"); > > ! /* Dump roles (users) */ > ! dumpRoles(conn); > > ! /* Dump role memberships --- need different method for pre-8.1 > */ > ! if (server_version >= 80100) > ! dumpRoleMembership(conn); > ! else > ! dumpGroups(conn); > > ! /* Dump tablespaces */ > ! if (server_version >= 80000) > ! dumpTablespaces(conn); > > /* Dump CREATE DATABASE commands */ > ! if (!globals_only) > dumpCreateDB(conn); > } > > ! if (!globals_only) > dumpDatabases(conn); > > PQfinish(conn); > --- 372,402 ---- > printf("SET escape_string_warning = 'off';\n"); > printf("\n"); > > ! if (!tablespaces_only) > ! { > ! /* Dump roles (users) */ > ! dumpRoles(conn); > > ! /* Dump role memberships --- need different method for > pre-8.1 */ > ! if (server_version >= 80100) > ! dumpRoleMembership(conn); > ! else > ! dumpGroups(conn); > ! } > > ! if (!roles_only) > ! { > ! /* Dump tablespaces */ > ! if (server_version >= 80000) > ! dumpTablespaces(conn); > ! } > > /* Dump CREATE DATABASE commands */ > ! if (!globals_only && !roles_only && !tablespaces_only) > dumpCreateDB(conn); > } > > ! if (!globals_only && !roles_only && !tablespaces_only) > dumpDatabases(conn); > > PQfinish(conn); > *************** > *** 381,391 **** > printf(_(" -c, --clean clean (drop) databases prior to > create\n")); > printf(_(" -d, --inserts dump data as INSERT, rather than > COPY, commands\n")); > printf(_(" -D, --column-inserts dump data as INSERT commands with > column names\n")); > ! printf(_(" -g, --globals-only dump only global objects, no > databases\n")); > printf(_(" -o, --oids include OIDs in dump\n")); > printf(_(" -O, --no-owner skip restoration of object > ownership\n")); > printf(_(" -s, --schema-only dump only the schema, no data\n")); > printf(_(" -S, --superuser=NAME specify the superuser user name to > use in the dump\n")); > printf(_(" -x, --no-privileges do not dump privileges > (grant/revoke)\n")); > printf(_(" --disable-dollar-quoting\n" > " disable dollar quoting, > use SQL standard quoting\n")); > --- 427,439 ---- > printf(_(" -c, --clean clean (drop) databases prior to > create\n")); > printf(_(" -d, --inserts dump data as INSERT, rather than > COPY, commands\n")); > printf(_(" -D, --column-inserts dump data as INSERT commands with > column names\n")); > ! printf(_(" -g, --globals-only dump only global objects, no > databases.\n")); > printf(_(" -o, --oids include OIDs in dump\n")); > printf(_(" -O, --no-owner skip restoration of object > ownership\n")); > + printf(_(" -r, --roles-only dump only roles, no databases or > tablespaces.\n")); > printf(_(" -s, --schema-only dump only the schema, no data\n")); > printf(_(" -S, --superuser=NAME specify the superuser user name to > use in the dump\n")); > + printf(_(" -t, --tablespaces-only dump only tablespaces, no > databases or roles.\n")); > printf(_(" -x, --no-privileges do not dump privileges > (grant/revoke)\n")); > printf(_(" --disable-dollar-quoting\n" > " disable dollar quoting, > use SQL standard quoting\n")); > > ---------------------------(end of broadcast)--------------------------- > TIP 5: don't forget to increase your free space map settings -- Bruce Momjian [EMAIL PROTECTED] EnterpriseDB http://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. + ---------------------------(end of broadcast)--------------------------- TIP 7: You can help support the PostgreSQL project by donating at http://www.postgresql.org/about/donate