diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2003-09-14 01:52:25 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2003-09-14 01:52:25 +0000 |
| commit | 03e47392e0c383ea75a1aac9294c4e0f4eb4d20f (patch) | |
| tree | 0723a85e046a0c1d43df1b8b433a5ffea905fd4e /contrib/cube/cube.sql.in | |
| parent | b38c04335a3d09265ef1ccc26cc924b4edc5c9ca (diff) | |
| download | postgresql-03e47392e0c383ea75a1aac9294c4e0f4eb4d20f.tar.gz | |
Make contrib/cube work with flex 2.5.31. Fix it up to have a real
btree operator class, too, since in PG 7.4 you can't GROUP without one.
Diffstat (limited to 'contrib/cube/cube.sql.in')
| -rw-r--r-- | contrib/cube/cube.sql.in | 74 |
1 files changed, 58 insertions, 16 deletions
diff --git a/contrib/cube/cube.sql.in b/contrib/cube/cube.sql.in index 6afcce5aeb..b9b812f581 100644 --- a/contrib/cube/cube.sql.in +++ b/contrib/cube/cube.sql.in @@ -70,6 +70,20 @@ COMMENT ON FUNCTION cube_right(cube, cube) IS 'is right of (NOT IMPLEMENTED)'; -- Comparison methods +CREATE OR REPLACE FUNCTION cube_eq(cube, cube) +RETURNS bool +AS 'MODULE_PATHNAME' +LANGUAGE 'C' IMMUTABLE STRICT; + +COMMENT ON FUNCTION cube_eq(cube, cube) IS 'same as'; + +CREATE OR REPLACE FUNCTION cube_ne(cube, cube) +RETURNS bool +AS 'MODULE_PATHNAME' +LANGUAGE 'C' IMMUTABLE STRICT; + +COMMENT ON FUNCTION cube_ne(cube, cube) IS 'different'; + CREATE OR REPLACE FUNCTION cube_lt(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' @@ -84,40 +98,47 @@ LANGUAGE 'C' IMMUTABLE STRICT; COMMENT ON FUNCTION cube_gt(cube, cube) IS 'greater than'; -CREATE OR REPLACE FUNCTION cube_contains(cube, cube) +CREATE OR REPLACE FUNCTION cube_le(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'C' IMMUTABLE STRICT; -COMMENT ON FUNCTION cube_contains(cube, cube) IS 'contains'; +COMMENT ON FUNCTION cube_le(cube, cube) IS 'lower than or equal to'; -CREATE OR REPLACE FUNCTION cube_contained(cube, cube) +CREATE OR REPLACE FUNCTION cube_ge(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'C' IMMUTABLE STRICT; -COMMENT ON FUNCTION cube_contained(cube, cube) IS 'contained in'; +COMMENT ON FUNCTION cube_ge(cube, cube) IS 'greater than or equal to'; -CREATE OR REPLACE FUNCTION cube_overlap(cube, cube) +CREATE OR REPLACE FUNCTION cube_cmp(cube, cube) +RETURNS int4 +AS 'MODULE_PATHNAME' +LANGUAGE 'C' IMMUTABLE STRICT; + +COMMENT ON FUNCTION cube_cmp(cube, cube) IS 'btree comparison function'; + +CREATE OR REPLACE FUNCTION cube_contains(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'C' IMMUTABLE STRICT; -COMMENT ON FUNCTION cube_overlap(cube, cube) IS 'overlaps'; +COMMENT ON FUNCTION cube_contains(cube, cube) IS 'contains'; -CREATE OR REPLACE FUNCTION cube_same(cube, cube) +CREATE OR REPLACE FUNCTION cube_contained(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'C' IMMUTABLE STRICT; -COMMENT ON FUNCTION cube_same(cube, cube) IS 'same as'; +COMMENT ON FUNCTION cube_contained(cube, cube) IS 'contained in'; -CREATE OR REPLACE FUNCTION cube_different(cube, cube) +CREATE OR REPLACE FUNCTION cube_overlap(cube, cube) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE 'C' IMMUTABLE STRICT; -COMMENT ON FUNCTION cube_different(cube, cube) IS 'different'; +COMMENT ON FUNCTION cube_overlap(cube, cube) IS 'overlaps'; -- support routines for indexing @@ -199,13 +220,25 @@ LANGUAGE 'C' IMMUTABLE STRICT; CREATE OPERATOR < ( LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_lt, - COMMUTATOR = '>', + COMMUTATOR = '>', NEGATOR = '>=', RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR > ( LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_gt, - COMMUTATOR = '<', + COMMUTATOR = '<', NEGATOR = '<=', + RESTRICT = scalargtsel, JOIN = scalargtjoinsel +); + +CREATE OPERATOR <= ( + LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_le, + COMMUTATOR = '>=', NEGATOR = '>', + RESTRICT = scalarltsel, JOIN = scalarltjoinsel +); + +CREATE OPERATOR >= ( + LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_ge, + COMMUTATOR = '<=', NEGATOR = '<', RESTRICT = scalargtsel, JOIN = scalargtjoinsel ); @@ -240,14 +273,14 @@ CREATE OPERATOR >> ( ); CREATE OPERATOR = ( - LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_same, + LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_eq, COMMUTATOR = '=', NEGATOR = '<>', RESTRICT = eqsel, JOIN = eqjoinsel, - SORT1 = '<', SORT2 = '<' + MERGES ); CREATE OPERATOR <> ( - LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_different, + LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_ne, COMMUTATOR = '<>', NEGATOR = '=', RESTRICT = neqsel, JOIN = neqjoinsel ); @@ -302,7 +335,16 @@ AS 'MODULE_PATHNAME' LANGUAGE 'C'; --- Create the operator class for indexing +-- Create the operator classes for indexing + +CREATE OPERATOR CLASS cube_ops + DEFAULT FOR TYPE cube USING btree AS + OPERATOR 1 < , + OPERATOR 2 <= , + OPERATOR 3 = , + OPERATOR 4 >= , + OPERATOR 5 > , + FUNCTION 1 cube_cmp(cube, cube); CREATE OPERATOR CLASS gist_cube_ops DEFAULT FOR TYPE cube USING gist AS |
