mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +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:
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user