OSDN Git Service

Fix citext's upgrade-from-unpackaged script to set its collation correctly.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 3 Mar 2011 18:22:18 +0000 (13:22 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 3 Mar 2011 18:22:18 +0000 (13:22 -0500)
Although there remains some debate about how CREATE TYPE should represent
the collation property, this doesn't really affect what we need to do in
citext's script, so go ahead and fix that.

contrib/citext/citext--unpackaged--1.0.sql

index 7dcdc39..a59df36 100644 (file)
@@ -74,3 +74,15 @@ ALTER EXTENSION citext ADD function strpos(citext,citext);
 ALTER EXTENSION citext ADD function replace(citext,citext,citext);
 ALTER EXTENSION citext ADD function split_part(citext,citext,integer);
 ALTER EXTENSION citext ADD function translate(citext,citext,text);
+
+--
+-- As of 9.1, type citext should be marked collatable.  There is no ALTER TYPE
+-- command for this, so we have to do it by poking the pg_type entry directly.
+-- Notes: 100 is the OID of the "pg_catalog.default" collation --- it seems
+-- easier and more reliable to hard-wire that here than to pull it out of
+-- pg_collation.  Also, we don't need a pg_depend entry since the default
+-- collation is pinned.
+--
+
+UPDATE pg_catalog.pg_type SET typcollation = 100
+WHERE oid = 'citext'::pg_catalog.regtype;