Add missing check_collation_set call to bpcharne().
authorTom Lane <[email protected]>
Wed, 13 Nov 2019 20:53:53 +0000 (15:53 -0500)
committerTom Lane <[email protected]>
Wed, 13 Nov 2019 20:53:53 +0000 (15:53 -0500)
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- 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

index 2aed41197404c5de16c5e02c168c31728a2639d4..0469726ec0428af64af85dca89de6375bf5acd82 100644 (file)
@@ -784,6 +784,8 @@ bpcharne(PG_FUNCTION_ARGS)
        bool            result;
        Oid                     collid = PG_GET_COLLATION();
 
+       check_collation_set(collid);
+
        len1 = bcTruelen(arg1);
        len2 = bcTruelen(arg2);