diff options
author | Jeff Davis <jdavis@postgresql.org> | 2025-08-26 22:55:14 -0700 |
---|---|---|
committer | Jeff Davis <jdavis@postgresql.org> | 2025-08-26 22:55:14 -0700 |
commit | ef5b87b970dc28adeeb88191fbf66c9d6298b112 (patch) | |
tree | 7cc66794dce4abff4dbcea349e140e42c4041704 /src | |
parent | 85b380162cd6c66752d1dd020a2d9700da0903c9 (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
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/pg_upgrade/check.c | 13 |
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 " |