gooderp18绿色标准版
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
7.1KB

  1. /* contrib/intarray/intarray--unpackaged--1.0.sql */
  2. -- complain if script is sourced in psql, rather than via CREATE EXTENSION
  3. \echo Use "CREATE EXTENSION intarray FROM unpackaged" to load this file. \quit
  4. ALTER EXTENSION intarray ADD type query_int;
  5. ALTER EXTENSION intarray ADD function bqarr_in(cstring);
  6. ALTER EXTENSION intarray ADD function bqarr_out(query_int);
  7. ALTER EXTENSION intarray ADD function querytree(query_int);
  8. ALTER EXTENSION intarray ADD function boolop(integer[],query_int);
  9. ALTER EXTENSION intarray ADD function rboolop(query_int,integer[]);
  10. ALTER EXTENSION intarray ADD operator ~~(query_int,integer[]);
  11. ALTER EXTENSION intarray ADD operator @@(integer[],query_int);
  12. ALTER EXTENSION intarray ADD function _int_contains(integer[],integer[]);
  13. ALTER EXTENSION intarray ADD function _int_contained(integer[],integer[]);
  14. ALTER EXTENSION intarray ADD function _int_overlap(integer[],integer[]);
  15. ALTER EXTENSION intarray ADD function _int_same(integer[],integer[]);
  16. ALTER EXTENSION intarray ADD function _int_different(integer[],integer[]);
  17. ALTER EXTENSION intarray ADD function _int_union(integer[],integer[]);
  18. ALTER EXTENSION intarray ADD function _int_inter(integer[],integer[]);
  19. ALTER EXTENSION intarray ADD operator &&(integer[],integer[]);
  20. ALTER EXTENSION intarray ADD operator <@(integer[],integer[]);
  21. ALTER EXTENSION intarray ADD operator @>(integer[],integer[]);
  22. ALTER EXTENSION intarray ADD operator ~(integer[],integer[]);
  23. ALTER EXTENSION intarray ADD operator @(integer[],integer[]);
  24. ALTER EXTENSION intarray ADD function intset(integer);
  25. ALTER EXTENSION intarray ADD function icount(integer[]);
  26. ALTER EXTENSION intarray ADD operator #(NONE,integer[]);
  27. ALTER EXTENSION intarray ADD function sort(integer[],text);
  28. ALTER EXTENSION intarray ADD function sort(integer[]);
  29. ALTER EXTENSION intarray ADD function sort_asc(integer[]);
  30. ALTER EXTENSION intarray ADD function sort_desc(integer[]);
  31. ALTER EXTENSION intarray ADD function uniq(integer[]);
  32. ALTER EXTENSION intarray ADD function idx(integer[],integer);
  33. ALTER EXTENSION intarray ADD operator #(integer[],integer);
  34. ALTER EXTENSION intarray ADD function subarray(integer[],integer,integer);
  35. ALTER EXTENSION intarray ADD function subarray(integer[],integer);
  36. ALTER EXTENSION intarray ADD function intarray_push_elem(integer[],integer);
  37. ALTER EXTENSION intarray ADD operator +(integer[],integer);
  38. ALTER EXTENSION intarray ADD function intarray_push_array(integer[],integer[]);
  39. ALTER EXTENSION intarray ADD operator +(integer[],integer[]);
  40. ALTER EXTENSION intarray ADD function intarray_del_elem(integer[],integer);
  41. ALTER EXTENSION intarray ADD operator -(integer[],integer);
  42. ALTER EXTENSION intarray ADD function intset_union_elem(integer[],integer);
  43. ALTER EXTENSION intarray ADD operator |(integer[],integer);
  44. ALTER EXTENSION intarray ADD operator |(integer[],integer[]);
  45. ALTER EXTENSION intarray ADD function intset_subtract(integer[],integer[]);
  46. ALTER EXTENSION intarray ADD operator -(integer[],integer[]);
  47. ALTER EXTENSION intarray ADD operator &(integer[],integer[]);
  48. ALTER EXTENSION intarray ADD function g_int_consistent(internal,integer[],integer,oid,internal);
  49. ALTER EXTENSION intarray ADD function g_int_compress(internal);
  50. ALTER EXTENSION intarray ADD function g_int_decompress(internal);
  51. ALTER EXTENSION intarray ADD function g_int_penalty(internal,internal,internal);
  52. ALTER EXTENSION intarray ADD function g_int_picksplit(internal,internal);
  53. ALTER EXTENSION intarray ADD function g_int_union(internal,internal);
  54. ALTER EXTENSION intarray ADD function g_int_same(integer[],integer[],internal);
  55. ALTER EXTENSION intarray ADD operator family gist__int_ops using gist;
  56. ALTER EXTENSION intarray ADD operator class gist__int_ops using gist;
  57. ALTER EXTENSION intarray ADD type intbig_gkey;
  58. ALTER EXTENSION intarray ADD function _intbig_in(cstring);
  59. ALTER EXTENSION intarray ADD function _intbig_out(intbig_gkey);
  60. ALTER EXTENSION intarray ADD function g_intbig_consistent(internal,internal,integer,oid,internal);
  61. ALTER EXTENSION intarray ADD function g_intbig_compress(internal);
  62. ALTER EXTENSION intarray ADD function g_intbig_decompress(internal);
  63. ALTER EXTENSION intarray ADD function g_intbig_penalty(internal,internal,internal);
  64. ALTER EXTENSION intarray ADD function g_intbig_picksplit(internal,internal);
  65. ALTER EXTENSION intarray ADD function g_intbig_union(internal,internal);
  66. ALTER EXTENSION intarray ADD function g_intbig_same(internal,internal,internal);
  67. ALTER EXTENSION intarray ADD operator family gist__intbig_ops using gist;
  68. ALTER EXTENSION intarray ADD operator class gist__intbig_ops using gist;
  69. ALTER EXTENSION intarray ADD operator family gin__int_ops using gin;
  70. ALTER EXTENSION intarray ADD operator class gin__int_ops using gin;
  71. -- These functions had different signatures in 9.0. We can't just
  72. -- drop and recreate them because they are linked into the GIN opclass,
  73. -- so we need some ugly hacks.
  74. -- First, absorb them into the extension under their old identities.
  75. ALTER EXTENSION intarray ADD function ginint4_queryextract(internal,internal,smallint,internal,internal);
  76. ALTER EXTENSION intarray ADD function ginint4_consistent(internal,smallint,internal,integer,internal,internal);
  77. -- Next, fix the parameter lists by means of direct UPDATE on the pg_proc
  78. -- entries. This is ugly as can be, but there's no other way to do it
  79. -- while preserving the identities (OIDs) of the functions.
  80. DO LANGUAGE plpgsql
  81. $$
  82. DECLARE
  83. my_schema_unquoted pg_catalog.text := pg_catalog.current_schema();
  84. my_schema pg_catalog.text := pg_catalog.quote_ident(pg_catalog.current_schema());
  85. old_path pg_catalog.text := pg_catalog.current_setting('search_path');
  86. BEGIN
  87. -- for safety, transiently set search_path to just pg_catalog+pg_temp
  88. PERFORM pg_catalog.set_config('search_path', 'pg_catalog, pg_temp', true);
  89. UPDATE pg_catalog.pg_proc
  90. SET pronargs = 7, proargtypes = '2281 2281 21 2281 2281 2281 2281'
  91. WHERE oid = (my_schema || '.ginint4_queryextract(internal,internal,smallint,internal,internal)')::pg_catalog.regprocedure;
  92. UPDATE pg_catalog.pg_proc
  93. SET pronargs = 8, proargtypes = '2281 21 2281 23 2281 2281 2281 2281'
  94. WHERE oid = (my_schema || '.ginint4_consistent(internal,smallint,internal,integer,internal,internal)')::pg_catalog.regprocedure;
  95. -- intarray also relies on the core function ginarrayextract, which changed
  96. -- signature in 9.1. To support upgrading, pg_catalog contains entries
  97. -- for ginarrayextract with both 2 and 3 args, and the former is what would
  98. -- have been added to our opclass during initial restore of a 9.0 dump script.
  99. -- Avert your eyes while we hack the pg_amproc entry to make it link to the
  100. -- 3-arg form ...
  101. UPDATE pg_catalog.pg_amproc
  102. SET amproc = 'pg_catalog.ginarrayextract(anyarray,internal,internal)'::pg_catalog.regprocedure
  103. WHERE amprocfamily =
  104. (SELECT oid FROM pg_catalog.pg_opfamily WHERE opfname = 'gin__int_ops' AND
  105. opfnamespace = (SELECT oid FROM pg_catalog.pg_namespace
  106. WHERE nspname = my_schema_unquoted))
  107. AND amproclefttype = 'integer[]'::pg_catalog.regtype
  108. AND amprocrighttype = 'integer[]'::pg_catalog.regtype
  109. AND amprocnum = 2
  110. AND amproc = 'pg_catalog.ginarrayextract(anyarray,internal)'::pg_catalog.regprocedure;
  111. PERFORM pg_catalog.set_config('search_path', old_path, true);
  112. END
  113. $$;
上海开阖软件有限公司 沪ICP备12045867号-1