Re: [BUGS] BUG #1148: server restarts depending on stats options
От | Bruce Momjian |
---|---|
Тема | Re: [BUGS] BUG #1148: server restarts depending on stats options |
Дата | |
Msg-id | 200405070133.i471XJu02046@candle.pha.pa.us обсуждение исходный текст |
Ответы |
Re: [BUGS] BUG #1148: server restarts depending on stats options
(Peter Eisentraut <peter_e@gmx.net>)
|
Список | pgsql-patches |
I have applied the attached patch to fix this problem. Sample output is: test=> set log_statement_stats = true; SET test=> set log_parser_stats = true; ERROR: Can not enable parameter when "log_statement_stats" is true. test=> begin; BEGIN test=> set log_statement_stats = false; SET test=> set log_parser_stats = true; SET test=> commit; COMMIT test=> set log_statement_stats = true; ERROR: Can not enable "log_statement_stats" when "log_parser_stats", "log_planner_stats", or "log_executor_stats" is true. And setting postgresql.conf with conflicting options puts this in the server logs: FATAL: Can not enable "log_statement_stats" when "log_parser_stats", "log_planner_stats", or "log_executor_stats" is true. --------------------------------------------------------------------------- PostgreSQL Bugs List wrote: > > The following bug has been logged online: > > Bug reference: 1148 > Logged by: Robert Treat > > Email address: xzilla@users.sourceforge.net > > PostgreSQL version: 7.5 Dev > > Operating system: Slackware Linux 8.1 (Kernel 2.4.18) > > Description: server restarts depending on stats options > > Details: > > set log_statement_stats = true and any of > log_(executer|planner|parser)_stats = true and you will get a database > restart when attempting to connect. > > from my logs: > > postgres@phppgadmin:/usr/local/pgsql-7.5dev$ cat data/logfile > LOG: received smart shutdown request > LOG: shutting down > LOG: database system is shut down > LOG: database system was shut down at 2004-05-06 12:59:01 PDT > LOG: checkpoint record is at 0/9DDC68 > LOG: redo record is at 0/9DDC68; undo record is at 0/0; shutdown TRUE > LOG: next transaction ID: 460; next OID: 17207 > LOG: database system is ready > WARNING: statement-level statistics are disabled because parser, planner, > or executor statistics are on > TRAP: BadState("!(((bool) ((CurrentUserId) != 0)))", File: "miscinit.c", > Line: 252) > LOG: server process (PID 22690) was terminated by signal 6 > LOG: terminating any other active server processes > WARNING: terminating connection because of crash of another server process > DETAIL: The postmaster has commanded this server process to roll back the > current transaction and exit, because another server process exited > abnormally and possibly corrupted shared memory. > HINT: In a moment you should be able to reconnect to the database and > repeat your command. > LOG: all server processes terminated; reinitializing > LOG: database system was interrupted at 2004-05-06 12:59:02 PDT > LOG: checkpoint record is at 0/9DDC68 > LOG: redo record is at 0/9DDC68; undo record is at 0/0; shutdown TRUE > LOG: next transaction ID: 460; next OID: 17207 > LOG: database system was not properly shut down; automatic recovery in > progress > LOG: record with zero length at 0/9DDCA8 > LOG: redo is not required > LOG: database system is ready > > > this is from a snapshot build on may 5th > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 9: the planner will ignore your desire to choose an index scan if your > joining column's datatypes do not match > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 Index: src/backend/utils/misc/guc.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/utils/misc/guc.c,v retrieving revision 1.202 diff -c -c -r1.202 guc.c *** src/backend/utils/misc/guc.c 7 May 2004 00:24:58 -0000 1.202 --- src/backend/utils/misc/guc.c 7 May 2004 01:32:35 -0000 *************** *** 103,108 **** --- 103,110 ---- static const char *assign_log_stmtlvl(int *var, const char *newval, bool doit, GucSource source); static bool assign_phony_autocommit(bool newval, bool doit, GucSource source); + static bool assign_stage_log_stats(bool newval, bool doit, GucSource source); + static bool assign_log_stats(bool newval, bool doit, GucSource source); /* *************** *** 577,583 **** NULL }, &log_parser_stats, ! false, NULL, NULL }, { {"log_planner_stats", PGC_USERLIMIT, STATS_MONITORING, --- 579,585 ---- NULL }, &log_parser_stats, ! false, assign_stage_log_stats, NULL }, { {"log_planner_stats", PGC_USERLIMIT, STATS_MONITORING, *************** *** 585,591 **** NULL }, &log_planner_stats, ! false, NULL, NULL }, { {"log_executor_stats", PGC_USERLIMIT, STATS_MONITORING, --- 587,593 ---- NULL }, &log_planner_stats, ! false, assign_stage_log_stats, NULL }, { {"log_executor_stats", PGC_USERLIMIT, STATS_MONITORING, *************** *** 593,599 **** NULL }, &log_executor_stats, ! false, NULL, NULL }, { {"log_statement_stats", PGC_USERLIMIT, STATS_MONITORING, --- 595,601 ---- NULL }, &log_executor_stats, ! false, assign_stage_log_stats, NULL }, { {"log_statement_stats", PGC_USERLIMIT, STATS_MONITORING, *************** *** 601,607 **** NULL }, &log_statement_stats, ! false, NULL, NULL }, #ifdef BTREE_BUILD_STATS { --- 603,609 ---- NULL }, &log_statement_stats, ! false, assign_log_stats, NULL }, #ifdef BTREE_BUILD_STATS { *************** *** 4704,4709 **** --- 4706,4752 ---- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("SET AUTOCOMMIT TO OFF is no longer supported"))); return false; + } + return true; + } + + + static bool + assign_stage_log_stats(bool newval, bool doit, GucSource source) + { + if (newval) + { + if (log_statement_stats) + { + if (doit) + ereport(ERROR, + (errcode(ERRCODE_ERROR_IN_ASSIGNMENT), + errmsg("Can not enable parameter when \"log_statement_stats\" is true."))); + else + return false; + } + return true; + } + return true; + } + + + static bool + assign_log_stats(bool newval, bool doit, GucSource source) + { + if (newval) + { + if (log_parser_stats || log_planner_stats || log_executor_stats) + { + if (doit) + ereport(ERROR, + (errcode(ERRCODE_ERROR_IN_ASSIGNMENT), + errmsg("Can not enable \"log_statement_stats\" when \"log_parser_stats\",\n" + "\"log_planner_stats\", or \"log_executor_stats\" is true."))); + else + return false; + } + return true; } return true; }
В списке pgsql-patches по дате отправления: