mirror of
https://github.com/postgres/postgres.git
synced 2025-11-07 19:06:32 +03:00
Hide internal error for pg_collation_actual_version(<bad OID>).
Instead of an unsightly internal "cache lookup failed" message, just return NULL for bad OIDs, as is the convention for other similar things. Reported-by: Justin Pryzby <pryzby@telsasoft.com> Reviewed-by: Michael Paquier <michael@paquier.xyz> Discussion: https://postgr.es/m/20210117215940.GE8560%40telsasoft.com
This commit is contained in:
@@ -1726,10 +1726,11 @@ get_collation_actual_version(char collprovider, const char *collcollate)
|
||||
/*
|
||||
* Get provider-specific collation version string for a given collation OID.
|
||||
* Return NULL if the provider doesn't support versions, or the collation is
|
||||
* unversioned (for example "C").
|
||||
* unversioned (for example "C"). Unknown OIDs result in NULL if missing_ok is
|
||||
* true.
|
||||
*/
|
||||
char *
|
||||
get_collation_version_for_oid(Oid oid)
|
||||
get_collation_version_for_oid(Oid oid, bool missing_ok)
|
||||
{
|
||||
HeapTuple tp;
|
||||
char *version;
|
||||
@@ -1751,7 +1752,11 @@ get_collation_version_for_oid(Oid oid)
|
||||
|
||||
tp = SearchSysCache1(COLLOID, ObjectIdGetDatum(oid));
|
||||
if (!HeapTupleIsValid(tp))
|
||||
{
|
||||
if (missing_ok)
|
||||
return NULL;
|
||||
elog(ERROR, "cache lookup failed for collation %u", oid);
|
||||
}
|
||||
collform = (Form_pg_collation) GETSTRUCT(tp);
|
||||
version = get_collation_actual_version(collform->collprovider,
|
||||
NameStr(collform->collcollate));
|
||||
|
||||
Reference in New Issue
Block a user