Skip to content

Commit 0bf52bd

Browse files
committed
Fix object identities for text search objects
We were neglecting to schema-qualify them. Backpatch to 9.3, where object identities were introduced as a concept by commit f8348ea.
1 parent 9612b98 commit 0bf52bd

File tree

1 file changed

+21
-8
lines changed

1 file changed

+21
-8
lines changed

src/backend/catalog/objectaddress.c

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3056,15 +3056,18 @@ getObjectIdentity(const ObjectAddress *object)
30563056
{
30573057
HeapTuple tup;
30583058
Form_pg_ts_parser formParser;
3059+
char *schema;
30593060

30603061
tup = SearchSysCache1(TSPARSEROID,
30613062
ObjectIdGetDatum(object->objectId));
30623063
if (!HeapTupleIsValid(tup))
30633064
elog(ERROR, "cache lookup failed for text search parser %u",
30643065
object->objectId);
30653066
formParser = (Form_pg_ts_parser) GETSTRUCT(tup);
3066-
appendStringInfo(&buffer, "%s",
3067-
quote_identifier(NameStr(formParser->prsname)));
3067+
schema = get_namespace_name(formParser->prsnamespace);
3068+
appendStringInfoString(&buffer,
3069+
quote_qualified_identifier(schema,
3070+
NameStr(formParser->prsname)));
30683071
ReleaseSysCache(tup);
30693072
break;
30703073
}
@@ -3073,15 +3076,18 @@ getObjectIdentity(const ObjectAddress *object)
30733076
{
30743077
HeapTuple tup;
30753078
Form_pg_ts_dict formDict;
3079+
char *schema;
30763080

30773081
tup = SearchSysCache1(TSDICTOID,
30783082
ObjectIdGetDatum(object->objectId));
30793083
if (!HeapTupleIsValid(tup))
30803084
elog(ERROR, "cache lookup failed for text search dictionary %u",
30813085
object->objectId);
30823086
formDict = (Form_pg_ts_dict) GETSTRUCT(tup);
3083-
appendStringInfo(&buffer, "%s",
3084-
quote_identifier(NameStr(formDict->dictname)));
3087+
schema = get_namespace_name(formDict->dictnamespace);
3088+
appendStringInfoString(&buffer,
3089+
quote_qualified_identifier(schema,
3090+
NameStr(formDict->dictname)));
30853091
ReleaseSysCache(tup);
30863092
break;
30873093
}
@@ -3090,15 +3096,19 @@ getObjectIdentity(const ObjectAddress *object)
30903096
{
30913097
HeapTuple tup;
30923098
Form_pg_ts_template formTmpl;
3099+
char *schema;
30933100

30943101
tup = SearchSysCache1(TSTEMPLATEOID,
30953102
ObjectIdGetDatum(object->objectId));
30963103
if (!HeapTupleIsValid(tup))
30973104
elog(ERROR, "cache lookup failed for text search template %u",
30983105
object->objectId);
30993106
formTmpl = (Form_pg_ts_template) GETSTRUCT(tup);
3100-
appendStringInfo(&buffer, "%s",
3101-
quote_identifier(NameStr(formTmpl->tmplname)));
3107+
schema = get_namespace_name(formTmpl->tmplnamespace);
3108+
appendStringInfoString(&buffer,
3109+
quote_qualified_identifier(schema,
3110+
NameStr(formTmpl->tmplname)));
3111+
pfree(schema);
31023112
ReleaseSysCache(tup);
31033113
break;
31043114
}
@@ -3107,15 +3117,18 @@ getObjectIdentity(const ObjectAddress *object)
31073117
{
31083118
HeapTuple tup;
31093119
Form_pg_ts_config formCfg;
3120+
char *schema;
31103121

31113122
tup = SearchSysCache1(TSCONFIGOID,
31123123
ObjectIdGetDatum(object->objectId));
31133124
if (!HeapTupleIsValid(tup))
31143125
elog(ERROR, "cache lookup failed for text search configuration %u",
31153126
object->objectId);
31163127
formCfg = (Form_pg_ts_config) GETSTRUCT(tup);
3117-
appendStringInfo(&buffer, "%s",
3118-
quote_identifier(NameStr(formCfg->cfgname)));
3128+
schema = get_namespace_name(formCfg->cfgnamespace);
3129+
appendStringInfoString(&buffer,
3130+
quote_qualified_identifier(schema,
3131+
NameStr(formCfg->cfgname)));
31193132
ReleaseSysCache(tup);
31203133
break;
31213134
}

0 commit comments

Comments
 (0)