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ů.

379 lines
9.5KB

  1. /* contrib/cube/cube--1.2.sql */
  2. -- complain if script is sourced in psql, rather than via CREATE EXTENSION
  3. \echo Use "CREATE EXTENSION cube" to load this file. \quit
  4. -- Create the user-defined type for N-dimensional boxes
  5. CREATE FUNCTION cube_in(cstring)
  6. RETURNS cube
  7. AS 'MODULE_PATHNAME'
  8. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  9. CREATE FUNCTION cube(float8[], float8[]) RETURNS cube
  10. AS 'MODULE_PATHNAME', 'cube_a_f8_f8'
  11. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  12. CREATE FUNCTION cube(float8[]) RETURNS cube
  13. AS 'MODULE_PATHNAME', 'cube_a_f8'
  14. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  15. CREATE FUNCTION cube_out(cube)
  16. RETURNS cstring
  17. AS 'MODULE_PATHNAME'
  18. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  19. CREATE TYPE cube (
  20. INTERNALLENGTH = variable,
  21. INPUT = cube_in,
  22. OUTPUT = cube_out,
  23. ALIGNMENT = double
  24. );
  25. COMMENT ON TYPE cube IS 'multi-dimensional cube ''(FLOAT-1, FLOAT-2, ..., FLOAT-N), (FLOAT-1, FLOAT-2, ..., FLOAT-N)''';
  26. --
  27. -- External C-functions for R-tree methods
  28. --
  29. -- Comparison methods
  30. CREATE FUNCTION cube_eq(cube, cube)
  31. RETURNS bool
  32. AS 'MODULE_PATHNAME'
  33. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  34. COMMENT ON FUNCTION cube_eq(cube, cube) IS 'same as';
  35. CREATE FUNCTION cube_ne(cube, cube)
  36. RETURNS bool
  37. AS 'MODULE_PATHNAME'
  38. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  39. COMMENT ON FUNCTION cube_ne(cube, cube) IS 'different';
  40. CREATE FUNCTION cube_lt(cube, cube)
  41. RETURNS bool
  42. AS 'MODULE_PATHNAME'
  43. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  44. COMMENT ON FUNCTION cube_lt(cube, cube) IS 'lower than';
  45. CREATE FUNCTION cube_gt(cube, cube)
  46. RETURNS bool
  47. AS 'MODULE_PATHNAME'
  48. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  49. COMMENT ON FUNCTION cube_gt(cube, cube) IS 'greater than';
  50. CREATE FUNCTION cube_le(cube, cube)
  51. RETURNS bool
  52. AS 'MODULE_PATHNAME'
  53. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  54. COMMENT ON FUNCTION cube_le(cube, cube) IS 'lower than or equal to';
  55. CREATE FUNCTION cube_ge(cube, cube)
  56. RETURNS bool
  57. AS 'MODULE_PATHNAME'
  58. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  59. COMMENT ON FUNCTION cube_ge(cube, cube) IS 'greater than or equal to';
  60. CREATE FUNCTION cube_cmp(cube, cube)
  61. RETURNS int4
  62. AS 'MODULE_PATHNAME'
  63. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  64. COMMENT ON FUNCTION cube_cmp(cube, cube) IS 'btree comparison function';
  65. CREATE FUNCTION cube_contains(cube, cube)
  66. RETURNS bool
  67. AS 'MODULE_PATHNAME'
  68. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  69. COMMENT ON FUNCTION cube_contains(cube, cube) IS 'contains';
  70. CREATE FUNCTION cube_contained(cube, cube)
  71. RETURNS bool
  72. AS 'MODULE_PATHNAME'
  73. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  74. COMMENT ON FUNCTION cube_contained(cube, cube) IS 'contained in';
  75. CREATE FUNCTION cube_overlap(cube, cube)
  76. RETURNS bool
  77. AS 'MODULE_PATHNAME'
  78. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  79. COMMENT ON FUNCTION cube_overlap(cube, cube) IS 'overlaps';
  80. -- support routines for indexing
  81. CREATE FUNCTION cube_union(cube, cube)
  82. RETURNS cube
  83. AS 'MODULE_PATHNAME'
  84. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  85. CREATE FUNCTION cube_inter(cube, cube)
  86. RETURNS cube
  87. AS 'MODULE_PATHNAME'
  88. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  89. CREATE FUNCTION cube_size(cube)
  90. RETURNS float8
  91. AS 'MODULE_PATHNAME'
  92. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  93. -- Misc N-dimensional functions
  94. CREATE FUNCTION cube_subset(cube, int4[])
  95. RETURNS cube
  96. AS 'MODULE_PATHNAME'
  97. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  98. -- proximity routines
  99. CREATE FUNCTION cube_distance(cube, cube)
  100. RETURNS float8
  101. AS 'MODULE_PATHNAME'
  102. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  103. CREATE FUNCTION distance_chebyshev(cube, cube)
  104. RETURNS float8
  105. AS 'MODULE_PATHNAME'
  106. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  107. CREATE FUNCTION distance_taxicab(cube, cube)
  108. RETURNS float8
  109. AS 'MODULE_PATHNAME'
  110. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  111. -- Extracting elements functions
  112. CREATE FUNCTION cube_dim(cube)
  113. RETURNS int4
  114. AS 'MODULE_PATHNAME'
  115. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  116. CREATE FUNCTION cube_ll_coord(cube, int4)
  117. RETURNS float8
  118. AS 'MODULE_PATHNAME'
  119. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  120. CREATE FUNCTION cube_ur_coord(cube, int4)
  121. RETURNS float8
  122. AS 'MODULE_PATHNAME'
  123. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  124. CREATE FUNCTION cube_coord(cube, int4)
  125. RETURNS float8
  126. AS 'MODULE_PATHNAME'
  127. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  128. CREATE FUNCTION cube_coord_llur(cube, int4)
  129. RETURNS float8
  130. AS 'MODULE_PATHNAME'
  131. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  132. CREATE FUNCTION cube(float8) RETURNS cube
  133. AS 'MODULE_PATHNAME', 'cube_f8'
  134. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  135. CREATE FUNCTION cube(float8, float8) RETURNS cube
  136. AS 'MODULE_PATHNAME', 'cube_f8_f8'
  137. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  138. CREATE FUNCTION cube(cube, float8) RETURNS cube
  139. AS 'MODULE_PATHNAME', 'cube_c_f8'
  140. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  141. CREATE FUNCTION cube(cube, float8, float8) RETURNS cube
  142. AS 'MODULE_PATHNAME', 'cube_c_f8_f8'
  143. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  144. -- Test if cube is also a point
  145. CREATE FUNCTION cube_is_point(cube)
  146. RETURNS bool
  147. AS 'MODULE_PATHNAME'
  148. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  149. -- Increasing the size of a cube by a radius in at least n dimensions
  150. CREATE FUNCTION cube_enlarge(cube, float8, int4)
  151. RETURNS cube
  152. AS 'MODULE_PATHNAME'
  153. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  154. --
  155. -- OPERATORS
  156. --
  157. CREATE OPERATOR < (
  158. LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_lt,
  159. COMMUTATOR = '>', NEGATOR = '>=',
  160. RESTRICT = scalarltsel, JOIN = scalarltjoinsel
  161. );
  162. CREATE OPERATOR > (
  163. LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_gt,
  164. COMMUTATOR = '<', NEGATOR = '<=',
  165. RESTRICT = scalargtsel, JOIN = scalargtjoinsel
  166. );
  167. CREATE OPERATOR <= (
  168. LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_le,
  169. COMMUTATOR = '>=', NEGATOR = '>',
  170. RESTRICT = scalarltsel, JOIN = scalarltjoinsel
  171. );
  172. CREATE OPERATOR >= (
  173. LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_ge,
  174. COMMUTATOR = '<=', NEGATOR = '<',
  175. RESTRICT = scalargtsel, JOIN = scalargtjoinsel
  176. );
  177. CREATE OPERATOR && (
  178. LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_overlap,
  179. COMMUTATOR = '&&',
  180. RESTRICT = areasel, JOIN = areajoinsel
  181. );
  182. CREATE OPERATOR = (
  183. LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_eq,
  184. COMMUTATOR = '=', NEGATOR = '<>',
  185. RESTRICT = eqsel, JOIN = eqjoinsel,
  186. MERGES
  187. );
  188. CREATE OPERATOR <> (
  189. LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_ne,
  190. COMMUTATOR = '<>', NEGATOR = '=',
  191. RESTRICT = neqsel, JOIN = neqjoinsel
  192. );
  193. CREATE OPERATOR @> (
  194. LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contains,
  195. COMMUTATOR = '<@',
  196. RESTRICT = contsel, JOIN = contjoinsel
  197. );
  198. CREATE OPERATOR <@ (
  199. LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contained,
  200. COMMUTATOR = '@>',
  201. RESTRICT = contsel, JOIN = contjoinsel
  202. );
  203. CREATE OPERATOR -> (
  204. LEFTARG = cube, RIGHTARG = int, PROCEDURE = cube_coord
  205. );
  206. CREATE OPERATOR ~> (
  207. LEFTARG = cube, RIGHTARG = int, PROCEDURE = cube_coord_llur
  208. );
  209. CREATE OPERATOR <#> (
  210. LEFTARG = cube, RIGHTARG = cube, PROCEDURE = distance_taxicab,
  211. COMMUTATOR = '<#>'
  212. );
  213. CREATE OPERATOR <-> (
  214. LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_distance,
  215. COMMUTATOR = '<->'
  216. );
  217. CREATE OPERATOR <=> (
  218. LEFTARG = cube, RIGHTARG = cube, PROCEDURE = distance_chebyshev,
  219. COMMUTATOR = '<=>'
  220. );
  221. -- these are obsolete/deprecated:
  222. CREATE OPERATOR @ (
  223. LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contains,
  224. COMMUTATOR = '~',
  225. RESTRICT = contsel, JOIN = contjoinsel
  226. );
  227. CREATE OPERATOR ~ (
  228. LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contained,
  229. COMMUTATOR = '@',
  230. RESTRICT = contsel, JOIN = contjoinsel
  231. );
  232. -- define the GiST support methods
  233. CREATE FUNCTION g_cube_consistent(internal,cube,smallint,oid,internal)
  234. RETURNS bool
  235. AS 'MODULE_PATHNAME'
  236. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  237. CREATE FUNCTION g_cube_compress(internal)
  238. RETURNS internal
  239. AS 'MODULE_PATHNAME'
  240. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  241. CREATE FUNCTION g_cube_decompress(internal)
  242. RETURNS internal
  243. AS 'MODULE_PATHNAME'
  244. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  245. CREATE FUNCTION g_cube_penalty(internal,internal,internal)
  246. RETURNS internal
  247. AS 'MODULE_PATHNAME'
  248. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  249. CREATE FUNCTION g_cube_picksplit(internal, internal)
  250. RETURNS internal
  251. AS 'MODULE_PATHNAME'
  252. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  253. CREATE FUNCTION g_cube_union(internal, internal)
  254. RETURNS cube
  255. AS 'MODULE_PATHNAME'
  256. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  257. CREATE FUNCTION g_cube_same(cube, cube, internal)
  258. RETURNS internal
  259. AS 'MODULE_PATHNAME'
  260. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  261. CREATE FUNCTION g_cube_distance (internal, cube, smallint, oid, internal)
  262. RETURNS float8
  263. AS 'MODULE_PATHNAME'
  264. LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
  265. -- Create the operator classes for indexing
  266. CREATE OPERATOR CLASS cube_ops
  267. DEFAULT FOR TYPE cube USING btree AS
  268. OPERATOR 1 < ,
  269. OPERATOR 2 <= ,
  270. OPERATOR 3 = ,
  271. OPERATOR 4 >= ,
  272. OPERATOR 5 > ,
  273. FUNCTION 1 cube_cmp(cube, cube);
  274. CREATE OPERATOR CLASS gist_cube_ops
  275. DEFAULT FOR TYPE cube USING gist AS
  276. OPERATOR 3 && ,
  277. OPERATOR 6 = ,
  278. OPERATOR 7 @> ,
  279. OPERATOR 8 <@ ,
  280. OPERATOR 13 @ ,
  281. OPERATOR 14 ~ ,
  282. OPERATOR 15 ~> (cube, int) FOR ORDER BY float_ops,
  283. OPERATOR 16 <#> (cube, cube) FOR ORDER BY float_ops,
  284. OPERATOR 17 <-> (cube, cube) FOR ORDER BY float_ops,
  285. OPERATOR 18 <=> (cube, cube) FOR ORDER BY float_ops,
  286. FUNCTION 1 g_cube_consistent (internal, cube, smallint, oid, internal),
  287. FUNCTION 2 g_cube_union (internal, internal),
  288. FUNCTION 3 g_cube_compress (internal),
  289. FUNCTION 4 g_cube_decompress (internal),
  290. FUNCTION 5 g_cube_penalty (internal, internal, internal),
  291. FUNCTION 6 g_cube_picksplit (internal, internal),
  292. FUNCTION 7 g_cube_same (cube, cube, internal),
  293. FUNCTION 8 g_cube_distance (internal, cube, smallint, oid, internal);
上海开阖软件有限公司 沪ICP备12045867号-1