diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2002-12-02 05:20:47 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2002-12-02 05:20:47 +0000 |
commit | 28026681598526cea3bc50da93a4ab37a161be19 (patch) | |
tree | 501168a01c1f4538e13ab5e12f245a33540549b1 /src/backend/commands | |
parent | dfebfc1bc8d4fe973342ec7d44043044b5709e49 (diff) | |
download | postgresql-28026681598526cea3bc50da93a4ab37a161be19.tar.gz postgresql-28026681598526cea3bc50da93a4ab37a161be19.zip |
Repair core dump when trying to delete an entry from an already-NULL
datconfig or useconfig field. Per report from Dustin Sallings.
Diffstat (limited to 'src/backend/commands')
-rw-r--r-- | src/backend/commands/dbcommands.c | 7 | ||||
-rw-r--r-- | src/backend/commands/user.c | 9 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index 291770f98cc..f2973d6b165 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.107 2002/11/02 18:41:21 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.108 2002/12/02 05:20:47 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -561,7 +561,10 @@ AlterDatabaseSet(AlterDatabaseSetStmt *stmt) else a = GUCArrayDelete(a, stmt->variable); - repl_val[Anum_pg_database_datconfig - 1] = PointerGetDatum(a); + if (a) + repl_val[Anum_pg_database_datconfig - 1] = PointerGetDatum(a); + else + repl_null[Anum_pg_database_datconfig - 1] = 'n'; } newtuple = heap_modifytuple(tuple, rel, repl_val, repl_null, repl_repl); diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index a9b1e5d05f2..3bba3f61887 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.113 2002/10/21 19:46:45 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.114 2002/12/02 05:20:47 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -915,8 +915,10 @@ AlterUserSet(AlterUserSetStmt *stmt) repl_repl[Anum_pg_shadow_useconfig - 1] = 'r'; if (strcmp(stmt->variable, "all") == 0 && valuestr == NULL) + { /* RESET ALL */ repl_null[Anum_pg_shadow_useconfig - 1] = 'n'; + } else { Datum datum; @@ -935,7 +937,10 @@ AlterUserSet(AlterUserSetStmt *stmt) else array = GUCArrayDelete(array, stmt->variable); - repl_val[Anum_pg_shadow_useconfig - 1] = PointerGetDatum(array); + if (array) + repl_val[Anum_pg_shadow_useconfig - 1] = PointerGetDatum(array); + else + repl_null[Anum_pg_shadow_useconfig - 1] = 'n'; } newtuple = heap_modifytuple(oldtuple, rel, repl_val, repl_null, repl_repl); |