diff options
| author | Bruce Momjian | 2002-09-12 00:26:00 +0000 |
|---|---|---|
| committer | Bruce Momjian | 2002-09-12 00:26:00 +0000 |
| commit | e57ab0456506b3f68b4d8f446c58e6677e120294 (patch) | |
| tree | edb12f4d9daa3d3d939affd45845e9be667a8e0f /contrib/cube/cube.sql.in | |
| parent | eb5bf513725d7a51a4a467202b6bb9dbf8417c80 (diff) | |
This is a comprehensive set of diffs (versus current CVS) that replaces those
attached to the same message with the Earth Distance patches.
Recent changes include changing the subscript in one place I forgot
in the previous bugfix patch. A couple of added regression tests, which
should help catch this mistake if it reappears.
I also put in a limit of 100 dimensions in cube_large and cube_in to
prevent making it easy to create very large cubes. Changing one define
in cubedata.h will raise the limit if some needs more dimensions.
Bruno Wolff III
Diffstat (limited to 'contrib/cube/cube.sql.in')
| -rw-r--r-- | contrib/cube/cube.sql.in | 91 |
1 files changed, 58 insertions, 33 deletions
diff --git a/contrib/cube/cube.sql.in b/contrib/cube/cube.sql.in index ecc9215070f..e54f10c0462 100644 --- a/contrib/cube/cube.sql.in +++ b/contrib/cube/cube.sql.in @@ -1,16 +1,16 @@ -- Create the user-defined type for N-dimensional boxes -- -BEGIN TRANSACTION; +BEGIN; -- Adjust this setting to control where the objects get created. SET search_path = public; -CREATE FUNCTION cube_in(cstring) +CREATE OR REPLACE FUNCTION cube_in(cstring) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c'IMMUTABLE STRICT; -CREATE FUNCTION cube_out(cube) +CREATE OR REPLACE FUNCTION cube_out(cube) RETURNS cstring AS 'MODULE_PATHNAME' LANGUAGE 'c'IMMUTABLE STRICT; @@ -26,8 +26,7 @@ COMMENT ON TYPE cube IS -- Convert from text to cube -CREATE FUNCTION cube(text) -RETURNS cube +CREATE OR REPLACE FUNCTION cube(text) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; @@ -40,25 +39,25 @@ COMMENT ON FUNCTION cube(text) IS -- Left/Right methods -CREATE FUNCTION cube_over_left(cube, cube) RETURNS bool +CREATE OR REPLACE FUNCTION cube_over_left(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_over_left(cube, cube) IS 'is over and left of (NOT IMPLEMENTED)'; -CREATE FUNCTION cube_over_right(cube, cube) RETURNS bool +CREATE OR REPLACE FUNCTION cube_over_right(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_over_right(cube, cube) IS 'is over and right of (NOT IMPLEMENTED)'; -CREATE FUNCTION cube_left(cube, cube) RETURNS bool +CREATE OR REPLACE FUNCTION cube_left(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_left(cube, cube) IS 'is left of (NOT IMPLEMENTED)'; -CREATE FUNCTION cube_right(cube, cube) RETURNS bool +CREATE OR REPLACE FUNCTION cube_right(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_right(cube, cube) IS @@ -67,43 +66,43 @@ COMMENT ON FUNCTION cube_right(cube, cube) IS -- Comparison methods -CREATE FUNCTION cube_lt(cube, cube) RETURNS bool +CREATE OR REPLACE FUNCTION cube_lt(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_lt(cube, cube) IS 'lower than'; -CREATE FUNCTION cube_gt(cube, cube) RETURNS bool +CREATE OR REPLACE FUNCTION cube_gt(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_gt(cube, cube) IS 'greater than'; -CREATE FUNCTION cube_contains(cube, cube) RETURNS bool +CREATE OR REPLACE FUNCTION cube_contains(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_contains(cube, cube) IS 'contains'; -CREATE FUNCTION cube_contained(cube, cube) RETURNS bool +CREATE OR REPLACE FUNCTION cube_contained(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_contained(cube, cube) IS 'contained in'; -CREATE FUNCTION cube_overlap(cube, cube) RETURNS bool +CREATE OR REPLACE FUNCTION cube_overlap(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_overlap(cube, cube) IS 'overlaps'; -CREATE FUNCTION cube_same(cube, cube) RETURNS bool +CREATE OR REPLACE FUNCTION cube_same(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_same(cube, cube) IS 'same as'; -CREATE FUNCTION cube_different(cube, cube) RETURNS bool +CREATE OR REPLACE FUNCTION cube_different(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_different(cube, cube) IS @@ -111,13 +110,13 @@ COMMENT ON FUNCTION cube_different(cube, cube) IS -- support routines for indexing -CREATE FUNCTION cube_union(cube, cube) RETURNS cube +CREATE OR REPLACE FUNCTION cube_union(cube, cube) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; -CREATE FUNCTION cube_inter(cube, cube) RETURNS cube +CREATE OR REPLACE FUNCTION cube_inter(cube, cube) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; -CREATE FUNCTION cube_size(cube) RETURNS float8 +CREATE OR REPLACE FUNCTION cube_size(cube) RETURNS float8 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; @@ -125,28 +124,28 @@ CREATE FUNCTION cube_size(cube) RETURNS float8 -- proximity routines -CREATE FUNCTION cube_distance(cube, cube) RETURNS float8 +CREATE OR REPLACE FUNCTION cube_distance(cube, cube) RETURNS float8 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; -- Extracting elements functions -CREATE FUNCTION cube_dim(cube) RETURNS int4 +CREATE OR REPLACE FUNCTION cube_dim(cube) RETURNS int4 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; -CREATE FUNCTION cube_ll_coord(cube, int4) RETURNS float8 +CREATE OR REPLACE FUNCTION cube_ll_coord(cube, int4) RETURNS float8 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; -CREATE FUNCTION cube_ur_coord(cube, int4) RETURNS float8 +CREATE OR REPLACE FUNCTION cube_ur_coord(cube, int4) RETURNS float8 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; -- Test if cube is also a point -CREATE FUNCTION cube_is_point(cube) RETURNS bool +CREATE OR REPLACE FUNCTION cube_is_point(cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; -- Increasing the size of a cube by a radius in at least n dimensions -CREATE FUNCTION cube_enlarge(cube, float8, int4) RETURNS cube +CREATE OR REPLACE FUNCTION cube_enlarge(cube, float8, int4) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; -- @@ -222,25 +221,25 @@ CREATE OPERATOR ~ ( -- define the GiST support methods -CREATE FUNCTION g_cube_consistent(internal,cube,int4) RETURNS bool +CREATE OR REPLACE FUNCTION g_cube_consistent(internal,cube,int4) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c'; -CREATE FUNCTION g_cube_compress(internal) RETURNS internal +CREATE OR REPLACE FUNCTION g_cube_compress(internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c'; -CREATE FUNCTION g_cube_decompress(internal) RETURNS internal +CREATE OR REPLACE FUNCTION g_cube_decompress(internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c'; -CREATE FUNCTION g_cube_penalty(internal,internal,internal) RETURNS internal +CREATE OR REPLACE FUNCTION g_cube_penalty(internal,internal,internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c' STRICT; -CREATE FUNCTION g_cube_picksplit(internal, internal) RETURNS internal +CREATE OR REPLACE FUNCTION g_cube_picksplit(internal, internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c'; -CREATE FUNCTION g_cube_union(bytea, internal) RETURNS cube +CREATE OR REPLACE FUNCTION g_cube_union(bytea, internal) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c'; -CREATE FUNCTION g_cube_same(cube, cube, internal) RETURNS internal +CREATE OR REPLACE FUNCTION g_cube_same(cube, cube, internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c'; @@ -264,5 +263,31 @@ CREATE OPERATOR CLASS gist_cube_ops FUNCTION 6 g_cube_picksplit (internal, internal), FUNCTION 7 g_cube_same (cube, cube, internal); +-- +-- By default the externally visible functions are made executable by +-- anyone. To restrict their access comment out the following grant commands. +-- -END TRANSACTION; +GRANT EXECUTE ON FUNCTION cube(text) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_over_left(cube, cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_over_right(cube, cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_left(cube, cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_right(cube, cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_lt(cube, cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_gt(cube, cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_contains(cube, cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_contained(cube, cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_overlap(cube, cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_same(cube, cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_different(cube, cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_union(cube, cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_inter(cube, cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_size(cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_distance(cube, cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_dim(cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_ll_coord(cube, int4) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_ur_coord(cube, int4) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_is_point(cube) TO PUBLIC; +GRANT EXECUTE ON FUNCTION cube_enlarge(cube, float8, int4) TO PUBLIC; + +COMMIT; |
