1SET client_min_messages = warning; 2 3 4CREATE TYPE uri; 5 6CREATE FUNCTION uri_in(cstring) RETURNS uri 7 IMMUTABLE 8 STRICT 9 LANGUAGE C 10 AS '$libdir/uri'; 11 12CREATE FUNCTION uri_out(uri) RETURNS cstring 13 IMMUTABLE 14 STRICT 15 LANGUAGE C 16 AS '$libdir/uri'; 17 18CREATE TYPE uri ( 19 INTERNALLENGTH = -1, 20 INPUT = uri_in, 21 OUTPUT = uri_out 22); 23 24 25CREATE CAST (uri AS text) WITH INOUT AS ASSIGNMENT; 26CREATE CAST (text AS uri) WITH INOUT AS ASSIGNMENT; 27 28 29CREATE FUNCTION uri_scheme(uri) RETURNS text 30 IMMUTABLE 31 STRICT 32 LANGUAGE C 33 AS '$libdir/uri'; 34 35CREATE FUNCTION uri_userinfo(uri) RETURNS text 36 IMMUTABLE 37 STRICT 38 LANGUAGE C 39 AS '$libdir/uri'; 40 41CREATE FUNCTION uri_host(uri) RETURNS text 42 IMMUTABLE 43 STRICT 44 LANGUAGE C 45 AS '$libdir/uri'; 46 47CREATE FUNCTION uri_host_inet(uri) RETURNS inet 48 IMMUTABLE 49 STRICT 50 LANGUAGE C 51 AS '$libdir/uri'; 52 53CREATE FUNCTION uri_port(uri) RETURNS integer 54 IMMUTABLE 55 STRICT 56 LANGUAGE C 57 AS '$libdir/uri'; 58 59CREATE FUNCTION uri_query(uri) RETURNS text 60 IMMUTABLE 61 STRICT 62 LANGUAGE C 63 AS '$libdir/uri'; 64 65CREATE FUNCTION uri_fragment(uri) RETURNS text 66 IMMUTABLE 67 STRICT 68 LANGUAGE C 69 AS '$libdir/uri'; 70 71CREATE FUNCTION uri_path(uri) RETURNS text 72 IMMUTABLE 73 STRICT 74 LANGUAGE C 75 AS '$libdir/uri'; 76 77CREATE FUNCTION uri_path_array(uri) RETURNS text[] 78 IMMUTABLE 79 STRICT 80 LANGUAGE C 81 AS '$libdir/uri'; 82 83 84CREATE FUNCTION uri_normalize(uri) RETURNS uri 85 IMMUTABLE 86 STRICT 87 LANGUAGE C 88 AS '$libdir/uri'; 89 90 91CREATE FUNCTION uri_lt(uri, uri) RETURNS boolean 92 IMMUTABLE 93 STRICT 94 LANGUAGE C 95 AS '$libdir/uri'; 96 97CREATE FUNCTION uri_le(uri, uri) RETURNS boolean 98 IMMUTABLE 99 STRICT 100 LANGUAGE C 101 AS '$libdir/uri'; 102 103CREATE FUNCTION uri_eq(uri, uri) RETURNS boolean 104 IMMUTABLE 105 STRICT 106 LANGUAGE C 107 AS '$libdir/uri'; 108 109CREATE FUNCTION uri_ne(uri, uri) RETURNS boolean 110 IMMUTABLE 111 STRICT 112 LANGUAGE C 113 AS '$libdir/uri'; 114 115CREATE FUNCTION uri_ge(uri, uri) RETURNS boolean 116 IMMUTABLE 117 STRICT 118 LANGUAGE C 119 AS '$libdir/uri'; 120 121CREATE FUNCTION uri_gt(uri, uri) RETURNS boolean 122 IMMUTABLE 123 STRICT 124 LANGUAGE C 125 AS '$libdir/uri'; 126 127CREATE FUNCTION uri_cmp(uri, uri) RETURNS integer 128 IMMUTABLE 129 STRICT 130 LANGUAGE C 131 AS '$libdir/uri'; 132 133CREATE OPERATOR < ( 134 LEFTARG = uri, 135 RIGHTARG = uri, 136 COMMUTATOR = >, 137 NEGATOR = >=, 138 RESTRICT = scalarltsel, 139 JOIN = scalarltjoinsel, 140 PROCEDURE = uri_lt 141); 142 143CREATE OPERATOR <= ( 144 LEFTARG = uri, 145 RIGHTARG = uri, 146 COMMUTATOR = >=, 147 NEGATOR = >, 148 RESTRICT = scalarltsel, 149 JOIN = scalarltjoinsel, 150 PROCEDURE = uri_le 151); 152 153CREATE OPERATOR = ( 154 LEFTARG = uri, 155 RIGHTARG = uri, 156 COMMUTATOR = =, 157 NEGATOR = <>, 158 RESTRICT = eqsel, 159 JOIN = eqjoinsel, 160 HASHES, 161 MERGES, 162 PROCEDURE = uri_eq 163); 164 165CREATE OPERATOR <> ( 166 LEFTARG = uri, 167 RIGHTARG = uri, 168 COMMUTATOR = <>, 169 NEGATOR = =, 170 RESTRICT = neqsel, 171 JOIN = neqjoinsel, 172 PROCEDURE = uri_ne 173); 174 175CREATE OPERATOR >= ( 176 LEFTARG = uri, 177 RIGHTARG = uri, 178 COMMUTATOR = <=, 179 NEGATOR = <, 180 RESTRICT = scalargtsel, 181 JOIN = scalargtjoinsel, 182 PROCEDURE = uri_ge 183); 184 185CREATE OPERATOR > ( 186 LEFTARG = uri, 187 RIGHTARG = uri, 188 COMMUTATOR = <, 189 NEGATOR = <=, 190 RESTRICT = scalargtsel, 191 JOIN = scalargtjoinsel, 192 PROCEDURE = uri_gt 193); 194 195CREATE OPERATOR CLASS uri_ops 196 DEFAULT FOR TYPE uri USING btree AS 197 OPERATOR 1 < , 198 OPERATOR 2 <= , 199 OPERATOR 3 = , 200 OPERATOR 4 >= , 201 OPERATOR 5 > , 202 FUNCTION 1 uri_cmp(uri, uri); 203