1/* contrib/pg_trgm/pg_trgm--unpackaged--1.0.sql */ 2 3-- complain if script is sourced in psql, rather than via CREATE EXTENSION 4\echo Use "CREATE EXTENSION pg_trgm FROM unpackaged" to load this file. \quit 5 6ALTER EXTENSION pg_trgm ADD function set_limit(real); 7ALTER EXTENSION pg_trgm ADD function show_limit(); 8ALTER EXTENSION pg_trgm ADD function show_trgm(text); 9ALTER EXTENSION pg_trgm ADD function similarity(text,text); 10ALTER EXTENSION pg_trgm ADD function similarity_op(text,text); 11ALTER EXTENSION pg_trgm ADD operator %(text,text); 12ALTER EXTENSION pg_trgm ADD type gtrgm; 13ALTER EXTENSION pg_trgm ADD function gtrgm_in(cstring); 14ALTER EXTENSION pg_trgm ADD function gtrgm_out(gtrgm); 15ALTER EXTENSION pg_trgm ADD function gtrgm_consistent(internal,text,integer,oid,internal); 16ALTER EXTENSION pg_trgm ADD function gtrgm_compress(internal); 17ALTER EXTENSION pg_trgm ADD function gtrgm_decompress(internal); 18ALTER EXTENSION pg_trgm ADD function gtrgm_penalty(internal,internal,internal); 19ALTER EXTENSION pg_trgm ADD function gtrgm_picksplit(internal,internal); 20ALTER EXTENSION pg_trgm ADD function gtrgm_union(bytea,internal); 21ALTER EXTENSION pg_trgm ADD function gtrgm_same(gtrgm,gtrgm,internal); 22ALTER EXTENSION pg_trgm ADD operator family gist_trgm_ops using gist; 23ALTER EXTENSION pg_trgm ADD operator class gist_trgm_ops using gist; 24ALTER EXTENSION pg_trgm ADD operator family gin_trgm_ops using gin; 25ALTER EXTENSION pg_trgm ADD operator class gin_trgm_ops using gin; 26 27-- These functions had different names/signatures in 9.0. We can't just 28-- drop and recreate them because they are linked into the GIN opclass, 29-- so we need some ugly hacks. 30 31-- First, absorb them into the extension under their old names. 32 33ALTER EXTENSION pg_trgm ADD function gin_extract_trgm(text, internal); 34ALTER EXTENSION pg_trgm ADD function gin_extract_trgm(text, internal, int2, internal, internal); 35ALTER EXTENSION pg_trgm ADD function gin_trgm_consistent(internal,smallint,text,integer,internal,internal); 36 37-- Fix the names, and then do CREATE OR REPLACE to adjust the function 38-- bodies to be correct (ie, reference the correct C symbol). 39 40ALTER FUNCTION gin_extract_trgm(text, internal) 41 RENAME TO gin_extract_value_trgm; 42CREATE OR REPLACE FUNCTION gin_extract_value_trgm(text, internal) 43RETURNS internal 44AS 'MODULE_PATHNAME' 45LANGUAGE C IMMUTABLE STRICT; 46 47ALTER FUNCTION gin_extract_trgm(text, internal, int2, internal, internal) 48 RENAME TO gin_extract_query_trgm; 49CREATE OR REPLACE FUNCTION gin_extract_query_trgm(text, internal, int2, internal, internal) 50RETURNS internal 51AS 'MODULE_PATHNAME' 52LANGUAGE C IMMUTABLE STRICT; 53 54-- gin_trgm_consistent didn't change name. 55 56-- Last, fix the parameter lists by means of direct UPDATE on the pg_proc 57-- entries. This is ugly as can be, but there's no other way to do it 58-- while preserving the identities (OIDs) of the functions. 59 60DO LANGUAGE plpgsql 61$$ 62DECLARE 63 my_schema pg_catalog.text := pg_catalog.quote_ident(pg_catalog.current_schema()); 64 old_path pg_catalog.text := pg_catalog.current_setting('search_path'); 65BEGIN 66-- for safety, transiently set search_path to just pg_catalog+pg_temp 67PERFORM pg_catalog.set_config('search_path', 'pg_catalog, pg_temp', true); 68 69UPDATE pg_catalog.pg_proc 70SET pronargs = 7, proargtypes = '25 2281 21 2281 2281 2281 2281' 71WHERE oid = (my_schema || '.gin_extract_query_trgm(text,internal,int2,internal,internal)')::pg_catalog.regprocedure; 72 73UPDATE pg_catalog.pg_proc 74SET pronargs = 8, proargtypes = '2281 21 25 23 2281 2281 2281 2281' 75WHERE oid = (my_schema || '.gin_trgm_consistent(internal,smallint,text,integer,internal,internal)')::pg_catalog.regprocedure; 76 77PERFORM pg_catalog.set_config('search_path', old_path, true); 78END 79$$; 80 81 82-- These were not in 9.0: 83 84CREATE FUNCTION similarity_dist(text,text) 85RETURNS float4 86AS 'MODULE_PATHNAME' 87LANGUAGE C STRICT IMMUTABLE; 88 89CREATE OPERATOR <-> ( 90 LEFTARG = text, 91 RIGHTARG = text, 92 PROCEDURE = similarity_dist, 93 COMMUTATOR = '<->' 94); 95 96CREATE FUNCTION gtrgm_distance(internal,text,int,oid) 97RETURNS float8 98AS 'MODULE_PATHNAME' 99LANGUAGE C IMMUTABLE STRICT; 100 101-- Add new stuff to the operator classes. See comment in pg_trgm--1.0.sql. 102 103ALTER OPERATOR FAMILY gist_trgm_ops USING gist ADD 104 OPERATOR 2 <-> (text, text) FOR ORDER BY pg_catalog.float_ops, 105 OPERATOR 3 pg_catalog.~~ (text, text), 106 OPERATOR 4 pg_catalog.~~* (text, text), 107 FUNCTION 8 (text, text) gtrgm_distance (internal, text, int, oid); 108 109ALTER OPERATOR FAMILY gin_trgm_ops USING gin ADD 110 OPERATOR 3 pg_catalog.~~ (text, text), 111 OPERATOR 4 pg_catalog.~~* (text, text); 112