diff options
| author | Tom Lane | 2004-08-31 19:28:51 +0000 |
|---|---|---|
| committer | Tom Lane | 2004-08-31 19:28:51 +0000 |
| commit | d48bb056478fd3119dcea79c31633f9259ea8cd4 (patch) | |
| tree | e08064ebe653e79331a54f5ea781f4e6af050913 /src/backend/commands/variable.c | |
| parent | f5401cdc0338b1a14ed087ec8cd4d5c9293a9be6 (diff) | |
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.
Diffstat (limited to 'src/backend/commands/variable.c')
| -rw-r--r-- | src/backend/commands/variable.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c index b0031df8b2..e2d60387db 100644 --- a/src/backend/commands/variable.c +++ b/src/backend/commands/variable.c @@ -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) |
