summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Davis <jdavis@postgresql.org>2025-08-26 22:55:14 -0700
committerJeff Davis <jdavis@postgresql.org>2025-08-26 22:55:14 -0700
commitef5b87b970dc28adeeb88191fbf66c9d6298b112 (patch)
tree7cc66794dce4abff4dbcea349e140e42c4041704
parent85b380162cd6c66752d1dd020a2d9700da0903c9 (diff)
Check for more Unicode functions during upgrade.
When checking for expression indexes that may be affected by a Unicode update during upgrade, check for a few more functions. Specifically, check for documented regexp functions, as well as the new CASEFOLD() function. Also, fully-qualify references to pg_catalog.text and pg_catalog.regtype. Discussion: https://postgr.es/m/399b656a3abb0c9283538a040f72199c0601525c.camel@j-davis.com Backpatch-through: 18
-rw-r--r--src/bin/pg_upgrade/check.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/bin/pg_upgrade/check.c b/src/bin/pg_upgrade/check.c
index 67eedbae265..1e17d64b3ec 100644
--- a/src/bin/pg_upgrade/check.c
+++ b/src/bin/pg_upgrade/check.c
@@ -1971,14 +1971,19 @@ check_for_unicode_update(ClusterInfo *cluster)
" SELECT oper.oid, oper.oprcode, collid FROM pg_operator oper, collations "
" WHERE oprname IN ('~', '~*', '!~', '!~*', '~~*', '!~~*') AND "
" oprnamespace='pg_catalog'::regnamespace AND "
- " oprright='text'::regtype "
+ " oprright='pg_catalog.text'::pg_catalog.regtype "
"), "
/* functions that use the input collation for character semantics */
"coll_functions(procid, collid) AS ( "
" SELECT proc.oid, collid FROM pg_proc proc, collations "
- " WHERE proname IN ('lower','initcap','upper') AND "
- " pronamespace='pg_catalog'::regnamespace AND "
- " proargtypes[0] = 'text'::regtype "
+ " WHERE pronamespace='pg_catalog'::regnamespace AND "
+ " ((proname IN ('lower','initcap','upper','casefold') AND "
+ " pronargs = 1 AND "
+ " proargtypes[0] = 'pg_catalog.text'::pg_catalog.regtype) OR "
+ " (proname = 'substring' AND pronargs = 2 AND "
+ " proargtypes[0] = 'pg_catalog.text'::pg_catalog.regtype AND "
+ " proargtypes[1] = 'pg_catalog.text'::pg_catalog.regtype) OR "
+ " proname LIKE 'regexp_%') "
/* include functions behind the operators listed above */
" UNION "
" SELECT procid, collid FROM coll_operators "