aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/catalog/objectaddress.c76
-rw-r--r--src/test/regress/expected/alter_generic.out10
-rw-r--r--src/test/regress/expected/alter_table.out10
3 files changed, 80 insertions, 16 deletions
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 1fb72760a0f..f609461f4b0 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -2499,6 +2499,7 @@ getObjectDescription(const ObjectAddress *object)
{
HeapTuple collTup;
Form_pg_collation coll;
+ char *nspname;
collTup = SearchSysCache1(COLLOID,
ObjectIdGetDatum(object->objectId));
@@ -2506,8 +2507,16 @@ getObjectDescription(const ObjectAddress *object)
elog(ERROR, "cache lookup failed for collation %u",
object->objectId);
coll = (Form_pg_collation) GETSTRUCT(collTup);
+
+ /* Qualify the name if not visible in search path */
+ if (CollationIsVisible(object->objectId))
+ nspname = NULL;
+ else
+ nspname = get_namespace_name(coll->collnamespace);
+
appendStringInfo(&buffer, _("collation %s"),
- NameStr(coll->collname));
+ quote_qualified_identifier(nspname,
+ NameStr(coll->collname)));
ReleaseSysCache(collTup);
break;
}
@@ -2547,14 +2556,25 @@ getObjectDescription(const ObjectAddress *object)
case OCLASS_CONVERSION:
{
HeapTuple conTup;
+ Form_pg_conversion conv;
+ char *nspname;
conTup = SearchSysCache1(CONVOID,
ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(conTup))
elog(ERROR, "cache lookup failed for conversion %u",
object->objectId);
+ conv = (Form_pg_conversion) GETSTRUCT(conTup);
+
+ /* Qualify the name if not visible in search path */
+ if (ConversionIsVisible(object->objectId))
+ nspname = NULL;
+ else
+ nspname = get_namespace_name(conv->connamespace);
+
appendStringInfo(&buffer, _("conversion %s"),
- NameStr(((Form_pg_conversion) GETSTRUCT(conTup))->conname));
+ quote_qualified_identifier(nspname,
+ NameStr(conv->conname)));
ReleaseSysCache(conTup);
break;
}
@@ -2861,14 +2881,25 @@ getObjectDescription(const ObjectAddress *object)
case OCLASS_TSPARSER:
{
HeapTuple tup;
+ Form_pg_ts_parser prsForm;
+ char *nspname;
tup = SearchSysCache1(TSPARSEROID,
ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
elog(ERROR, "cache lookup failed for text search parser %u",
object->objectId);
+ prsForm = (Form_pg_ts_parser) GETSTRUCT(tup);
+
+ /* Qualify the name if not visible in search path */
+ if (TSParserIsVisible(object->objectId))
+ nspname = NULL;
+ else
+ nspname = get_namespace_name(prsForm->prsnamespace);
+
appendStringInfo(&buffer, _("text search parser %s"),
- NameStr(((Form_pg_ts_parser) GETSTRUCT(tup))->prsname));
+ quote_qualified_identifier(nspname,
+ NameStr(prsForm->prsname)));
ReleaseSysCache(tup);
break;
}
@@ -2876,14 +2907,25 @@ getObjectDescription(const ObjectAddress *object)
case OCLASS_TSDICT:
{
HeapTuple tup;
+ Form_pg_ts_dict dictForm;
+ char *nspname;
tup = SearchSysCache1(TSDICTOID,
ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
elog(ERROR, "cache lookup failed for text search dictionary %u",
object->objectId);
+ dictForm = (Form_pg_ts_dict) GETSTRUCT(tup);
+
+ /* Qualify the name if not visible in search path */
+ if (TSDictionaryIsVisible(object->objectId))
+ nspname = NULL;
+ else
+ nspname = get_namespace_name(dictForm->dictnamespace);
+
appendStringInfo(&buffer, _("text search dictionary %s"),
- NameStr(((Form_pg_ts_dict) GETSTRUCT(tup))->dictname));
+ quote_qualified_identifier(nspname,
+ NameStr(dictForm->dictname)));
ReleaseSysCache(tup);
break;
}
@@ -2891,14 +2933,25 @@ getObjectDescription(const ObjectAddress *object)
case OCLASS_TSTEMPLATE:
{
HeapTuple tup;
+ Form_pg_ts_template tmplForm;
+ char *nspname;
tup = SearchSysCache1(TSTEMPLATEOID,
ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
elog(ERROR, "cache lookup failed for text search template %u",
object->objectId);
+ tmplForm = (Form_pg_ts_template) GETSTRUCT(tup);
+
+ /* Qualify the name if not visible in search path */
+ if (TSTemplateIsVisible(object->objectId))
+ nspname = NULL;
+ else
+ nspname = get_namespace_name(tmplForm->tmplnamespace);
+
appendStringInfo(&buffer, _("text search template %s"),
- NameStr(((Form_pg_ts_template) GETSTRUCT(tup))->tmplname));
+ quote_qualified_identifier(nspname,
+ NameStr(tmplForm->tmplname)));
ReleaseSysCache(tup);
break;
}
@@ -2906,14 +2959,25 @@ getObjectDescription(const ObjectAddress *object)
case OCLASS_TSCONFIG:
{
HeapTuple tup;
+ Form_pg_ts_config cfgForm;
+ char *nspname;
tup = SearchSysCache1(TSCONFIGOID,
ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
elog(ERROR, "cache lookup failed for text search configuration %u",
object->objectId);
+ cfgForm = (Form_pg_ts_config) GETSTRUCT(tup);
+
+ /* Qualify the name if not visible in search path */
+ if (TSConfigIsVisible(object->objectId))
+ nspname = NULL;
+ else
+ nspname = get_namespace_name(cfgForm->cfgnamespace);
+
appendStringInfo(&buffer, _("text search configuration %s"),
- NameStr(((Form_pg_ts_config) GETSTRUCT(tup))->cfgname));
+ quote_qualified_identifier(nspname,
+ NameStr(cfgForm->cfgname)));
ReleaseSysCache(tup);
break;
}
diff --git a/src/test/regress/expected/alter_generic.out b/src/test/regress/expected/alter_generic.out
index 4c3c8826b75..4f0d933fad6 100644
--- a/src/test/regress/expected/alter_generic.out
+++ b/src/test/regress/expected/alter_generic.out
@@ -669,13 +669,13 @@ DROP SCHEMA alt_nsp2 CASCADE;
NOTICE: drop cascades to 9 other objects
DETAIL: drop cascades to function alt_nsp2.alt_func2(integer)
drop cascades to function alt_nsp2.alt_agg2(integer)
-drop cascades to conversion alt_conv2
+drop cascades to conversion alt_nsp2.alt_conv2
drop cascades to operator alt_nsp2.@-@(integer,integer)
drop cascades to operator family alt_nsp2.alt_opf2 for access method hash
-drop cascades to text search dictionary alt_ts_dict2
-drop cascades to text search configuration alt_ts_conf2
-drop cascades to text search template alt_ts_temp2
-drop cascades to text search parser alt_ts_prs2
+drop cascades to text search dictionary alt_nsp2.alt_ts_dict2
+drop cascades to text search configuration alt_nsp2.alt_ts_conf2
+drop cascades to text search template alt_nsp2.alt_ts_temp2
+drop cascades to text search parser alt_nsp2.alt_ts_prs2
DROP USER regtest_alter_user1;
DROP USER regtest_alter_user2;
DROP USER regtest_alter_user3;
diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out
index 42257d0da43..6f459dfadf2 100644
--- a/src/test/regress/expected/alter_table.out
+++ b/src/test/regress/expected/alter_table.out
@@ -2497,11 +2497,11 @@ drop cascades to operator family alter2.ctype_hash_ops for access method hash
drop cascades to type alter2.ctype
drop cascades to function alter2.same(alter2.ctype,alter2.ctype)
drop cascades to operator alter2.=(alter2.ctype,alter2.ctype)
-drop cascades to conversion ascii_to_utf8
-drop cascades to text search parser prs
-drop cascades to text search configuration cfg
-drop cascades to text search template tmpl
-drop cascades to text search dictionary dict
+drop cascades to conversion alter2.ascii_to_utf8
+drop cascades to text search parser alter2.prs
+drop cascades to text search configuration alter2.cfg
+drop cascades to text search template alter2.tmpl
+drop cascades to text search dictionary alter2.dict
--
-- composite types
--