From c32416ebb748f9cc6ad4c0d3383d8593f151fa60 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 31 Aug 2004 19:28:51 +0000 Subject: Code review for various recent GUC hacking. Don't elog(ERROR) when not supposed to (fixes problem with postmaster aborting due to mistaken postgresql.conf change); don't call superuser() when not inside a transaction (fixes coredump when, eg, try to set log_statement from PGOPTIONS); some message style guidelines enforcement. --- src/backend/commands/variable.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/backend/commands/variable.c') diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c index f262754a56e..e0ccd668e59 100644 --- a/src/backend/commands/variable.c +++ b/src/backend/commands/variable.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/variable.c,v 1.102 2004/08/30 02:54:38 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/variable.c,v 1.103 2004/08/31 19:28:51 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -475,16 +475,23 @@ show_timezone(void) const char * assign_XactIsoLevel(const char *value, bool doit, GucSource source) { - if (doit && source >= PGC_S_INTERACTIVE) + if (SerializableSnapshot != NULL) { - if (SerializableSnapshot != NULL) + if (source >= PGC_S_INTERACTIVE) ereport(ERROR, (errcode(ERRCODE_ACTIVE_SQL_TRANSACTION), errmsg("SET TRANSACTION ISOLATION LEVEL must be called before any query"))); - if (IsSubTransaction()) + else + return NULL; + } + if (IsSubTransaction()) + { + if (source >= PGC_S_INTERACTIVE) ereport(ERROR, (errcode(ERRCODE_ACTIVE_SQL_TRANSACTION), errmsg("SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction"))); + else + return NULL; } if (strcmp(value, "serializable") == 0) -- cgit v1.2.3