mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-12 18:34:36 +08:00
When dumping CREATE INDEX, must show opclass name if the opclass isn't
in the schema search path. Otherwise pg_dump doesn't correctly dump scenarios where a custom opclass is created in 'public' and then used by indexes in other schemas.
This commit is contained in:
parent
b4966453f6
commit
bea8af9152
@ -3,7 +3,7 @@
|
|||||||
* back to source text
|
* back to source text
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.155 2003/09/29 18:55:56 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.156 2003/10/02 22:24:54 tgl Exp $
|
||||||
*
|
*
|
||||||
* This software is copyrighted by Jan Wieck - Hamburg.
|
* This software is copyrighted by Jan Wieck - Hamburg.
|
||||||
*
|
*
|
||||||
@ -4030,6 +4030,7 @@ get_opclass_name(Oid opclass, Oid actual_datatype,
|
|||||||
Form_pg_opclass opcrec;
|
Form_pg_opclass opcrec;
|
||||||
char *opcname;
|
char *opcname;
|
||||||
char *nspname;
|
char *nspname;
|
||||||
|
bool isvisible;
|
||||||
|
|
||||||
/* Domains use their base type's default opclass */
|
/* Domains use their base type's default opclass */
|
||||||
if (OidIsValid(actual_datatype))
|
if (OidIsValid(actual_datatype))
|
||||||
@ -4050,11 +4051,15 @@ get_opclass_name(Oid opclass, Oid actual_datatype,
|
|||||||
actual_datatype = opcrec->opcintype;
|
actual_datatype = opcrec->opcintype;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (actual_datatype != opcrec->opcintype || !opcrec->opcdefault)
|
/* Must force use of opclass name if not in search path */
|
||||||
|
isvisible = OpclassIsVisible(opclass);
|
||||||
|
|
||||||
|
if (actual_datatype != opcrec->opcintype || !opcrec->opcdefault ||
|
||||||
|
!isvisible)
|
||||||
{
|
{
|
||||||
/* Okay, we need the opclass name. Do we need to qualify it? */
|
/* Okay, we need the opclass name. Do we need to qualify it? */
|
||||||
opcname = NameStr(opcrec->opcname);
|
opcname = NameStr(opcrec->opcname);
|
||||||
if (OpclassIsVisible(opclass))
|
if (isvisible)
|
||||||
appendStringInfo(buf, " %s", quote_identifier(opcname));
|
appendStringInfo(buf, " %s", quote_identifier(opcname));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user