1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-10 17:42:29 +03:00

Repair problem identified by Olivier Prenant: ALTER DATABASE SET search_path

should not be too eager to reject paths involving unknown schemas, since
it can't really tell whether the schemas exist in the target database.
(Also, when reading pg_dumpall output, it could be that the schemas
don't exist yet, but eventually will.)  ALTER USER SET has a similar issue.
So, reduce the normal ERROR to a NOTICE when checking search_path values
for these commands.  Supporting this requires changing the API for GUC
assign_hook functions, which causes the patch to touch a lot of places,
but the changes are conceptually trivial.
This commit is contained in:
Tom Lane
2004-01-19 19:04:40 +00:00
parent 239760209b
commit 9bd681a522
17 changed files with 183 additions and 144 deletions

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.123 2003/12/21 04:34:35 momjian Exp $
* $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.124 2004/01/19 19:04:40 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -3919,7 +3919,7 @@ EncodeInterval(struct tm * tm, fsec_t fsec, int style, char *str)
/* GUC assign_hook for australian_timezones */
bool
ClearDateCache(bool newval, bool doit, bool interactive)
ClearDateCache(bool newval, bool doit, GucSource source)
{
int i;

View File

@@ -4,7 +4,7 @@
*
* Portions Copyright (c) 2002-2003, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/backend/utils/adt/pg_locale.c,v 1.24 2003/11/29 19:51:59 pgsql Exp $
* $PostgreSQL: pgsql/src/backend/utils/adt/pg_locale.c,v 1.25 2004/01/19 19:04:40 tgl Exp $
*
*-----------------------------------------------------------------------
*/
@@ -73,7 +73,7 @@ char *locale_time;
* valid. (See explanation at the top of this file.)
*/
static const char *
locale_xxx_assign(int category, const char *value, bool doit, bool interactive)
locale_xxx_assign(int category, const char *value, bool doit, GucSource source)
{
char *save;
@@ -99,21 +99,21 @@ locale_xxx_assign(int category, const char *value, bool doit, bool interactive)
const char *
locale_monetary_assign(const char *value, bool doit, bool interactive)
locale_monetary_assign(const char *value, bool doit, GucSource source)
{
return locale_xxx_assign(LC_MONETARY, value, doit, interactive);
return locale_xxx_assign(LC_MONETARY, value, doit, source);
}
const char *
locale_numeric_assign(const char *value, bool doit, bool interactive)
locale_numeric_assign(const char *value, bool doit, GucSource source)
{
return locale_xxx_assign(LC_NUMERIC, value, doit, interactive);
return locale_xxx_assign(LC_NUMERIC, value, doit, source);
}
const char *
locale_time_assign(const char *value, bool doit, bool interactive)
locale_time_assign(const char *value, bool doit, GucSource source)
{
return locale_xxx_assign(LC_TIME, value, doit, interactive);
return locale_xxx_assign(LC_TIME, value, doit, source);
}
@@ -121,7 +121,7 @@ locale_time_assign(const char *value, bool doit, bool interactive)
* We allow LC_MESSAGES to actually be set globally.
*/
const char *
locale_messages_assign(const char *value, bool doit, bool interactive)
locale_messages_assign(const char *value, bool doit, GucSource source)
{
/*
* LC_MESSAGES category does not exist everywhere, but accept it
@@ -134,7 +134,7 @@ locale_messages_assign(const char *value, bool doit, bool interactive)
return NULL;
}
else
value = locale_xxx_assign(LC_MESSAGES, value, false, interactive);
value = locale_xxx_assign(LC_MESSAGES, value, false, source);
#endif
return value;
}

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/regexp.c,v 1.50 2003/11/29 19:51:59 pgsql Exp $
* $PostgreSQL: pgsql/src/backend/utils/adt/regexp.c,v 1.51 2004/01/19 19:04:40 tgl Exp $
*
* Alistair Crooks added the code for the regex caching
* agc - cached the regular expressions used - there's a good chance
@@ -32,6 +32,7 @@
#include "regex/regex.h"
#include "mb/pg_wchar.h"
#include "utils/builtins.h"
#include "utils/guc.h"
/* GUC-settable flavor parameter */
@@ -229,7 +230,7 @@ RE_compile_and_execute(text *text_re, unsigned char *dat, int dat_len,
*/
const char *
assign_regex_flavor(const char *value,
bool doit, bool interactive)
bool doit, GucSource source)
{
if (strcasecmp(value, "advanced") == 0)
{