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 **** ! Dump only global objects (users and groups), no databases. --- 134,140 ---- ! Dump only global objects (roles and tablespaces), no databases. *************** *** 194,199 **** --- 194,209 ---- + + + + + Dump only roles, no databases or tablespaces. + + + + + *************** *** 217,222 **** --- 227,242 ---- + + + + + Dump only tablespaces, no databases or roles. + + + + + 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"));