@@ -2717,15 +2717,24 @@ getObjectDescription(const ObjectAddress *object)
2717
2717
{
2718
2718
HeapTuple collTup ;
2719
2719
Form_pg_collation coll ;
2720
+ char * nspname ;
2720
2721
2721
2722
collTup = SearchSysCache1 (COLLOID ,
2722
2723
ObjectIdGetDatum (object -> objectId ));
2723
2724
if (!HeapTupleIsValid (collTup ))
2724
2725
elog (ERROR , "cache lookup failed for collation %u" ,
2725
2726
object -> objectId );
2726
2727
coll = (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
+
2727
2735
appendStringInfo (& buffer , _ ("collation %s" ),
2728
- NameStr (coll -> collname ));
2736
+ quote_qualified_identifier (nspname ,
2737
+ NameStr (coll -> collname )));
2729
2738
ReleaseSysCache (collTup );
2730
2739
break ;
2731
2740
}
@@ -2765,14 +2774,25 @@ getObjectDescription(const ObjectAddress *object)
2765
2774
case OCLASS_CONVERSION :
2766
2775
{
2767
2776
HeapTuple conTup ;
2777
+ Form_pg_conversion conv ;
2778
+ char * nspname ;
2768
2779
2769
2780
conTup = SearchSysCache1 (CONVOID ,
2770
2781
ObjectIdGetDatum (object -> objectId ));
2771
2782
if (!HeapTupleIsValid (conTup ))
2772
2783
elog (ERROR , "cache lookup failed for conversion %u" ,
2773
2784
object -> 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
+
2774
2793
appendStringInfo (& buffer , _ ("conversion %s" ),
2775
- NameStr (((Form_pg_conversion ) GETSTRUCT (conTup ))-> conname ));
2794
+ quote_qualified_identifier (nspname ,
2795
+ NameStr (conv -> conname )));
2776
2796
ReleaseSysCache (conTup );
2777
2797
break ;
2778
2798
}
@@ -3074,17 +3094,24 @@ getObjectDescription(const ObjectAddress *object)
3074
3094
{
3075
3095
HeapTuple stxTup ;
3076
3096
Form_pg_statistic_ext stxForm ;
3097
+ char * nspname ;
3077
3098
3078
3099
stxTup = SearchSysCache1 (STATEXTOID ,
3079
3100
ObjectIdGetDatum (object -> objectId ));
3080
3101
if (!HeapTupleIsValid (stxTup ))
3081
3102
elog (ERROR , "could not find tuple for statistics object %u" ,
3082
3103
object -> objectId );
3083
-
3084
3104
stxForm = (Form_pg_statistic_ext ) GETSTRUCT (stxTup );
3085
3105
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
+
3086
3112
appendStringInfo (& buffer , _ ("statistics object %s" ),
3087
- NameStr (stxForm -> stxname ));
3113
+ quote_qualified_identifier (nspname ,
3114
+ NameStr (stxForm -> stxname )));
3088
3115
3089
3116
ReleaseSysCache (stxTup );
3090
3117
break ;
@@ -3093,59 +3120,103 @@ getObjectDescription(const ObjectAddress *object)
3093
3120
case OCLASS_TSPARSER :
3094
3121
{
3095
3122
HeapTuple tup ;
3123
+ Form_pg_ts_parser prsForm ;
3124
+ char * nspname ;
3096
3125
3097
3126
tup = SearchSysCache1 (TSPARSEROID ,
3098
3127
ObjectIdGetDatum (object -> objectId ));
3099
3128
if (!HeapTupleIsValid (tup ))
3100
3129
elog (ERROR , "cache lookup failed for text search parser %u" ,
3101
3130
object -> 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
+
3102
3139
appendStringInfo (& buffer , _ ("text search parser %s" ),
3103
- NameStr (((Form_pg_ts_parser ) GETSTRUCT (tup ))-> prsname ));
3140
+ quote_qualified_identifier (nspname ,
3141
+ NameStr (prsForm -> prsname )));
3104
3142
ReleaseSysCache (tup );
3105
3143
break ;
3106
3144
}
3107
3145
3108
3146
case OCLASS_TSDICT :
3109
3147
{
3110
3148
HeapTuple tup ;
3149
+ Form_pg_ts_dict dictForm ;
3150
+ char * nspname ;
3111
3151
3112
3152
tup = SearchSysCache1 (TSDICTOID ,
3113
3153
ObjectIdGetDatum (object -> objectId ));
3114
3154
if (!HeapTupleIsValid (tup ))
3115
3155
elog (ERROR , "cache lookup failed for text search dictionary %u" ,
3116
3156
object -> 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
+
3117
3165
appendStringInfo (& buffer , _ ("text search dictionary %s" ),
3118
- NameStr (((Form_pg_ts_dict ) GETSTRUCT (tup ))-> dictname ));
3166
+ quote_qualified_identifier (nspname ,
3167
+ NameStr (dictForm -> dictname )));
3119
3168
ReleaseSysCache (tup );
3120
3169
break ;
3121
3170
}
3122
3171
3123
3172
case OCLASS_TSTEMPLATE :
3124
3173
{
3125
3174
HeapTuple tup ;
3175
+ Form_pg_ts_template tmplForm ;
3176
+ char * nspname ;
3126
3177
3127
3178
tup = SearchSysCache1 (TSTEMPLATEOID ,
3128
3179
ObjectIdGetDatum (object -> objectId ));
3129
3180
if (!HeapTupleIsValid (tup ))
3130
3181
elog (ERROR , "cache lookup failed for text search template %u" ,
3131
3182
object -> 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
+
3132
3191
appendStringInfo (& buffer , _ ("text search template %s" ),
3133
- NameStr (((Form_pg_ts_template ) GETSTRUCT (tup ))-> tmplname ));
3192
+ quote_qualified_identifier (nspname ,
3193
+ NameStr (tmplForm -> tmplname )));
3134
3194
ReleaseSysCache (tup );
3135
3195
break ;
3136
3196
}
3137
3197
3138
3198
case OCLASS_TSCONFIG :
3139
3199
{
3140
3200
HeapTuple tup ;
3201
+ Form_pg_ts_config cfgForm ;
3202
+ char * nspname ;
3141
3203
3142
3204
tup = SearchSysCache1 (TSCONFIGOID ,
3143
3205
ObjectIdGetDatum (object -> objectId ));
3144
3206
if (!HeapTupleIsValid (tup ))
3145
3207
elog (ERROR , "cache lookup failed for text search configuration %u" ,
3146
3208
object -> 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
+
3147
3217
appendStringInfo (& buffer , _ ("text search configuration %s" ),
3148
- NameStr (((Form_pg_ts_config ) GETSTRUCT (tup ))-> cfgname ));
3218
+ quote_qualified_identifier (nspname ,
3219
+ NameStr (cfgForm -> cfgname )));
3149
3220
ReleaseSysCache (tup );
3150
3221
break ;
3151
3222
}
0 commit comments