patch
application/octet-stream
? GNUmakefile
? cleanup.sh
? config.log
? config.status
? i
? log
? participant.sql
? pg_lzcompress.c.test
? proc.sql
? runtest.sh
? test_table.sql
? contrib/.DS_Store
? contrib/cube/cubeparse.h
? contrib/seg/segparse.h
? contrib/spi/.deps
? src/Makefile.global
? src/backend/postgres
? src/backend/access/common/.deps
? src/backend/access/gin/.deps
? src/backend/access/gist/.deps
? src/backend/access/hash/.deps
? src/backend/access/heap/.deps
? src/backend/access/index/.deps
? src/backend/access/nbtree/.deps
? src/backend/access/transam/.deps
? src/backend/bootstrap/.deps
? src/backend/bootstrap/bootstrap_tokens.h
? src/backend/catalog/.deps
? src/backend/catalog/.index.c.swp
? src/backend/catalog/.namespace.c.swp
? src/backend/catalog/postgres.bki
? src/backend/catalog/postgres.description
? src/backend/catalog/postgres.shdescription
? src/backend/commands/.cluster.c.swp
? src/backend/commands/.deps
? src/backend/executor/.deps
? src/backend/foreign/.deps
? src/backend/lib/.deps
? src/backend/libpq/.deps
? src/backend/main/.deps
? src/backend/nodes/.deps
? src/backend/optimizer/geqo/.deps
? src/backend/optimizer/path/.costsize.c.swp
? src/backend/optimizer/path/.deps
? src/backend/optimizer/plan/.deps
? src/backend/optimizer/prep/.deps
? src/backend/optimizer/util/.deps
? src/backend/parser/.deps
? src/backend/parser/gram.tab.c
? src/backend/parser/gram.tab.h
? src/backend/parser/parse.h
? src/backend/port/.deps
? src/backend/port/darwin/.deps
? src/backend/postmaster/.deps
? src/backend/regex/.deps
? src/backend/rewrite/.deps
? src/backend/snowball/.deps
? src/backend/snowball/snowball_create.sql
? src/backend/storage/buffer/.deps
? src/backend/storage/file/.deps
? src/backend/storage/freespace/.deps
? src/backend/storage/ipc/.deps
? src/backend/storage/large_object/.deps
? src/backend/storage/lmgr/.deps
? src/backend/storage/page/.deps
? src/backend/storage/smgr/.deps
? src/backend/storage/smgr/.smgr.c.swp
? src/backend/tcop/.deps
? src/backend/tsearch/.deps
? src/backend/utils/.deps
? src/backend/utils/probes.h
? src/backend/utils/adt/.deps
? src/backend/utils/adt/.pgstatfuncs.c.swp
? src/backend/utils/adt/pg_locale.c.in
? src/backend/utils/cache/.deps
? src/backend/utils/error/.deps
? src/backend/utils/fmgr/.deps
? src/backend/utils/hash/.deps
? src/backend/utils/init/.deps
? src/backend/utils/mb/.deps
? src/backend/utils/mb/conversion_procs/conversion_create.sql
? src/backend/utils/mb/conversion_procs/ascii_and_mic/.deps
? src/backend/utils/mb/conversion_procs/cyrillic_and_mic/.deps
? src/backend/utils/mb/conversion_procs/euc_cn_and_mic/.deps
? src/backend/utils/mb/conversion_procs/euc_jis_2004_and_shift_jis_2004/.deps
? src/backend/utils/mb/conversion_procs/euc_jp_and_sjis/.deps
? src/backend/utils/mb/conversion_procs/euc_kr_and_mic/.deps
? src/backend/utils/mb/conversion_procs/euc_tw_and_big5/.deps
? src/backend/utils/mb/conversion_procs/latin2_and_win1250/.deps
? src/backend/utils/mb/conversion_procs/latin_and_mic/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_ascii/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_big5/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_euc_cn/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_euc_jis_2004/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_euc_jp/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_euc_kr/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_euc_tw/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_gb18030/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_gbk/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_iso8859/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_johab/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_shift_jis_2004/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_sjis/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_uhc/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_win/.deps
? src/backend/utils/misc/.deps
? src/backend/utils/mmgr/.deps
? src/backend/utils/resowner/.deps
? src/backend/utils/sort/.deps
? src/backend/utils/time/.deps
? src/bin/initdb/.deps
? src/bin/initdb/initdb
? src/bin/ipcclean/ipcclean
? src/bin/pg_config/.deps
? src/bin/pg_config/pg_config
? src/bin/pg_controldata/.deps
? src/bin/pg_controldata/pg_controldata
? src/bin/pg_ctl/.deps
? src/bin/pg_ctl/pg_ctl
? src/bin/pg_dump/.deps
? src/bin/pg_dump/pg_dump
? src/bin/pg_dump/pg_dumpall
? src/bin/pg_dump/pg_restore
? src/bin/pg_resetxlog/.deps
? src/bin/pg_resetxlog/pg_resetxlog
? src/bin/psql/.deps
? src/bin/psql/psql
? src/bin/scripts/.deps
? src/bin/scripts/.vacuumdb.c.swp
? src/bin/scripts/clusterdb
? src/bin/scripts/createdb
? src/bin/scripts/createlang
? src/bin/scripts/createuser
? src/bin/scripts/dropdb
? src/bin/scripts/droplang
? src/bin/scripts/dropuser
? src/bin/scripts/reindexdb
? src/bin/scripts/vacuumdb
? src/include/pg_config.h
? src/include/stamp-h
? src/interfaces/ecpg/compatlib/.deps
? src/interfaces/ecpg/compatlib/exports.list
? src/interfaces/ecpg/compatlib/libecpg_compat.2.2.dylib
? src/interfaces/ecpg/compatlib/libecpg_compat.2.3.dylib
? src/interfaces/ecpg/compatlib/libecpg_compat.3.1.dylib
? src/interfaces/ecpg/ecpglib/.deps
? src/interfaces/ecpg/ecpglib/exports.list
? src/interfaces/ecpg/ecpglib/libecpg.5.2.dylib
? src/interfaces/ecpg/ecpglib/libecpg.5.3.dylib
? src/interfaces/ecpg/ecpglib/libecpg.6.0.dylib
? src/interfaces/ecpg/ecpglib/libecpg.6.1.dylib
? src/interfaces/ecpg/include/ecpg_config.h
? src/interfaces/ecpg/include/stamp-h
? src/interfaces/ecpg/pgtypeslib/.deps
? src/interfaces/ecpg/pgtypeslib/exports.list
? src/interfaces/ecpg/pgtypeslib/libpgtypes.2.2.dylib
? src/interfaces/ecpg/pgtypeslib/libpgtypes.2.3.dylib
? src/interfaces/ecpg/pgtypeslib/libpgtypes.3.1.dylib
? src/interfaces/ecpg/preproc/.deps
? src/interfaces/ecpg/preproc/ecpg
? src/interfaces/libpq/.deps
? src/interfaces/libpq/exports.list
? src/interfaces/libpq/libpq.5.0.dylib
? src/interfaces/libpq/libpq.5.1.dylib
? src/interfaces/libpq/libpq.5.2.dylib
? src/pl/plpgsql/src/.deps
? src/pl/plpgsql/src/pl.tab.h
? src/port/.deps
? src/port/pg_config_paths.h
? src/test/regress/.deps
? src/test/regress/pg_regress
? src/test/regress/testtablespace
? src/timezone/.deps
? src/timezone/zic
Index: src/bin/scripts/vacuumdb.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/scripts/vacuumdb.c,v
retrieving revision 1.26
diff -c -r1.26 vacuumdb.c
*** src/bin/scripts/vacuumdb.c 28 Apr 2009 02:37:09 -0000 1.26
--- src/bin/scripts/vacuumdb.c 23 May 2009 18:59:36 -0000
***************
*** 14,25 ****
#include "common.h"
! static void vacuum_one_database(const char *dbname, bool full, bool verbose, bool analyze,
! bool freeze, const char *table,
const char *host, const char *port,
const char *username, enum trivalue prompt_password,
const char *progname, bool echo);
! static void vacuum_all_databases(bool full, bool verbose, bool analyze, bool freeze,
const char *host, const char *port,
const char *username, enum trivalue prompt_password,
const char *progname, bool echo, bool quiet);
--- 14,25 ----
#include "common.h"
! static void process_one_database(const char *dbname, bool full, bool verbose, bool analyze,
! bool vacuum, bool freeze, const char *table,
const char *host, const char *port,
const char *username, enum trivalue prompt_password,
const char *progname, bool echo);
! static void process_all_databases(bool full, bool verbose, bool analyze, bool vacuum, bool freeze,
const char *host, const char *port,
const char *username, enum trivalue prompt_password,
const char *progname, bool echo, bool quiet);
***************
*** 40,45 ****
--- 40,46 ----
{"quiet", no_argument, NULL, 'q'},
{"dbname", required_argument, NULL, 'd'},
{"analyze", no_argument, NULL, 'z'},
+ {"analyze-only", no_argument, NULL, 'o'},
{"freeze", no_argument, NULL, 'F'},
{"all", no_argument, NULL, 'a'},
{"table", required_argument, NULL, 't'},
***************
*** 59,64 ****
--- 60,66 ----
enum trivalue prompt_password = TRI_DEFAULT;
bool echo = false;
bool quiet = false;
+ bool vacuum = true;
bool analyze = false;
bool freeze = false;
bool alldb = false;
***************
*** 71,77 ****
handle_help_version_opts(argc, argv, "vacuumdb", help);
! while ((c = getopt_long(argc, argv, "h:p:U:wWeqd:zaFt:fv", long_options, &optindex)) != -1)
{
switch (c)
{
--- 73,79 ----
handle_help_version_opts(argc, argv, "vacuumdb", help);
! while ((c = getopt_long(argc, argv, "h:p:U:wWeqd:ozaFt:fv", long_options, &optindex)) != -1)
{
switch (c)
{
***************
*** 102,107 ****
--- 104,113 ----
case 'z':
analyze = true;
break;
+ case 'o':
+ analyze = true;
+ vacuum = false;
+ break;
case 'F':
freeze = true;
break;
***************
*** 123,128 ****
--- 129,136 ----
}
}
+ // TODO: throw an error if analyze-only was selected with options that don't make sense
+
switch (argc - optind)
{
case 0:
***************
*** 154,160 ****
exit(1);
}
! vacuum_all_databases(full, verbose, analyze, freeze,
host, port, username, prompt_password,
progname, echo, quiet);
}
--- 162,168 ----
exit(1);
}
! process_all_databases(full, verbose, analyze, vacuum, freeze,
host, port, username, prompt_password,
progname, echo, quiet);
}
***************
*** 170,176 ****
dbname = get_user_name(progname);
}
! vacuum_one_database(dbname, full, verbose, analyze, freeze, table,
host, port, username, prompt_password,
progname, echo);
}
--- 178,184 ----
dbname = get_user_name(progname);
}
! process_one_database(dbname, full, verbose, analyze, vacuum, freeze, table,
host, port, username, prompt_password,
progname, echo);
}
***************
*** 180,187 ****
static void
! vacuum_one_database(const char *dbname, bool full, bool verbose, bool analyze,
! bool freeze, const char *table,
const char *host, const char *port,
const char *username, enum trivalue prompt_password,
const char *progname, bool echo)
--- 188,195 ----
static void
! process_one_database(const char *dbname, bool full, bool verbose, bool analyze,
! bool vacuum, bool freeze, const char *table,
const char *host, const char *port,
const char *username, enum trivalue prompt_password,
const char *progname, bool echo)
***************
*** 192,206 ****
initPQExpBuffer(&sql);
! appendPQExpBuffer(&sql, "VACUUM");
if (full)
appendPQExpBuffer(&sql, " FULL");
if (verbose)
appendPQExpBuffer(&sql, " VERBOSE");
if (freeze)
appendPQExpBuffer(&sql, " FREEZE");
- if (analyze)
- appendPQExpBuffer(&sql, " ANALYZE");
if (table)
appendPQExpBuffer(&sql, " %s", table);
appendPQExpBuffer(&sql, ";\n");
--- 200,222 ----
initPQExpBuffer(&sql);
! // TODO: Ensure we don't get invalid combinations?
!
! if (vacuum)
! {
! appendPQExpBuffer(&sql, "VACUUM");
! if (analyze)
! appendPQExpBuffer(&sql, " ANALYZE");
! }
! else
! appendPQExpBuffer(&sql, "ANALYZE");
!
if (full)
appendPQExpBuffer(&sql, " FULL");
if (verbose)
appendPQExpBuffer(&sql, " VERBOSE");
if (freeze)
appendPQExpBuffer(&sql, " FREEZE");
if (table)
appendPQExpBuffer(&sql, " %s", table);
appendPQExpBuffer(&sql, ";\n");
***************
*** 223,229 ****
static void
! vacuum_all_databases(bool full, bool verbose, bool analyze, bool freeze,
const char *host, const char *port,
const char *username, enum trivalue prompt_password,
const char *progname, bool echo, bool quiet)
--- 239,245 ----
static void
! process_all_databases(bool full, bool verbose, bool analyze, bool vacuum, bool freeze,
const char *host, const char *port,
const char *username, enum trivalue prompt_password,
const char *progname, bool echo, bool quiet)
***************
*** 246,252 ****
fflush(stdout);
}
! vacuum_one_database(dbname, full, verbose, analyze, freeze, NULL,
host, port, username, prompt_password,
progname, echo);
}
--- 262,268 ----
fflush(stdout);
}
! process_one_database(dbname, full, verbose, analyze, vacuum, freeze, NULL,
host, port, username, prompt_password,
progname, echo);
}
***************
*** 271,276 ****
--- 287,293 ----
printf(_(" -t, --table='TABLE[(COLUMNS)]' vacuum specific table only\n"));
printf(_(" -v, --verbose write a lot of output\n"));
printf(_(" -z, --analyze update optimizer hints\n"));
+ printf(_(" -o, --analyze-only update optimizer hints without vacuuming\n"));
printf(_(" --help show this help, then exit\n"));
printf(_(" --version output version information, then exit\n"));
printf(_("\nConnection options:\n"));