diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2002-12-02 05:21:02 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2002-12-02 05:21:02 +0000 |
commit | 4390ebc505e89efb98cfeac9847dd7a314bf5b11 (patch) | |
tree | 1e836435e12325bd0feba5502979d008b3f3bd10 /src/backend/commands | |
parent | 22499b485429b38db3f521dfccde6c2c4accaa6c (diff) | |
download | postgresql-4390ebc505e89efb98cfeac9847dd7a314bf5b11.tar.gz postgresql-4390ebc505e89efb98cfeac9847dd7a314bf5b11.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..79fd2fe97f0 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.107.2.1 2002/12/02 05:21:01 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..5028b2a9f72 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.113.2.1 2002/12/02 05:21:02 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); |