From 5a6eea0926f4b732a803149a6c169b1f79993fa9 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 13 Nov 2019 15:53:53 -0500 Subject: [PATCH] Add missing check_collation_set call to bpcharne(). We should throw an error for indeterminate collation, but bpcharne() was missing that logic, resulting in a much less user-friendly error (either an assertion failure or "cache lookup failed for collation 0"). Per report from Manuel Rigger. Back-patch to v12 where the mistake came in, evidently in commit 5e1963fb7. (Before non-deterministic collations, this function wasn't collation sensitive.) Discussion: https://postgr.es/m/CA+u7OA4HOjtymxAbuGNh4-X_2R0Lw5n01tzvP8E5-i-2gQXYWA@mail.gmail.com --- src/backend/utils/adt/varchar.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c index b21137c583..416c73f728 100644 --- a/src/backend/utils/adt/varchar.c +++ b/src/backend/utils/adt/varchar.c @@ -785,6 +785,8 @@ bpcharne(PG_FUNCTION_ARGS) bool result; Oid collid = PG_GET_COLLATION(); + check_collation_set(collid); + len1 = bcTruelen(arg1); len2 = bcTruelen(arg2);