mirror of
https://github.com/postgres/postgres.git
synced 2026-04-09 11:06:21 -04: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
243f11ccf1
commit
f8ee74faeb
1 changed files with 9 additions and 3 deletions
|
|
@ -3,7 +3,7 @@
|
|||
* back to source text
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.124.2.1 2003/01/08 22:54:36 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.124.2.2 2003/10/02 22:25:08 tgl Exp $
|
||||
*
|
||||
* This software is copyrighted by Jan Wieck - Hamburg.
|
||||
*
|
||||
|
|
@ -2951,6 +2951,7 @@ get_opclass_name(Oid opclass, Oid actual_datatype,
|
|||
Form_pg_opclass opcrec;
|
||||
char *opcname;
|
||||
char *nspname;
|
||||
bool isvisible;
|
||||
|
||||
/* Domains use their base type's default opclass */
|
||||
if (OidIsValid(actual_datatype))
|
||||
|
|
@ -2962,11 +2963,16 @@ get_opclass_name(Oid opclass, Oid actual_datatype,
|
|||
if (!HeapTupleIsValid(ht_opc))
|
||||
elog(ERROR, "cache lookup failed for opclass %u", opclass);
|
||||
opcrec = (Form_pg_opclass) GETSTRUCT(ht_opc);
|
||||
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? */
|
||||
opcname = NameStr(opcrec->opcname);
|
||||
if (OpclassIsVisible(opclass))
|
||||
if (isvisible)
|
||||
appendStringInfo(buf, " %s", quote_identifier(opcname));
|
||||
else
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue