@@ -2717,15 +2717,24 @@ getObjectDescription(const ObjectAddress *object)
27172717{
27182718HeapTuple collTup ;
27192719Form_pg_collation coll ;
2720+ char * nspname ;
27202721
27212722collTup = SearchSysCache1 (COLLOID ,
27222723ObjectIdGetDatum (object -> objectId ));
27232724if (!HeapTupleIsValid (collTup ))
27242725elog (ERROR ,"cache lookup failed for collation %u" ,
27252726object -> objectId );
27262727coll = (Form_pg_collation )GETSTRUCT (collTup );
2728+
2729+ /* Qualify the name if not visible in search path */
2730+ if (CollationIsVisible (object -> objectId ))
2731+ nspname = NULL ;
2732+ else
2733+ nspname = get_namespace_name (coll -> collnamespace );
2734+
27272735appendStringInfo (& buffer ,_ ("collation %s" ),
2728- NameStr (coll -> collname ));
2736+ quote_qualified_identifier (nspname ,
2737+ NameStr (coll -> collname )));
27292738ReleaseSysCache (collTup );
27302739break ;
27312740}
@@ -2765,14 +2774,25 @@ getObjectDescription(const ObjectAddress *object)
27652774case OCLASS_CONVERSION :
27662775{
27672776HeapTuple conTup ;
2777+ Form_pg_conversion conv ;
2778+ char * nspname ;
27682779
27692780conTup = SearchSysCache1 (CONVOID ,
27702781ObjectIdGetDatum (object -> objectId ));
27712782if (!HeapTupleIsValid (conTup ))
27722783elog (ERROR ,"cache lookup failed for conversion %u" ,
27732784object -> objectId );
2785+ conv = (Form_pg_conversion )GETSTRUCT (conTup );
2786+
2787+ /* Qualify the name if not visible in search path */
2788+ if (ConversionIsVisible (object -> objectId ))
2789+ nspname = NULL ;
2790+ else
2791+ nspname = get_namespace_name (conv -> connamespace );
2792+
27742793appendStringInfo (& buffer ,_ ("conversion %s" ),
2775- NameStr (((Form_pg_conversion )GETSTRUCT (conTup ))-> conname ));
2794+ quote_qualified_identifier (nspname ,
2795+ NameStr (conv -> conname )));
27762796ReleaseSysCache (conTup );
27772797break ;
27782798}
@@ -3074,17 +3094,24 @@ getObjectDescription(const ObjectAddress *object)
30743094{
30753095HeapTuple stxTup ;
30763096Form_pg_statistic_ext stxForm ;
3097+ char * nspname ;
30773098
30783099stxTup = SearchSysCache1 (STATEXTOID ,
30793100ObjectIdGetDatum (object -> objectId ));
30803101if (!HeapTupleIsValid (stxTup ))
30813102elog (ERROR ,"could not find tuple for statistics object %u" ,
30823103object -> objectId );
3083-
30843104stxForm = (Form_pg_statistic_ext )GETSTRUCT (stxTup );
30853105
3106+ /* Qualify the name if not visible in search path */
3107+ if (StatisticsObjIsVisible (object -> objectId ))
3108+ nspname = NULL ;
3109+ else
3110+ nspname = get_namespace_name (stxForm -> stxnamespace );
3111+
30863112appendStringInfo (& buffer ,_ ("statistics object %s" ),
3087- NameStr (stxForm -> stxname ));
3113+ quote_qualified_identifier (nspname ,
3114+ NameStr (stxForm -> stxname )));
30883115
30893116ReleaseSysCache (stxTup );
30903117break ;
@@ -3093,59 +3120,103 @@ getObjectDescription(const ObjectAddress *object)
30933120case OCLASS_TSPARSER :
30943121{
30953122HeapTuple tup ;
3123+ Form_pg_ts_parser prsForm ;
3124+ char * nspname ;
30963125
30973126tup = SearchSysCache1 (TSPARSEROID ,
30983127ObjectIdGetDatum (object -> objectId ));
30993128if (!HeapTupleIsValid (tup ))
31003129elog (ERROR ,"cache lookup failed for text search parser %u" ,
31013130object -> objectId );
3131+ prsForm = (Form_pg_ts_parser )GETSTRUCT (tup );
3132+
3133+ /* Qualify the name if not visible in search path */
3134+ if (TSParserIsVisible (object -> objectId ))
3135+ nspname = NULL ;
3136+ else
3137+ nspname = get_namespace_name (prsForm -> prsnamespace );
3138+
31023139appendStringInfo (& buffer ,_ ("text search parser %s" ),
3103- NameStr (((Form_pg_ts_parser )GETSTRUCT (tup ))-> prsname ));
3140+ quote_qualified_identifier (nspname ,
3141+ NameStr (prsForm -> prsname )));
31043142ReleaseSysCache (tup );
31053143break ;
31063144}
31073145
31083146case OCLASS_TSDICT :
31093147{
31103148HeapTuple tup ;
3149+ Form_pg_ts_dict dictForm ;
3150+ char * nspname ;
31113151
31123152tup = SearchSysCache1 (TSDICTOID ,
31133153ObjectIdGetDatum (object -> objectId ));
31143154if (!HeapTupleIsValid (tup ))
31153155elog (ERROR ,"cache lookup failed for text search dictionary %u" ,
31163156object -> objectId );
3157+ dictForm = (Form_pg_ts_dict )GETSTRUCT (tup );
3158+
3159+ /* Qualify the name if not visible in search path */
3160+ if (TSDictionaryIsVisible (object -> objectId ))
3161+ nspname = NULL ;
3162+ else
3163+ nspname = get_namespace_name (dictForm -> dictnamespace );
3164+
31173165appendStringInfo (& buffer ,_ ("text search dictionary %s" ),
3118- NameStr (((Form_pg_ts_dict )GETSTRUCT (tup ))-> dictname ));
3166+ quote_qualified_identifier (nspname ,
3167+ NameStr (dictForm -> dictname )));
31193168ReleaseSysCache (tup );
31203169break ;
31213170}
31223171
31233172case OCLASS_TSTEMPLATE :
31243173{
31253174HeapTuple tup ;
3175+ Form_pg_ts_template tmplForm ;
3176+ char * nspname ;
31263177
31273178tup = SearchSysCache1 (TSTEMPLATEOID ,
31283179ObjectIdGetDatum (object -> objectId ));
31293180if (!HeapTupleIsValid (tup ))
31303181elog (ERROR ,"cache lookup failed for text search template %u" ,
31313182object -> objectId );
3183+ tmplForm = (Form_pg_ts_template )GETSTRUCT (tup );
3184+
3185+ /* Qualify the name if not visible in search path */
3186+ if (TSTemplateIsVisible (object -> objectId ))
3187+ nspname = NULL ;
3188+ else
3189+ nspname = get_namespace_name (tmplForm -> tmplnamespace );
3190+
31323191appendStringInfo (& buffer ,_ ("text search template %s" ),
3133- NameStr (((Form_pg_ts_template )GETSTRUCT (tup ))-> tmplname ));
3192+ quote_qualified_identifier (nspname ,
3193+ NameStr (tmplForm -> tmplname )));
31343194ReleaseSysCache (tup );
31353195break ;
31363196}
31373197
31383198case OCLASS_TSCONFIG :
31393199{
31403200HeapTuple tup ;
3201+ Form_pg_ts_config cfgForm ;
3202+ char * nspname ;
31413203
31423204tup = SearchSysCache1 (TSCONFIGOID ,
31433205ObjectIdGetDatum (object -> objectId ));
31443206if (!HeapTupleIsValid (tup ))
31453207elog (ERROR ,"cache lookup failed for text search configuration %u" ,
31463208object -> objectId );
3209+ cfgForm = (Form_pg_ts_config )GETSTRUCT (tup );
3210+
3211+ /* Qualify the name if not visible in search path */
3212+ if (TSConfigIsVisible (object -> objectId ))
3213+ nspname = NULL ;
3214+ else
3215+ nspname = get_namespace_name (cfgForm -> cfgnamespace );
3216+
31473217appendStringInfo (& buffer ,_ ("text search configuration %s" ),
3148- NameStr (((Form_pg_ts_config )GETSTRUCT (tup ))-> cfgname ));
3218+ quote_qualified_identifier (nspname ,
3219+ NameStr (cfgForm -> cfgname )));
31493220ReleaseSysCache (tup );
31503221break ;
31513222}