gooderp18绿色标准版
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

112 lines
4.6KB

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