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.

521 lines
12KB

  1. /* contrib/intarray/intarray--1.2.sql */
  2. -- complain if script is sourced in psql, rather than via CREATE EXTENSION
  3. \echo Use "CREATE EXTENSION intarray" to load this file. \quit
  4. --
  5. -- Create the user-defined type for the 1-D integer arrays (_int4)
  6. --
  7. -- Query type
  8. CREATE FUNCTION bqarr_in(cstring)
  9. RETURNS query_int
  10. AS 'MODULE_PATHNAME'
  11. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  12. CREATE FUNCTION bqarr_out(query_int)
  13. RETURNS cstring
  14. AS 'MODULE_PATHNAME'
  15. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  16. CREATE TYPE query_int (
  17. INTERNALLENGTH = -1,
  18. INPUT = bqarr_in,
  19. OUTPUT = bqarr_out
  20. );
  21. --only for debug
  22. CREATE FUNCTION querytree(query_int)
  23. RETURNS text
  24. AS 'MODULE_PATHNAME'
  25. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  26. CREATE FUNCTION boolop(_int4, query_int)
  27. RETURNS bool
  28. AS 'MODULE_PATHNAME'
  29. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  30. COMMENT ON FUNCTION boolop(_int4, query_int) IS 'boolean operation with array';
  31. CREATE FUNCTION rboolop(query_int, _int4)
  32. RETURNS bool
  33. AS 'MODULE_PATHNAME'
  34. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  35. COMMENT ON FUNCTION rboolop(query_int, _int4) IS 'boolean operation with array';
  36. CREATE FUNCTION _int_matchsel(internal, oid, internal, integer)
  37. RETURNS float8
  38. AS 'MODULE_PATHNAME'
  39. LANGUAGE C STRICT STABLE PARALLEL SAFE;
  40. CREATE OPERATOR @@ (
  41. LEFTARG = _int4,
  42. RIGHTARG = query_int,
  43. PROCEDURE = boolop,
  44. COMMUTATOR = '~~',
  45. RESTRICT = _int_matchsel,
  46. JOIN = contjoinsel
  47. );
  48. CREATE OPERATOR ~~ (
  49. LEFTARG = query_int,
  50. RIGHTARG = _int4,
  51. PROCEDURE = rboolop,
  52. COMMUTATOR = '@@',
  53. RESTRICT = _int_matchsel,
  54. JOIN = contjoinsel
  55. );
  56. --
  57. -- External C-functions for R-tree methods
  58. --
  59. -- Comparison methods
  60. CREATE FUNCTION _int_contains(_int4, _int4)
  61. RETURNS bool
  62. AS 'MODULE_PATHNAME'
  63. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  64. COMMENT ON FUNCTION _int_contains(_int4, _int4) IS 'contains';
  65. CREATE FUNCTION _int_contained(_int4, _int4)
  66. RETURNS bool
  67. AS 'MODULE_PATHNAME'
  68. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  69. COMMENT ON FUNCTION _int_contained(_int4, _int4) IS 'contained in';
  70. CREATE FUNCTION _int_overlap(_int4, _int4)
  71. RETURNS bool
  72. AS 'MODULE_PATHNAME'
  73. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  74. COMMENT ON FUNCTION _int_overlap(_int4, _int4) IS 'overlaps';
  75. CREATE FUNCTION _int_same(_int4, _int4)
  76. RETURNS bool
  77. AS 'MODULE_PATHNAME'
  78. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  79. COMMENT ON FUNCTION _int_same(_int4, _int4) IS 'same as';
  80. CREATE FUNCTION _int_different(_int4, _int4)
  81. RETURNS bool
  82. AS 'MODULE_PATHNAME'
  83. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  84. COMMENT ON FUNCTION _int_different(_int4, _int4) IS 'different';
  85. -- support routines for indexing
  86. CREATE FUNCTION _int_union(_int4, _int4)
  87. RETURNS _int4
  88. AS 'MODULE_PATHNAME'
  89. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  90. CREATE FUNCTION _int_inter(_int4, _int4)
  91. RETURNS _int4
  92. AS 'MODULE_PATHNAME'
  93. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  94. CREATE FUNCTION _int_overlap_sel(internal, oid, internal, integer)
  95. RETURNS float8
  96. AS 'MODULE_PATHNAME'
  97. LANGUAGE C STRICT STABLE PARALLEL SAFE;
  98. CREATE FUNCTION _int_contains_sel(internal, oid, internal, integer)
  99. RETURNS float8
  100. AS 'MODULE_PATHNAME'
  101. LANGUAGE C STRICT STABLE PARALLEL SAFE;
  102. CREATE FUNCTION _int_contained_sel(internal, oid, internal, integer)
  103. RETURNS float8
  104. AS 'MODULE_PATHNAME'
  105. LANGUAGE C STRICT STABLE PARALLEL SAFE;
  106. CREATE FUNCTION _int_overlap_joinsel(internal, oid, internal, smallint, internal)
  107. RETURNS float8
  108. AS 'MODULE_PATHNAME'
  109. LANGUAGE C STRICT STABLE PARALLEL SAFE;
  110. CREATE FUNCTION _int_contains_joinsel(internal, oid, internal, smallint, internal)
  111. RETURNS float8
  112. AS 'MODULE_PATHNAME'
  113. LANGUAGE C STRICT STABLE PARALLEL SAFE;
  114. CREATE FUNCTION _int_contained_joinsel(internal, oid, internal, smallint, internal)
  115. RETURNS float8
  116. AS 'MODULE_PATHNAME'
  117. LANGUAGE C STRICT STABLE PARALLEL SAFE;
  118. --
  119. -- OPERATORS
  120. --
  121. CREATE OPERATOR && (
  122. LEFTARG = _int4,
  123. RIGHTARG = _int4,
  124. PROCEDURE = _int_overlap,
  125. COMMUTATOR = '&&',
  126. RESTRICT = _int_overlap_sel,
  127. JOIN = _int_overlap_joinsel
  128. );
  129. --CREATE OPERATOR = (
  130. -- LEFTARG = _int4,
  131. -- RIGHTARG = _int4,
  132. -- PROCEDURE = _int_same,
  133. -- COMMUTATOR = '=',
  134. -- NEGATOR = '<>',
  135. -- RESTRICT = eqsel,
  136. -- JOIN = eqjoinsel,
  137. -- SORT1 = '<',
  138. -- SORT2 = '<'
  139. --);
  140. --CREATE OPERATOR <> (
  141. -- LEFTARG = _int4,
  142. -- RIGHTARG = _int4,
  143. -- PROCEDURE = _int_different,
  144. -- COMMUTATOR = '<>',
  145. -- NEGATOR = '=',
  146. -- RESTRICT = neqsel,
  147. -- JOIN = neqjoinsel
  148. --);
  149. CREATE OPERATOR @> (
  150. LEFTARG = _int4,
  151. RIGHTARG = _int4,
  152. PROCEDURE = _int_contains,
  153. COMMUTATOR = '<@',
  154. RESTRICT = _int_contains_sel,
  155. JOIN = _int_contains_joinsel
  156. );
  157. CREATE OPERATOR <@ (
  158. LEFTARG = _int4,
  159. RIGHTARG = _int4,
  160. PROCEDURE = _int_contained,
  161. COMMUTATOR = '@>',
  162. RESTRICT = _int_contained_sel,
  163. JOIN = _int_contained_joinsel
  164. );
  165. -- obsolete:
  166. CREATE OPERATOR @ (
  167. LEFTARG = _int4,
  168. RIGHTARG = _int4,
  169. PROCEDURE = _int_contains,
  170. COMMUTATOR = '~',
  171. RESTRICT = _int_contains_sel,
  172. JOIN = _int_contains_joinsel
  173. );
  174. CREATE OPERATOR ~ (
  175. LEFTARG = _int4,
  176. RIGHTARG = _int4,
  177. PROCEDURE = _int_contained,
  178. COMMUTATOR = '@',
  179. RESTRICT = _int_contained_sel,
  180. JOIN = _int_contained_joinsel
  181. );
  182. --------------
  183. CREATE FUNCTION intset(int4)
  184. RETURNS _int4
  185. AS 'MODULE_PATHNAME'
  186. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  187. CREATE FUNCTION icount(_int4)
  188. RETURNS int4
  189. AS 'MODULE_PATHNAME'
  190. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  191. CREATE OPERATOR # (
  192. RIGHTARG = _int4,
  193. PROCEDURE = icount
  194. );
  195. CREATE FUNCTION sort(_int4, text)
  196. RETURNS _int4
  197. AS 'MODULE_PATHNAME'
  198. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  199. CREATE FUNCTION sort(_int4)
  200. RETURNS _int4
  201. AS 'MODULE_PATHNAME'
  202. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  203. CREATE FUNCTION sort_asc(_int4)
  204. RETURNS _int4
  205. AS 'MODULE_PATHNAME'
  206. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  207. CREATE FUNCTION sort_desc(_int4)
  208. RETURNS _int4
  209. AS 'MODULE_PATHNAME'
  210. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  211. CREATE FUNCTION uniq(_int4)
  212. RETURNS _int4
  213. AS 'MODULE_PATHNAME'
  214. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  215. CREATE FUNCTION idx(_int4, int4)
  216. RETURNS int4
  217. AS 'MODULE_PATHNAME'
  218. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  219. CREATE OPERATOR # (
  220. LEFTARG = _int4,
  221. RIGHTARG = int4,
  222. PROCEDURE = idx
  223. );
  224. CREATE FUNCTION subarray(_int4, int4, int4)
  225. RETURNS _int4
  226. AS 'MODULE_PATHNAME'
  227. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  228. CREATE FUNCTION subarray(_int4, int4)
  229. RETURNS _int4
  230. AS 'MODULE_PATHNAME'
  231. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  232. CREATE FUNCTION intarray_push_elem(_int4, int4)
  233. RETURNS _int4
  234. AS 'MODULE_PATHNAME'
  235. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  236. CREATE OPERATOR + (
  237. LEFTARG = _int4,
  238. RIGHTARG = int4,
  239. PROCEDURE = intarray_push_elem
  240. );
  241. CREATE FUNCTION intarray_push_array(_int4, _int4)
  242. RETURNS _int4
  243. AS 'MODULE_PATHNAME'
  244. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  245. CREATE OPERATOR + (
  246. LEFTARG = _int4,
  247. RIGHTARG = _int4,
  248. COMMUTATOR = +,
  249. PROCEDURE = intarray_push_array
  250. );
  251. CREATE FUNCTION intarray_del_elem(_int4, int4)
  252. RETURNS _int4
  253. AS 'MODULE_PATHNAME'
  254. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  255. CREATE OPERATOR - (
  256. LEFTARG = _int4,
  257. RIGHTARG = int4,
  258. PROCEDURE = intarray_del_elem
  259. );
  260. CREATE FUNCTION intset_union_elem(_int4, int4)
  261. RETURNS _int4
  262. AS 'MODULE_PATHNAME'
  263. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  264. CREATE OPERATOR | (
  265. LEFTARG = _int4,
  266. RIGHTARG = int4,
  267. PROCEDURE = intset_union_elem
  268. );
  269. CREATE OPERATOR | (
  270. LEFTARG = _int4,
  271. RIGHTARG = _int4,
  272. COMMUTATOR = |,
  273. PROCEDURE = _int_union
  274. );
  275. CREATE FUNCTION intset_subtract(_int4, _int4)
  276. RETURNS _int4
  277. AS 'MODULE_PATHNAME'
  278. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  279. CREATE OPERATOR - (
  280. LEFTARG = _int4,
  281. RIGHTARG = _int4,
  282. PROCEDURE = intset_subtract
  283. );
  284. CREATE OPERATOR & (
  285. LEFTARG = _int4,
  286. RIGHTARG = _int4,
  287. COMMUTATOR = &,
  288. PROCEDURE = _int_inter
  289. );
  290. --------------
  291. -- define the GiST support methods
  292. CREATE FUNCTION g_int_consistent(internal,_int4,smallint,oid,internal)
  293. RETURNS bool
  294. AS 'MODULE_PATHNAME'
  295. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  296. CREATE FUNCTION g_int_compress(internal)
  297. RETURNS internal
  298. AS 'MODULE_PATHNAME'
  299. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  300. CREATE FUNCTION g_int_decompress(internal)
  301. RETURNS internal
  302. AS 'MODULE_PATHNAME'
  303. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  304. CREATE FUNCTION g_int_penalty(internal,internal,internal)
  305. RETURNS internal
  306. AS 'MODULE_PATHNAME'
  307. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  308. CREATE FUNCTION g_int_picksplit(internal, internal)
  309. RETURNS internal
  310. AS 'MODULE_PATHNAME'
  311. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  312. CREATE FUNCTION g_int_union(internal, internal)
  313. RETURNS _int4
  314. AS 'MODULE_PATHNAME'
  315. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  316. CREATE FUNCTION g_int_same(_int4, _int4, internal)
  317. RETURNS internal
  318. AS 'MODULE_PATHNAME'
  319. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  320. -- Create the operator class for indexing
  321. CREATE OPERATOR CLASS gist__int_ops
  322. DEFAULT FOR TYPE _int4 USING gist AS
  323. OPERATOR 3 &&,
  324. OPERATOR 6 = (anyarray, anyarray),
  325. OPERATOR 7 @>,
  326. OPERATOR 8 <@,
  327. OPERATOR 13 @,
  328. OPERATOR 14 ~,
  329. OPERATOR 20 @@ (_int4, query_int),
  330. FUNCTION 1 g_int_consistent (internal, _int4, smallint, oid, internal),
  331. FUNCTION 2 g_int_union (internal, internal),
  332. FUNCTION 3 g_int_compress (internal),
  333. FUNCTION 4 g_int_decompress (internal),
  334. FUNCTION 5 g_int_penalty (internal, internal, internal),
  335. FUNCTION 6 g_int_picksplit (internal, internal),
  336. FUNCTION 7 g_int_same (_int4, _int4, internal);
  337. ---------------------------------------------
  338. -- intbig
  339. ---------------------------------------------
  340. -- define the GiST support methods
  341. CREATE FUNCTION _intbig_in(cstring)
  342. RETURNS intbig_gkey
  343. AS 'MODULE_PATHNAME'
  344. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  345. CREATE FUNCTION _intbig_out(intbig_gkey)
  346. RETURNS cstring
  347. AS 'MODULE_PATHNAME'
  348. LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
  349. CREATE TYPE intbig_gkey (
  350. INTERNALLENGTH = -1,
  351. INPUT = _intbig_in,
  352. OUTPUT = _intbig_out
  353. );
  354. CREATE FUNCTION g_intbig_consistent(internal,_int4,smallint,oid,internal)
  355. RETURNS bool
  356. AS 'MODULE_PATHNAME'
  357. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  358. CREATE FUNCTION g_intbig_compress(internal)
  359. RETURNS internal
  360. AS 'MODULE_PATHNAME'
  361. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  362. CREATE FUNCTION g_intbig_decompress(internal)
  363. RETURNS internal
  364. AS 'MODULE_PATHNAME'
  365. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  366. CREATE FUNCTION g_intbig_penalty(internal,internal,internal)
  367. RETURNS internal
  368. AS 'MODULE_PATHNAME'
  369. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  370. CREATE FUNCTION g_intbig_picksplit(internal, internal)
  371. RETURNS internal
  372. AS 'MODULE_PATHNAME'
  373. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  374. CREATE FUNCTION g_intbig_union(internal, internal)
  375. RETURNS intbig_gkey
  376. AS 'MODULE_PATHNAME'
  377. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  378. CREATE FUNCTION g_intbig_same(intbig_gkey, intbig_gkey, internal)
  379. RETURNS internal
  380. AS 'MODULE_PATHNAME'
  381. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  382. -- register the opclass for indexing (not as default)
  383. CREATE OPERATOR CLASS gist__intbig_ops
  384. FOR TYPE _int4 USING gist
  385. AS
  386. OPERATOR 3 &&,
  387. OPERATOR 6 = (anyarray, anyarray),
  388. OPERATOR 7 @>,
  389. OPERATOR 8 <@,
  390. OPERATOR 13 @,
  391. OPERATOR 14 ~,
  392. OPERATOR 20 @@ (_int4, query_int),
  393. FUNCTION 1 g_intbig_consistent (internal, _int4, smallint, oid, internal),
  394. FUNCTION 2 g_intbig_union (internal, internal),
  395. FUNCTION 3 g_intbig_compress (internal),
  396. FUNCTION 4 g_intbig_decompress (internal),
  397. FUNCTION 5 g_intbig_penalty (internal, internal, internal),
  398. FUNCTION 6 g_intbig_picksplit (internal, internal),
  399. FUNCTION 7 g_intbig_same (intbig_gkey, intbig_gkey, internal),
  400. STORAGE intbig_gkey;
  401. --GIN
  402. CREATE FUNCTION ginint4_queryextract(_int4, internal, int2, internal, internal, internal, internal)
  403. RETURNS internal
  404. AS 'MODULE_PATHNAME'
  405. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  406. CREATE FUNCTION ginint4_consistent(internal, int2, _int4, int4, internal, internal, internal, internal)
  407. RETURNS bool
  408. AS 'MODULE_PATHNAME'
  409. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  410. CREATE OPERATOR CLASS gin__int_ops
  411. FOR TYPE _int4 USING gin
  412. AS
  413. OPERATOR 3 &&,
  414. OPERATOR 6 = (anyarray, anyarray),
  415. OPERATOR 7 @>,
  416. OPERATOR 8 <@,
  417. OPERATOR 13 @,
  418. OPERATOR 14 ~,
  419. OPERATOR 20 @@ (_int4, query_int),
  420. FUNCTION 1 btint4cmp (int4, int4),
  421. FUNCTION 2 ginarrayextract (anyarray, internal, internal),
  422. FUNCTION 3 ginint4_queryextract (_int4, internal, int2, internal, internal, internal, internal),
  423. FUNCTION 4 ginint4_consistent (internal, int2, _int4, int4, internal, internal, internal, internal),
  424. STORAGE int4;
上海开阖软件有限公司 沪ICP备12045867号-1