summaryrefslogtreecommitdiff
path: root/contrib/seg/seg.sql.in
diff options
context:
space:
mode:
authorTom Lane2003-09-14 02:18:49 +0000
committerTom Lane2003-09-14 02:18:49 +0000
commit043be9ad9647a0e407f22b7718d632c113953dc8 (patch)
tree8f5e19e5759bae9d19d05b67fa1295237d25027b /contrib/seg/seg.sql.in
parent03e47392e0c383ea75a1aac9294c4e0f4eb4d20f (diff)
Make contrib/seg 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/seg/seg.sql.in')
-rw-r--r--contrib/seg/seg.sql.in25
1 files changed, 20 insertions, 5 deletions
diff --git a/contrib/seg/seg.sql.in b/contrib/seg/seg.sql.in
index a1e7e0cf488..2bfd96593dc 100644
--- a/contrib/seg/seg.sql.in
+++ b/contrib/seg/seg.sql.in
@@ -7,12 +7,12 @@ SET search_path = public;
CREATE FUNCTION seg_in(cstring)
RETURNS seg
AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE 'C' IMMUTABLE STRICT;
CREATE FUNCTION seg_out(seg)
RETURNS cstring
AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE 'C' IMMUTABLE STRICT;
CREATE TYPE seg (
INTERNALLENGTH = 12,
@@ -138,6 +138,13 @@ COMMENT ON FUNCTION seg_different(seg, seg) IS
-- support routines for indexing
+CREATE OR REPLACE FUNCTION seg_cmp(seg, seg)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' STRICT;
+
+COMMENT ON FUNCTION seg_cmp(seg, seg) IS 'btree comparison function';
+
CREATE FUNCTION seg_union(seg, seg)
RETURNS seg
AS 'MODULE_PATHNAME'
@@ -263,8 +270,7 @@ CREATE OPERATOR = (
NEGATOR = '<>',
RESTRICT = eqsel,
JOIN = eqjoinsel,
- SORT1 = '<',
- SORT2 = '<'
+ MERGES
);
CREATE OPERATOR <> (
@@ -333,7 +339,16 @@ AS 'MODULE_PATHNAME'
LANGUAGE 'C';
--- Create the operator class for indexing
+-- Create the operator classes for indexing
+
+CREATE OPERATOR CLASS seg_ops
+ DEFAULT FOR TYPE seg USING btree AS
+ OPERATOR 1 < ,
+ OPERATOR 2 <= ,
+ OPERATOR 3 = ,
+ OPERATOR 4 >= ,
+ OPERATOR 5 > ,
+ FUNCTION 1 seg_cmp(seg, seg);
CREATE OPERATOR CLASS gist_seg_ops
DEFAULT FOR TYPE seg USING gist