William Grant has proposed merging lp:~wgrant/launchpad/no-tsearch2 into lp:launchpad.
Commit message: Drop the tsearch2 extension and ts2 schema. Requested reviews: Launchpad code reviewers (launchpad-reviewers) For more details, see: https://code.launchpad.net/~wgrant/launchpad/no-tsearch2/+merge/345508 PostgreSQL 10 removes contrib/tsearch2. >From the extension only ts2.tsvector survives, as public.ts2_tsvector. It's an alias for pg_catalog.tsvector, but we can't change existing column types without table rewrites or catalog hackery. ts2.ftiupdate() and the ts2.default text search config move into public. -- Your team Launchpad code reviewers is requested to review the proposed merge of lp:~wgrant/launchpad/no-tsearch2 into lp:launchpad.
=== added file 'database/schema/patch-2209-84-0.sql' --- database/schema/patch-2209-84-0.sql 1970-01-01 00:00:00 +0000 +++ database/schema/patch-2209-84-0.sql 2018-05-14 10:47:32 +0000 @@ -0,0 +1,72 @@ +-- Copyright 2018 Canonical Ltd. This software is licensed under the +-- GNU Affero General Public License version 3 (see the file LICENSE). + +SET client_min_messages=ERROR; + +-- Drop the tsearch2 extension and ts2 schema. +-- +-- PostgreSQL 10 removes contrib/tsearch2. +-- +-- From the extension only ts2.tsvector survives, as +-- public.ts2_tsvector. It's an alias for pg_catalog.tsvector, but we +-- can't change existing column types without table rewrites or catalog +-- hackery. +-- +-- ts2.ftiupdate() and the ts2.default text search config move into +-- public. + +ALTER EXTENSION tsearch2 DROP DOMAIN ts2.tsvector; +DROP EXTENSION tsearch2; + +ALTER DOMAIN ts2.tsvector RENAME TO ts2_tsvector; +ALTER DOMAIN ts2.ts2_tsvector SET SCHEMA public; + +ALTER TEXT SEARCH CONFIGURATION ts2.default SET SCHEMA public; + +ALTER FUNCTION ts2.ftiupdate() SET SCHEMA public; + +-- From launchpad-2209-00-0.sql, but without ts2 schema specifiers since it's +-- all in pg_catalog now. +CREATE OR REPLACE FUNCTION ftiupdate() RETURNS trigger + LANGUAGE plpythonu + AS $_$ + new = TD["new"] + args = TD["args"][:] + + # Short circuit if none of the relevant columns have been + # modified and fti is not being set to NULL (setting the fti + # column to NULL is thus how we can force a rebuild of the fti + # column). + if TD["event"] == "UPDATE" and new["fti"] != None: + old = TD["old"] + relevant_modification = False + for column_name in args[::2]: + if new[column_name] != old[column_name]: + relevant_modification = True + break + if not relevant_modification: + return "OK" + + # Generate an SQL statement that turns the requested + # column values into a weighted tsvector + sql = [] + for i in range(0, len(args), 2): + sql.append( + "setweight(to_tsvector('default', coalesce(" + "substring(ltrim($%d) from 1 for 2500),''))," + "CAST($%d AS \"char\"))" % (i + 1, i + 2)) + args[i] = new[args[i]] + + sql = "SELECT %s AS fti" % "||".join(sql) + + # Execute and store in the fti column + plan = plpy.prepare(sql, ["text", "char"] * (len(args)/2)) + new["fti"] = plpy.execute(plan, args, 1)[0]["fti"] + + # Tell PostgreSQL we have modified the data + return "MODIFY" +$_$; + +DROP SCHEMA ts2; + +INSERT INTO LaunchpadDatabaseRevision VALUES (2209, 84, 0); === modified file 'database/schema/security.cfg' --- database/schema/security.cfg 2018-04-10 13:07:25 +0000 +++ database/schema/security.cfg 2018-05-14 10:47:32 +0000 @@ -45,6 +45,7 @@ public.fticache = public.ftq(text) = EXECUTE public._ftq(text) = EXECUTE +public.ftiupdate() = EXECUTE public.getlocalnodeid() = EXECUTE public.gitrepository_denorm_access(integer) = EXECUTE public.is_blacklisted_name(text, integer) = EXECUTE
_______________________________________________ Mailing list: https://launchpad.net/~launchpad-reviewers Post to : launchpad-reviewers@lists.launchpad.net Unsubscribe : https://launchpad.net/~launchpad-reviewers More help : https://help.launchpad.net/ListHelp