pgsql-fix-find_conversion.patch
text/x-patch
Filename: pgsql-fix-find_conversion.patch
Type: text/x-patch
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: context
| File | + | − |
|---|---|---|
| src/backend/catalog/namespace.c | 8 | 2 |
| src/backend/catalog/pg_conversion.c | 0 | 35 |
| src/include/catalog/pg_conversion_fn.h | 0 | 1 |
*** base/src/include/catalog/pg_conversion_fn.h (revision 2486)
--- base/src/include/catalog/pg_conversion_fn.h (working copy)
***************
*** 19,25 ****
int32 conforencoding, int32 contoencoding,
Oid conproc, bool def);
extern void RemoveConversionById(Oid conversionOid);
- extern Oid FindConversion(const char *conname, Oid connamespace);
extern Oid FindDefaultConversion(Oid connamespace, int32 for_encoding, int32 to_encoding);
#endif /* PG_CONVERSION_FN_H */
--- 19,24 ----
*** base/src/backend/catalog/pg_conversion.c (revision 2486)
--- base/src/backend/catalog/pg_conversion.c (working copy)
***************
*** 209,246 ****
ReleaseSysCacheList(catlist);
return proc;
}
-
- /*
- * FindConversion
- *
- * Find conversion by namespace and conversion name.
- * Returns conversion OID.
- */
- Oid
- FindConversion(const char *conname, Oid connamespace)
- {
- HeapTuple tuple;
- Oid procoid;
- Oid conoid;
- AclResult aclresult;
-
- /* search pg_conversion by connamespace and conversion name */
- tuple = SearchSysCache(CONNAMENSP,
- PointerGetDatum(conname),
- ObjectIdGetDatum(connamespace),
- 0, 0);
- if (!HeapTupleIsValid(tuple))
- return InvalidOid;
-
- procoid = ((Form_pg_conversion) GETSTRUCT(tuple))->conproc;
- conoid = HeapTupleGetOid(tuple);
-
- ReleaseSysCache(tuple);
-
- /* Check we have execute rights for the function */
- aclresult = pg_proc_aclcheck(procoid, GetUserId(), ACL_EXECUTE);
- if (aclresult != ACLCHECK_OK)
- return InvalidOid;
-
- return conoid;
- }
--- 209,211 ----
*** base/src/backend/catalog/namespace.c (revision 2486)
--- base/src/backend/catalog/namespace.c (working copy)
***************
*** 2836,2842 ****
{
/* use exact schema given */
namespaceId = LookupExplicitNamespace(schemaname);
! return FindConversion(conversion_name, namespaceId);
}
else
{
--- 2836,2845 ----
{
/* use exact schema given */
namespaceId = LookupExplicitNamespace(schemaname);
! return GetSysCacheOid(CONNAMENSP,
! PointerGetDatum(conversion_name),
! ObjectIdGetDatum(namespaceId),
! 0, 0);
}
else
{
***************
*** 2850,2856 ****
if (namespaceId == myTempNamespace)
continue; /* do not look in temp namespace */
! conoid = FindConversion(conversion_name, namespaceId);
if (OidIsValid(conoid))
return conoid;
}
--- 2853,2862 ----
if (namespaceId == myTempNamespace)
continue; /* do not look in temp namespace */
! conoid = GetSysCacheOid(CONNAMENSP,
! PointerGetDatum(conversion_name),
! ObjectIdGetDatum(namespaceId),
! 0, 0);
if (OidIsValid(conoid))
return conoid;
}