diff options
author | Thomas Munro <tmunro@postgresql.org> | 2021-02-22 23:01:20 +1300 |
---|---|---|
committer | Thomas Munro <tmunro@postgresql.org> | 2021-02-22 23:01:20 +1300 |
commit | 0fb0a0503bfc125764c8dba4f515058145dc7f8b (patch) | |
tree | 98219612960d21cb75f0d962fab08fb917f42824 /src/backend/utils/adt/pg_locale.c | |
parent | f05ed5a5cfa55878baa77a1e39d68cb09793b477 (diff) | |
download | postgresql-0fb0a0503bfc125764c8dba4f515058145dc7f8b.tar.gz postgresql-0fb0a0503bfc125764c8dba4f515058145dc7f8b.zip |
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
Diffstat (limited to 'src/backend/utils/adt/pg_locale.c')
-rw-r--r-- | src/backend/utils/adt/pg_locale.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c index e9c1231f9ba..34b82b9335c 100644 --- a/src/backend/utils/adt/pg_locale.c +++ b/src/backend/utils/adt/pg_locale.c @@ -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)); |