diff -c -N -r cube.old/CHANGES cube/CHANGES *** cube.old/CHANGES Sun Sep 8 00:25:11 2002 --- cube/CHANGES Sun Sep 8 00:40:29 2002 *************** *** 94,97 **** --- 94,103 ---- I added documentation for cube_distance and the new functions to README.cube as well as making a few other minor changes. + I changed create function to create or replace function in the install + script. + + I added commented (out) grant statements to the install script to make the + functions executable to everyone. + Bruno Wolff III diff -c -N -r cube.old/cube.sql.in cube/cube.sql.in *** cube.old/cube.sql.in Sun Sep 8 00:25:11 2002 --- cube/cube.sql.in Sun Sep 8 00:45:35 2002 *************** *** 1,16 **** -- Create the user-defined type for N-dimensional boxes -- ! BEGIN TRANSACTION; -- Adjust this setting to control where the objects get created. SET search_path = public; ! CREATE FUNCTION cube_in(cstring) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c'IMMUTABLE STRICT; ! CREATE FUNCTION cube_out(cube) RETURNS cstring AS 'MODULE_PATHNAME' LANGUAGE 'c'IMMUTABLE STRICT; --- 1,16 ---- -- Create the user-defined type for N-dimensional boxes -- ! BEGIN; -- Adjust this setting to control where the objects get created. SET search_path = public; ! CREATE OR REPLACE FUNCTION cube_in(cstring) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c'IMMUTABLE STRICT; ! CREATE OR REPLACE FUNCTION cube_out(cube) RETURNS cstring AS 'MODULE_PATHNAME' LANGUAGE 'c'IMMUTABLE STRICT; *************** *** 26,33 **** -- Convert from text to cube ! CREATE FUNCTION cube(text) ! RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; --- 26,32 ---- -- Convert from text to cube ! CREATE OR REPLACE FUNCTION cube(text) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; *************** *** 40,64 **** -- Left/Right methods ! CREATE 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 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 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 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_right(cube, cube) IS --- 39,63 ---- -- Left/Right methods ! 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 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 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 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,109 **** -- Comparison methods ! CREATE 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 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 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_contains(cube, cube) IS 'contains'; ! CREATE 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 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_overlap(cube, cube) IS 'overlaps'; ! CREATE 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 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_different(cube, cube) IS --- 66,108 ---- -- Comparison methods ! 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 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 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 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 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 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 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,123 **** -- support routines for indexing ! CREATE FUNCTION cube_union(cube, cube) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; ! CREATE FUNCTION cube_inter(cube, cube) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; ! CREATE FUNCTION cube_size(cube) RETURNS float8 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; --- 110,122 ---- -- support routines for indexing ! CREATE OR REPLACE FUNCTION cube_union(cube, cube) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; ! CREATE OR REPLACE FUNCTION cube_inter(cube, cube) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; ! CREATE OR REPLACE FUNCTION cube_size(cube) RETURNS float8 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; *************** *** 125,152 **** -- proximity routines ! CREATE FUNCTION cube_distance(cube, cube) RETURNS float8 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; -- Extracting elements functions ! CREATE FUNCTION cube_dim(cube) RETURNS int4 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; ! CREATE FUNCTION cube_ll_coord(cube, int4) RETURNS float8 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; ! CREATE 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 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 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; -- --- 124,151 ---- -- proximity routines ! CREATE OR REPLACE FUNCTION cube_distance(cube, cube) RETURNS float8 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; -- Extracting elements functions ! CREATE OR REPLACE FUNCTION cube_dim(cube) RETURNS int4 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; ! CREATE OR REPLACE FUNCTION cube_ll_coord(cube, int4) RETURNS float8 AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; ! 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 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 OR REPLACE FUNCTION cube_enlarge(cube, float8, int4) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT; -- *************** *** 222,246 **** -- define the GiST support methods ! CREATE FUNCTION g_cube_consistent(internal,cube,int4) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c'; ! CREATE FUNCTION g_cube_compress(internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c'; ! CREATE FUNCTION g_cube_decompress(internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c'; ! CREATE FUNCTION g_cube_penalty(internal,internal,internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c' STRICT; ! CREATE FUNCTION g_cube_picksplit(internal, internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c'; ! CREATE FUNCTION g_cube_union(bytea, internal) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c'; ! CREATE FUNCTION g_cube_same(cube, cube, internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c'; --- 221,245 ---- -- define the GiST support methods ! CREATE OR REPLACE FUNCTION g_cube_consistent(internal,cube,int4) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'c'; ! CREATE OR REPLACE FUNCTION g_cube_compress(internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c'; ! CREATE OR REPLACE FUNCTION g_cube_decompress(internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c'; ! CREATE OR REPLACE FUNCTION g_cube_penalty(internal,internal,internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c' STRICT; ! CREATE OR REPLACE FUNCTION g_cube_picksplit(internal, internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c'; ! CREATE OR REPLACE FUNCTION g_cube_union(bytea, internal) RETURNS cube AS 'MODULE_PATHNAME' LANGUAGE 'c'; ! CREATE OR REPLACE FUNCTION g_cube_same(cube, cube, internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE 'c'; *************** *** 264,268 **** FUNCTION 6 g_cube_picksplit (internal, internal), FUNCTION 7 g_cube_same (cube, cube, internal); ! END TRANSACTION; --- 263,293 ---- FUNCTION 6 g_cube_picksplit (internal, internal), FUNCTION 7 g_cube_same (cube, cube, internal); + -- + -- To make these functions (excepting the internal ones needed for gist and I/O) + -- executable by everyone, uncomment the following lines before installing. + -- + + -- 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;