-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdevice_type--0.0.2.sql
156 lines (134 loc) · 4.81 KB
/
device_type--0.0.2.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
CREATE FUNCTION device_type_in(cstring)
RETURNS device_type
AS '$libdir/device_type'
LANGUAGE C IMMUTABLE STRICT;
CREATE FUNCTION device_type_out(device_type)
RETURNS cstring
AS '$libdir/device_type'
LANGUAGE C IMMUTABLE STRICT;
CREATE FUNCTION device_type_recv(internal)
RETURNS device_type
AS '$libdir/device_type'
LANGUAGE C IMMUTABLE STRICT;
CREATE FUNCTION device_type_send(device_type)
RETURNS bytea
AS '$libdir/device_type'
LANGUAGE C IMMUTABLE STRICT;
CREATE TYPE device_type (
INPUT = device_type_in,
OUTPUT = device_type_out,
RECEIVE = device_type_recv,
SEND = device_type_send,
LIKE = "char",
CATEGORY = 'S'
);
COMMENT ON TYPE device_type IS 'a device_type internaly stored as uint8';
CREATE FUNCTION device_type_eq(device_type, device_type)
RETURNS boolean LANGUAGE C IMMUTABLE AS '$libdir/device_type';
CREATE FUNCTION device_type_ne(device_type, device_type)
RETURNS boolean LANGUAGE C IMMUTABLE AS '$libdir/device_type';
CREATE FUNCTION device_type_lt(device_type, device_type)
RETURNS boolean LANGUAGE C IMMUTABLE AS '$libdir/device_type';
CREATE FUNCTION device_type_le(device_type, device_type)
RETURNS boolean LANGUAGE C IMMUTABLE AS '$libdir/device_type';
CREATE FUNCTION device_type_gt(device_type, device_type)
RETURNS boolean LANGUAGE C IMMUTABLE AS '$libdir/device_type';
CREATE FUNCTION device_type_ge(device_type, device_type)
RETURNS boolean LANGUAGE C IMMUTABLE AS '$libdir/device_type';
CREATE FUNCTION device_type_cmp(device_type, device_type)
RETURNS integer LANGUAGE C IMMUTABLE AS '$libdir/device_type';
CREATE FUNCTION hash_device_type(device_type)
RETURNS integer LANGUAGE C IMMUTABLE AS '$libdir/device_type';
DO $$
DECLARE version_num integer;
BEGIN
SELECT current_setting('server_version_num') INTO STRICT version_num;
IF version_num > 90600 THEN
EXECUTE $E$ ALTER FUNCTION device_type_in(cstring) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION device_type_out(device_type) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION device_type_recv(internal) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION device_type_send(device_type) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION device_type_eq(device_type, device_type) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION device_type_ne(device_type, device_type) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION device_type_lt(device_type, device_type) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION device_type_le(device_type, device_type) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION device_type_gt(device_type, device_type) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION device_type_ge(device_type, device_type) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION device_type_cmp(device_type, device_type) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION hash_device_type(device_type) PARALLEL SAFE $E$;
END IF;
END;
$$;
CREATE OPERATOR = (
LEFTARG = device_type,
RIGHTARG = device_type,
PROCEDURE = device_type_eq,
COMMUTATOR = '=',
NEGATOR = '<>',
RESTRICT = eqsel,
JOIN = eqjoinsel
);
COMMENT ON OPERATOR =(device_type, device_type) IS 'equals?';
CREATE OPERATOR <> (
LEFTARG = device_type,
RIGHTARG = device_type,
PROCEDURE = device_type_ne,
COMMUTATOR = '<>',
NEGATOR = '=',
RESTRICT = neqsel,
JOIN = neqjoinsel
);
COMMENT ON OPERATOR <>(device_type, device_type) IS 'not equals?';
CREATE OPERATOR < (
LEFTARG = device_type,
RIGHTARG = device_type,
PROCEDURE = device_type_lt,
COMMUTATOR = > ,
NEGATOR = >= ,
RESTRICT = scalarltsel,
JOIN = scalarltjoinsel
);
COMMENT ON OPERATOR <(device_type, device_type) IS 'less-than';
CREATE OPERATOR <= (
LEFTARG = device_type,
RIGHTARG = device_type,
PROCEDURE = device_type_le,
COMMUTATOR = >= ,
NEGATOR = > ,
RESTRICT = scalarltsel,
JOIN = scalarltjoinsel
);
COMMENT ON OPERATOR <=(device_type, device_type) IS 'less-than-or-equal';
CREATE OPERATOR > (
LEFTARG = device_type,
RIGHTARG = device_type,
PROCEDURE = device_type_gt,
COMMUTATOR = < ,
NEGATOR = <= ,
RESTRICT = scalargtsel,
JOIN = scalargtjoinsel
);
COMMENT ON OPERATOR >(device_type, device_type) IS 'greater-than';
CREATE OPERATOR >= (
LEFTARG = device_type,
RIGHTARG = device_type,
PROCEDURE = device_type_ge,
COMMUTATOR = <= ,
NEGATOR = < ,
RESTRICT = scalargtsel,
JOIN = scalargtjoinsel
);
COMMENT ON OPERATOR >=(device_type, device_type) IS 'greater-than-or-equal';
CREATE OPERATOR CLASS btree_device_type_ops
DEFAULT FOR TYPE device_type USING btree
AS
OPERATOR 1 < ,
OPERATOR 2 <= ,
OPERATOR 3 = ,
OPERATOR 4 >= ,
OPERATOR 5 > ,
FUNCTION 1 device_type_cmp(device_type, device_type);
CREATE OPERATOR CLASS hash_device_type_ops
DEFAULT FOR TYPE device_type USING hash AS
OPERATOR 1 = ,
FUNCTION 1 hash_device_type(device_type);