pgLatLon

changeset 40:f1a9a5de9a12 v0.8

Removed files for old version 0.7; Updated README, GNUmakefile, and control file to version 0.8
author jbe
date Fri Oct 21 12:56:11 2016 +0200 (2016-10-21)
parents 2890e859c8a8
children a90c0d750405
files GNUmakefile README.html README.mkd latlon--0.6--0.7.sql latlon--0.7.sql latlon.control
line diff
     1.1 --- a/GNUmakefile	Fri Oct 21 12:51:37 2016 +0200
     1.2 +++ b/GNUmakefile	Fri Oct 21 12:56:11 2016 +0200
     1.3 @@ -1,5 +1,5 @@
     1.4  EXTENSION = latlon
     1.5 -DATA = latlon--0.6--0.7.sql latlon--0.7.sql latlon--0.7--0.8.sql latlon--0.8.sql
     1.6 +DATA = latlon--0.7--0.8.sql latlon--0.8.sql
     1.7  MODULES = latlon-v0007
     1.8  
     1.9  PG_CONFIG = pg_config
     2.1 --- a/README.html	Fri Oct 21 12:51:37 2016 +0200
     2.2 +++ b/README.html	Fri Oct 21 12:56:11 2016 +0200
     2.3 @@ -1,5 +1,5 @@
     2.4 -<html><head><title>pgLatLon v0.7 documentation</title></head><body>
     2.5 -<h1>pgLatLon v0.7 documentation</h1>
     2.6 +<html><head><title>pgLatLon v0.8 documentation</title></head><body>
     2.7 +<h1>pgLatLon v0.8 documentation</h1>
     2.8  
     2.9  <p>pgLatLon is a spatial database extension for the PostgreSQL object-relational
    2.10  database management system providing geographic data types and spatial indexing
     3.1 --- a/README.mkd	Fri Oct 21 12:51:37 2016 +0200
     3.2 +++ b/README.mkd	Fri Oct 21 12:56:11 2016 +0200
     3.3 @@ -1,4 +1,4 @@
     3.4 -pgLatLon v0.7 documentation
     3.5 +pgLatLon v0.8 documentation
     3.6  ===========================
     3.7  
     3.8  pgLatLon is a spatial database extension for the PostgreSQL object-relational
     4.1 --- a/latlon--0.6--0.7.sql	Fri Oct 21 12:51:37 2016 +0200
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,431 +0,0 @@
     4.4 -
     4.5 -CREATE OR REPLACE FUNCTION ekey_point_in_dummy(cstring)
     4.6 -  RETURNS ekey_point
     4.7 -  LANGUAGE C IMMUTABLE STRICT
     4.8 -  AS '$libdir/latlon-v0007', 'pgl_notimpl';
     4.9 -
    4.10 -CREATE OR REPLACE FUNCTION ekey_point_out_dummy(ekey_point)
    4.11 -  RETURNS cstring
    4.12 -  LANGUAGE C IMMUTABLE STRICT
    4.13 -  AS '$libdir/latlon-v0007', 'pgl_notimpl';
    4.14 -
    4.15 -CREATE OR REPLACE FUNCTION ekey_area_in_dummy(cstring)
    4.16 -  RETURNS ekey_area
    4.17 -  LANGUAGE C IMMUTABLE STRICT
    4.18 -  AS '$libdir/latlon-v0007', 'pgl_notimpl';
    4.19 -
    4.20 -CREATE OR REPLACE FUNCTION ekey_area_out_dummy(ekey_area)
    4.21 -  RETURNS cstring
    4.22 -  LANGUAGE C IMMUTABLE STRICT
    4.23 -  AS '$libdir/latlon-v0007', 'pgl_notimpl';
    4.24 -
    4.25 -CREATE OR REPLACE FUNCTION epoint_in(cstring)
    4.26 -  RETURNS epoint
    4.27 -  LANGUAGE C IMMUTABLE STRICT
    4.28 -  AS '$libdir/latlon-v0007', 'pgl_epoint_in';
    4.29 -
    4.30 -CREATE OR REPLACE FUNCTION ebox_in(cstring)
    4.31 -  RETURNS ebox
    4.32 -  LANGUAGE C IMMUTABLE STRICT
    4.33 -  AS '$libdir/latlon-v0007', 'pgl_ebox_in';
    4.34 -
    4.35 -CREATE OR REPLACE FUNCTION ecircle_in(cstring)
    4.36 -  RETURNS ecircle
    4.37 -  LANGUAGE C IMMUTABLE STRICT
    4.38 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_in';
    4.39 -
    4.40 -CREATE OR REPLACE FUNCTION ecluster_in(cstring)
    4.41 -  RETURNS ecluster
    4.42 -  LANGUAGE C IMMUTABLE STRICT
    4.43 -  AS '$libdir/latlon-v0007', 'pgl_ecluster_in';
    4.44 -
    4.45 -CREATE OR REPLACE FUNCTION epoint_out(epoint)
    4.46 -  RETURNS cstring
    4.47 -  LANGUAGE C IMMUTABLE STRICT
    4.48 -  AS '$libdir/latlon-v0007', 'pgl_epoint_out';
    4.49 -
    4.50 -CREATE OR REPLACE FUNCTION ebox_out(ebox)
    4.51 -  RETURNS cstring
    4.52 -  LANGUAGE C IMMUTABLE STRICT
    4.53 -  AS '$libdir/latlon-v0007', 'pgl_ebox_out';
    4.54 -
    4.55 -CREATE OR REPLACE FUNCTION ecircle_out(ecircle)
    4.56 -  RETURNS cstring
    4.57 -  LANGUAGE C IMMUTABLE STRICT
    4.58 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_out';
    4.59 -
    4.60 -CREATE OR REPLACE FUNCTION ecluster_out(ecluster)
    4.61 -  RETURNS cstring
    4.62 -  LANGUAGE C IMMUTABLE STRICT
    4.63 -  AS '$libdir/latlon-v0007', 'pgl_ecluster_out';
    4.64 -
    4.65 -CREATE OR REPLACE FUNCTION epoint_recv(internal)
    4.66 -  RETURNS epoint
    4.67 -  LANGUAGE C IMMUTABLE STRICT
    4.68 -  AS '$libdir/latlon-v0007', 'pgl_epoint_recv';
    4.69 -
    4.70 -CREATE OR REPLACE FUNCTION ebox_recv(internal)
    4.71 -  RETURNS ebox
    4.72 -  LANGUAGE C IMMUTABLE STRICT
    4.73 -  AS '$libdir/latlon-v0007', 'pgl_ebox_recv';
    4.74 -
    4.75 -CREATE OR REPLACE FUNCTION ecircle_recv(internal)
    4.76 -  RETURNS ecircle
    4.77 -  LANGUAGE C IMMUTABLE STRICT
    4.78 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_recv';
    4.79 -
    4.80 -CREATE OR REPLACE FUNCTION epoint_send(epoint)
    4.81 -  RETURNS bytea
    4.82 -  LANGUAGE C IMMUTABLE STRICT
    4.83 -  AS '$libdir/latlon-v0007', 'pgl_epoint_send';
    4.84 -
    4.85 -CREATE OR REPLACE FUNCTION ebox_send(ebox)
    4.86 -  RETURNS bytea
    4.87 -  LANGUAGE C IMMUTABLE STRICT
    4.88 -  AS '$libdir/latlon-v0007', 'pgl_ebox_send';
    4.89 -
    4.90 -CREATE OR REPLACE FUNCTION ecircle_send(ecircle)
    4.91 -  RETURNS bytea
    4.92 -  LANGUAGE C IMMUTABLE STRICT
    4.93 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_send';
    4.94 -
    4.95 -CREATE OR REPLACE FUNCTION epoint_btree_lt(epoint, epoint)
    4.96 -  RETURNS boolean
    4.97 -  LANGUAGE C IMMUTABLE STRICT
    4.98 -  AS '$libdir/latlon-v0007', 'pgl_btree_epoint_lt';
    4.99 -
   4.100 -CREATE OR REPLACE FUNCTION epoint_btree_le(epoint, epoint)
   4.101 -  RETURNS boolean
   4.102 -  LANGUAGE C IMMUTABLE STRICT
   4.103 -  AS '$libdir/latlon-v0007', 'pgl_btree_epoint_le';
   4.104 -
   4.105 -CREATE OR REPLACE FUNCTION epoint_btree_eq(epoint, epoint)
   4.106 -  RETURNS boolean
   4.107 -  LANGUAGE C IMMUTABLE STRICT
   4.108 -  AS '$libdir/latlon-v0007', 'pgl_btree_epoint_eq';
   4.109 -
   4.110 -CREATE OR REPLACE FUNCTION epoint_btree_ne(epoint, epoint)
   4.111 -  RETURNS boolean
   4.112 -  LANGUAGE C IMMUTABLE STRICT
   4.113 -  AS '$libdir/latlon-v0007', 'pgl_btree_epoint_ne';
   4.114 -
   4.115 -CREATE OR REPLACE FUNCTION epoint_btree_ge(epoint, epoint)
   4.116 -  RETURNS boolean
   4.117 -  LANGUAGE C IMMUTABLE STRICT
   4.118 -  AS '$libdir/latlon-v0007', 'pgl_btree_epoint_ge';
   4.119 -
   4.120 -CREATE OR REPLACE FUNCTION epoint_btree_gt(epoint, epoint)
   4.121 -  RETURNS boolean
   4.122 -  LANGUAGE C IMMUTABLE STRICT
   4.123 -  AS '$libdir/latlon-v0007', 'pgl_btree_epoint_gt';
   4.124 -
   4.125 -CREATE OR REPLACE FUNCTION epoint_btree_cmp(epoint, epoint)
   4.126 -  RETURNS int4
   4.127 -  LANGUAGE C IMMUTABLE STRICT
   4.128 -  AS '$libdir/latlon-v0007', 'pgl_btree_epoint_cmp';
   4.129 -
   4.130 -CREATE OR REPLACE FUNCTION ebox_btree_lt(ebox, ebox)
   4.131 -  RETURNS boolean
   4.132 -  LANGUAGE C IMMUTABLE STRICT
   4.133 -  AS '$libdir/latlon-v0007', 'pgl_btree_ebox_lt';
   4.134 -
   4.135 -CREATE OR REPLACE FUNCTION ebox_btree_le(ebox, ebox)
   4.136 -  RETURNS boolean
   4.137 -  LANGUAGE C IMMUTABLE STRICT
   4.138 -  AS '$libdir/latlon-v0007', 'pgl_btree_ebox_le';
   4.139 -
   4.140 -CREATE OR REPLACE FUNCTION ebox_btree_eq(ebox, ebox)
   4.141 -  RETURNS boolean
   4.142 -  LANGUAGE C IMMUTABLE STRICT
   4.143 -  AS '$libdir/latlon-v0007', 'pgl_btree_ebox_eq';
   4.144 -
   4.145 -CREATE OR REPLACE FUNCTION ebox_btree_ne(ebox, ebox)
   4.146 -  RETURNS boolean
   4.147 -  LANGUAGE C IMMUTABLE STRICT
   4.148 -  AS '$libdir/latlon-v0007', 'pgl_btree_ebox_ne';
   4.149 -
   4.150 -CREATE OR REPLACE FUNCTION ebox_btree_ge(ebox, ebox)
   4.151 -  RETURNS boolean
   4.152 -  LANGUAGE C IMMUTABLE STRICT
   4.153 -  AS '$libdir/latlon-v0007', 'pgl_btree_ebox_ge';
   4.154 -
   4.155 -CREATE OR REPLACE FUNCTION ebox_btree_gt(ebox, ebox)
   4.156 -  RETURNS boolean
   4.157 -  LANGUAGE C IMMUTABLE STRICT
   4.158 -  AS '$libdir/latlon-v0007', 'pgl_btree_ebox_gt';
   4.159 -
   4.160 -CREATE OR REPLACE FUNCTION ebox_btree_cmp(ebox, ebox)
   4.161 -  RETURNS int4
   4.162 -  LANGUAGE C IMMUTABLE STRICT
   4.163 -  AS '$libdir/latlon-v0007', 'pgl_btree_ebox_cmp';
   4.164 -
   4.165 -CREATE OR REPLACE FUNCTION ecircle_btree_lt(ecircle, ecircle)
   4.166 -  RETURNS boolean
   4.167 -  LANGUAGE C IMMUTABLE STRICT
   4.168 -  AS '$libdir/latlon-v0007', 'pgl_btree_ecircle_lt';
   4.169 -
   4.170 -CREATE OR REPLACE FUNCTION ecircle_btree_le(ecircle, ecircle)
   4.171 -  RETURNS boolean
   4.172 -  LANGUAGE C IMMUTABLE STRICT
   4.173 -  AS '$libdir/latlon-v0007', 'pgl_btree_ecircle_le';
   4.174 -
   4.175 -CREATE OR REPLACE FUNCTION ecircle_btree_eq(ecircle, ecircle)
   4.176 -  RETURNS boolean
   4.177 -  LANGUAGE C IMMUTABLE STRICT
   4.178 -  AS '$libdir/latlon-v0007', 'pgl_btree_ecircle_eq';
   4.179 -
   4.180 -CREATE OR REPLACE FUNCTION ecircle_btree_ne(ecircle, ecircle)
   4.181 -  RETURNS boolean
   4.182 -  LANGUAGE C IMMUTABLE STRICT
   4.183 -  AS '$libdir/latlon-v0007', 'pgl_btree_ecircle_ne';
   4.184 -
   4.185 -CREATE OR REPLACE FUNCTION ecircle_btree_ge(ecircle, ecircle)
   4.186 -  RETURNS boolean
   4.187 -  LANGUAGE C IMMUTABLE STRICT
   4.188 -  AS '$libdir/latlon-v0007', 'pgl_btree_ecircle_ge';
   4.189 -
   4.190 -CREATE OR REPLACE FUNCTION ecircle_btree_gt(ecircle, ecircle)
   4.191 -  RETURNS boolean
   4.192 -  LANGUAGE C IMMUTABLE STRICT
   4.193 -  AS '$libdir/latlon-v0007', 'pgl_btree_ecircle_gt';
   4.194 -
   4.195 -CREATE OR REPLACE FUNCTION ecircle_btree_cmp(ecircle, ecircle)
   4.196 -  RETURNS int4
   4.197 -  LANGUAGE C IMMUTABLE STRICT
   4.198 -  AS '$libdir/latlon-v0007', 'pgl_btree_ecircle_cmp';
   4.199 -
   4.200 -CREATE OR REPLACE FUNCTION cast_epoint_to_ebox(epoint)
   4.201 -  RETURNS ebox
   4.202 -  LANGUAGE C IMMUTABLE STRICT
   4.203 -  AS '$libdir/latlon-v0007', 'pgl_epoint_to_ebox';
   4.204 -
   4.205 -CREATE OR REPLACE FUNCTION cast_epoint_to_ecircle(epoint)
   4.206 -  RETURNS ecircle
   4.207 -  LANGUAGE C IMMUTABLE STRICT
   4.208 -  AS '$libdir/latlon-v0007', 'pgl_epoint_to_ecircle';
   4.209 -
   4.210 -CREATE OR REPLACE FUNCTION cast_epoint_to_ecluster(epoint)
   4.211 -  RETURNS ecluster
   4.212 -  LANGUAGE C IMMUTABLE STRICT
   4.213 -  AS '$libdir/latlon-v0007', 'pgl_epoint_to_ecluster';
   4.214 -
   4.215 -CREATE OR REPLACE FUNCTION cast_ebox_to_ecluster(ebox)
   4.216 -  RETURNS ecluster
   4.217 -  LANGUAGE C IMMUTABLE STRICT
   4.218 -  AS '$libdir/latlon-v0007', 'pgl_ebox_to_ecluster';
   4.219 -
   4.220 -CREATE OR REPLACE FUNCTION epoint(float8, float8)
   4.221 -  RETURNS epoint
   4.222 -  LANGUAGE C IMMUTABLE STRICT
   4.223 -  AS '$libdir/latlon-v0007', 'pgl_create_epoint';
   4.224 -
   4.225 -CREATE OR REPLACE FUNCTION empty_ebox()
   4.226 -  RETURNS ebox
   4.227 -  LANGUAGE C IMMUTABLE STRICT
   4.228 -  AS '$libdir/latlon-v0007', 'pgl_create_empty_ebox';
   4.229 -
   4.230 -CREATE OR REPLACE FUNCTION ebox(float8, float8, float8, float8)
   4.231 -  RETURNS ebox
   4.232 -  LANGUAGE C IMMUTABLE STRICT
   4.233 -  AS '$libdir/latlon-v0007', 'pgl_create_ebox';
   4.234 -
   4.235 -CREATE OR REPLACE FUNCTION ebox(epoint, epoint)
   4.236 -  RETURNS ebox
   4.237 -  LANGUAGE C IMMUTABLE STRICT
   4.238 -  AS '$libdir/latlon-v0007', 'pgl_create_ebox_from_epoints';
   4.239 -
   4.240 -CREATE OR REPLACE FUNCTION ecircle(float8, float8, float8)
   4.241 -  RETURNS ecircle
   4.242 -  LANGUAGE C IMMUTABLE STRICT
   4.243 -  AS '$libdir/latlon-v0007', 'pgl_create_ecircle';
   4.244 -
   4.245 -CREATE OR REPLACE FUNCTION ecircle(epoint, float8)
   4.246 -  RETURNS ecircle
   4.247 -  LANGUAGE C IMMUTABLE STRICT
   4.248 -  AS '$libdir/latlon-v0007', 'pgl_create_ecircle_from_epoint';
   4.249 -
   4.250 -CREATE OR REPLACE FUNCTION latitude(epoint)
   4.251 -  RETURNS float8
   4.252 -  LANGUAGE C IMMUTABLE STRICT
   4.253 -  AS '$libdir/latlon-v0007', 'pgl_epoint_lat';
   4.254 -
   4.255 -CREATE OR REPLACE FUNCTION longitude(epoint)
   4.256 -  RETURNS float8
   4.257 -  LANGUAGE C IMMUTABLE STRICT
   4.258 -  AS '$libdir/latlon-v0007', 'pgl_epoint_lon';
   4.259 -
   4.260 -CREATE OR REPLACE FUNCTION min_latitude(ebox)
   4.261 -  RETURNS float8
   4.262 -  LANGUAGE C IMMUTABLE STRICT
   4.263 -  AS '$libdir/latlon-v0007', 'pgl_ebox_lat_min';
   4.264 -
   4.265 -CREATE OR REPLACE FUNCTION max_latitude(ebox)
   4.266 -  RETURNS float8
   4.267 -  LANGUAGE C IMMUTABLE STRICT
   4.268 -  AS '$libdir/latlon-v0007', 'pgl_ebox_lat_max';
   4.269 -
   4.270 -CREATE OR REPLACE FUNCTION min_longitude(ebox)
   4.271 -  RETURNS float8
   4.272 -  LANGUAGE C IMMUTABLE STRICT
   4.273 -  AS '$libdir/latlon-v0007', 'pgl_ebox_lon_min';
   4.274 -
   4.275 -CREATE OR REPLACE FUNCTION max_longitude(ebox)
   4.276 -  RETURNS float8
   4.277 -  LANGUAGE C IMMUTABLE STRICT
   4.278 -  AS '$libdir/latlon-v0007', 'pgl_ebox_lon_max';
   4.279 -
   4.280 -CREATE OR REPLACE FUNCTION center(ecircle)
   4.281 -  RETURNS epoint
   4.282 -  LANGUAGE C IMMUTABLE STRICT
   4.283 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_center';
   4.284 -
   4.285 -CREATE OR REPLACE FUNCTION radius(ecircle)
   4.286 -  RETURNS float8
   4.287 -  LANGUAGE C IMMUTABLE STRICT
   4.288 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_radius';
   4.289 -
   4.290 -CREATE OR REPLACE FUNCTION epoint_ebox_overlap_proc(epoint, ebox)
   4.291 -  RETURNS boolean
   4.292 -  LANGUAGE C IMMUTABLE STRICT
   4.293 -  AS '$libdir/latlon-v0007', 'pgl_epoint_ebox_overlap';
   4.294 -
   4.295 -CREATE OR REPLACE FUNCTION epoint_ecircle_overlap_proc(epoint, ecircle)
   4.296 -  RETURNS boolean
   4.297 -  LANGUAGE C IMMUTABLE STRICT
   4.298 -  AS '$libdir/latlon-v0007', 'pgl_epoint_ecircle_overlap';
   4.299 -
   4.300 -CREATE OR REPLACE FUNCTION epoint_ecluster_overlap_proc(epoint, ecluster)
   4.301 -  RETURNS boolean
   4.302 -  LANGUAGE C IMMUTABLE STRICT
   4.303 -  AS '$libdir/latlon-v0007', 'pgl_epoint_ecluster_overlap';
   4.304 -
   4.305 -CREATE OR REPLACE FUNCTION epoint_ecluster_may_overlap_proc(epoint, ecluster)
   4.306 -  RETURNS boolean
   4.307 -  LANGUAGE C IMMUTABLE STRICT
   4.308 -  AS '$libdir/latlon-v0007', 'pgl_epoint_ecluster_may_overlap';
   4.309 -
   4.310 -CREATE OR REPLACE FUNCTION ebox_overlap_proc(ebox, ebox)
   4.311 -  RETURNS boolean
   4.312 -  LANGUAGE C IMMUTABLE STRICT
   4.313 -  AS '$libdir/latlon-v0007', 'pgl_ebox_overlap';
   4.314 -
   4.315 -CREATE OR REPLACE FUNCTION ebox_ecircle_may_overlap_proc(ebox, ecircle)
   4.316 -  RETURNS boolean
   4.317 -  LANGUAGE C IMMUTABLE STRICT
   4.318 -  AS '$libdir/latlon-v0007', 'pgl_ebox_ecircle_may_overlap';
   4.319 -
   4.320 -CREATE OR REPLACE FUNCTION ebox_ecluster_may_overlap_proc(ebox, ecluster)
   4.321 -  RETURNS boolean
   4.322 -  LANGUAGE C IMMUTABLE STRICT
   4.323 -  AS '$libdir/latlon-v0007', 'pgl_ebox_ecluster_may_overlap';
   4.324 -
   4.325 -CREATE OR REPLACE FUNCTION ecircle_overlap_proc(ecircle, ecircle)
   4.326 -  RETURNS boolean
   4.327 -  LANGUAGE C IMMUTABLE STRICT
   4.328 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_overlap';
   4.329 -
   4.330 -CREATE OR REPLACE FUNCTION ecircle_ecluster_overlap_proc(ecircle, ecluster)
   4.331 -  RETURNS boolean
   4.332 -  LANGUAGE C IMMUTABLE STRICT
   4.333 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_ecluster_overlap';
   4.334 -
   4.335 -CREATE OR REPLACE FUNCTION ecircle_ecluster_may_overlap_proc(ecircle, ecluster)
   4.336 -  RETURNS boolean
   4.337 -  LANGUAGE C IMMUTABLE STRICT
   4.338 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_ecluster_may_overlap';
   4.339 -
   4.340 -CREATE OR REPLACE FUNCTION ecluster_overlap_proc(ecluster, ecluster)
   4.341 -  RETURNS boolean
   4.342 -  LANGUAGE C IMMUTABLE STRICT
   4.343 -  AS '$libdir/latlon-v0007', 'pgl_ecluster_overlap';
   4.344 -
   4.345 -CREATE OR REPLACE FUNCTION ecluster_may_overlap_proc(ecluster, ecluster)
   4.346 -  RETURNS boolean
   4.347 -  LANGUAGE C IMMUTABLE STRICT
   4.348 -  AS '$libdir/latlon-v0007', 'pgl_ecluster_may_overlap';
   4.349 -
   4.350 -CREATE OR REPLACE FUNCTION ecluster_contains_proc(ecluster, ecluster)
   4.351 -  RETURNS boolean
   4.352 -  LANGUAGE C IMMUTABLE STRICT
   4.353 -  AS '$libdir/latlon-v0007', 'pgl_ecluster_contains';
   4.354 -
   4.355 -CREATE OR REPLACE FUNCTION epoint_distance_proc(epoint, epoint)
   4.356 -  RETURNS float8
   4.357 -  LANGUAGE C IMMUTABLE STRICT
   4.358 -  AS '$libdir/latlon-v0007', 'pgl_epoint_distance';
   4.359 -
   4.360 -CREATE OR REPLACE FUNCTION epoint_ecircle_distance_proc(epoint, ecircle)
   4.361 -  RETURNS float8
   4.362 -  LANGUAGE C IMMUTABLE STRICT
   4.363 -  AS '$libdir/latlon-v0007', 'pgl_epoint_ecircle_distance';
   4.364 -
   4.365 -CREATE OR REPLACE FUNCTION epoint_ecluster_distance_proc(epoint, ecluster)
   4.366 -  RETURNS float8
   4.367 -  LANGUAGE C IMMUTABLE STRICT
   4.368 -  AS '$libdir/latlon-v0007', 'pgl_epoint_ecluster_distance';
   4.369 -
   4.370 -CREATE OR REPLACE FUNCTION ecircle_distance_proc(ecircle, ecircle)
   4.371 -  RETURNS float8
   4.372 -  LANGUAGE C IMMUTABLE STRICT
   4.373 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_distance';
   4.374 -
   4.375 -CREATE OR REPLACE FUNCTION ecircle_ecluster_distance_proc(ecircle, ecluster)
   4.376 -  RETURNS float8
   4.377 -  LANGUAGE C IMMUTABLE STRICT
   4.378 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_ecluster_distance';
   4.379 -
   4.380 -CREATE OR REPLACE FUNCTION ecluster_distance_proc(ecluster, ecluster)
   4.381 -  RETURNS float8
   4.382 -  LANGUAGE C IMMUTABLE STRICT
   4.383 -  AS '$libdir/latlon-v0007', 'pgl_ecluster_distance';
   4.384 -
   4.385 -CREATE OR REPLACE FUNCTION pgl_gist_consistent(internal, internal, smallint, oid, internal)
   4.386 -  RETURNS boolean
   4.387 -  LANGUAGE C STRICT
   4.388 -  AS '$libdir/latlon-v0007', 'pgl_gist_consistent';
   4.389 -
   4.390 -CREATE OR REPLACE FUNCTION pgl_gist_union(internal, internal)
   4.391 -  RETURNS internal
   4.392 -  LANGUAGE C STRICT
   4.393 -  AS '$libdir/latlon-v0007', 'pgl_gist_union';
   4.394 -
   4.395 -CREATE OR REPLACE FUNCTION pgl_gist_compress_epoint(internal)
   4.396 -  RETURNS internal
   4.397 -  LANGUAGE C STRICT
   4.398 -  AS '$libdir/latlon-v0007', 'pgl_gist_compress_epoint';
   4.399 -
   4.400 -CREATE OR REPLACE FUNCTION pgl_gist_compress_ecircle(internal)
   4.401 -  RETURNS internal
   4.402 -  LANGUAGE C STRICT
   4.403 -  AS '$libdir/latlon-v0007', 'pgl_gist_compress_ecircle';
   4.404 -
   4.405 -CREATE OR REPLACE FUNCTION pgl_gist_compress_ecluster(internal)
   4.406 -  RETURNS internal
   4.407 -  LANGUAGE C STRICT
   4.408 -  AS '$libdir/latlon-v0007', 'pgl_gist_compress_ecluster';
   4.409 -
   4.410 -CREATE OR REPLACE FUNCTION pgl_gist_decompress(internal)
   4.411 -  RETURNS internal
   4.412 -  LANGUAGE C STRICT
   4.413 -  AS '$libdir/latlon-v0007', 'pgl_gist_decompress';
   4.414 -
   4.415 -CREATE OR REPLACE FUNCTION pgl_gist_penalty(internal, internal, internal)
   4.416 -  RETURNS internal
   4.417 -  LANGUAGE C STRICT
   4.418 -  AS '$libdir/latlon-v0007', 'pgl_gist_penalty';
   4.419 -
   4.420 -CREATE OR REPLACE FUNCTION pgl_gist_picksplit(internal, internal)
   4.421 -  RETURNS internal
   4.422 -  LANGUAGE C STRICT
   4.423 -  AS '$libdir/latlon-v0007', 'pgl_gist_picksplit';
   4.424 -
   4.425 -CREATE OR REPLACE FUNCTION pgl_gist_same(internal, internal, internal)
   4.426 -  RETURNS internal
   4.427 -  LANGUAGE C STRICT
   4.428 -  AS '$libdir/latlon-v0007', 'pgl_gist_same';
   4.429 -
   4.430 -CREATE OR REPLACE FUNCTION pgl_gist_distance(internal, internal, smallint, oid)
   4.431 -  RETURNS internal
   4.432 -  LANGUAGE C STRICT
   4.433 -  AS '$libdir/latlon-v0007', 'pgl_gist_distance';
   4.434 -
     5.1 --- a/latlon--0.7.sql	Fri Oct 21 12:51:37 2016 +0200
     5.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.3 @@ -1,1647 +0,0 @@
     5.4 -
     5.5 -----------------------------------------
     5.6 --- forward declarations (shell types) --
     5.7 -----------------------------------------
     5.8 -
     5.9 -CREATE TYPE epoint;
    5.10 -CREATE TYPE ebox;
    5.11 -CREATE TYPE ecircle;
    5.12 -CREATE TYPE ecluster;
    5.13 -
    5.14 -
    5.15 -------------------------------------------------------------
    5.16 --- dummy input/output functions for dummy index key types --
    5.17 -------------------------------------------------------------
    5.18 -
    5.19 -CREATE FUNCTION ekey_point_in_dummy(cstring)
    5.20 -  RETURNS ekey_point
    5.21 -  LANGUAGE C IMMUTABLE STRICT
    5.22 -  AS '$libdir/latlon-v0007', 'pgl_notimpl';
    5.23 -
    5.24 -CREATE FUNCTION ekey_point_out_dummy(ekey_point)
    5.25 -  RETURNS cstring
    5.26 -  LANGUAGE C IMMUTABLE STRICT
    5.27 -  AS '$libdir/latlon-v0007', 'pgl_notimpl';
    5.28 -
    5.29 -CREATE FUNCTION ekey_area_in_dummy(cstring)
    5.30 -  RETURNS ekey_area
    5.31 -  LANGUAGE C IMMUTABLE STRICT
    5.32 -  AS '$libdir/latlon-v0007', 'pgl_notimpl';
    5.33 -
    5.34 -CREATE FUNCTION ekey_area_out_dummy(ekey_area)
    5.35 -  RETURNS cstring
    5.36 -  LANGUAGE C IMMUTABLE STRICT
    5.37 -  AS '$libdir/latlon-v0007', 'pgl_notimpl';
    5.38 -
    5.39 -
    5.40 ---------------------------
    5.41 --- text input functions --
    5.42 ---------------------------
    5.43 -
    5.44 -CREATE FUNCTION epoint_in(cstring)
    5.45 -  RETURNS epoint
    5.46 -  LANGUAGE C IMMUTABLE STRICT
    5.47 -  AS '$libdir/latlon-v0007', 'pgl_epoint_in';
    5.48 -
    5.49 -CREATE FUNCTION ebox_in(cstring)
    5.50 -  RETURNS ebox
    5.51 -  LANGUAGE C IMMUTABLE STRICT
    5.52 -  AS '$libdir/latlon-v0007', 'pgl_ebox_in';
    5.53 -
    5.54 -CREATE FUNCTION ecircle_in(cstring)
    5.55 -  RETURNS ecircle
    5.56 -  LANGUAGE C IMMUTABLE STRICT
    5.57 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_in';
    5.58 -
    5.59 -CREATE FUNCTION ecluster_in(cstring)
    5.60 -  RETURNS ecluster
    5.61 -  LANGUAGE C IMMUTABLE STRICT
    5.62 -  AS '$libdir/latlon-v0007', 'pgl_ecluster_in';
    5.63 -
    5.64 -
    5.65 ----------------------------
    5.66 --- text output functions --
    5.67 ----------------------------
    5.68 -
    5.69 -CREATE FUNCTION epoint_out(epoint)
    5.70 -  RETURNS cstring
    5.71 -  LANGUAGE C IMMUTABLE STRICT
    5.72 -  AS '$libdir/latlon-v0007', 'pgl_epoint_out';
    5.73 -
    5.74 -CREATE FUNCTION ebox_out(ebox)
    5.75 -  RETURNS cstring
    5.76 -  LANGUAGE C IMMUTABLE STRICT
    5.77 -  AS '$libdir/latlon-v0007', 'pgl_ebox_out';
    5.78 -
    5.79 -CREATE FUNCTION ecircle_out(ecircle)
    5.80 -  RETURNS cstring
    5.81 -  LANGUAGE C IMMUTABLE STRICT
    5.82 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_out';
    5.83 -
    5.84 -CREATE FUNCTION ecluster_out(ecluster)
    5.85 -  RETURNS cstring
    5.86 -  LANGUAGE C IMMUTABLE STRICT
    5.87 -  AS '$libdir/latlon-v0007', 'pgl_ecluster_out';
    5.88 -
    5.89 -
    5.90 ---------------------------
    5.91 --- binary I/O functions --
    5.92 ---------------------------
    5.93 -
    5.94 -CREATE FUNCTION epoint_recv(internal)
    5.95 -  RETURNS epoint
    5.96 -  LANGUAGE C IMMUTABLE STRICT
    5.97 -  AS '$libdir/latlon-v0007', 'pgl_epoint_recv';
    5.98 -
    5.99 -CREATE FUNCTION ebox_recv(internal)
   5.100 -  RETURNS ebox
   5.101 -  LANGUAGE C IMMUTABLE STRICT
   5.102 -  AS '$libdir/latlon-v0007', 'pgl_ebox_recv';
   5.103 -
   5.104 -CREATE FUNCTION ecircle_recv(internal)
   5.105 -  RETURNS ecircle
   5.106 -  LANGUAGE C IMMUTABLE STRICT
   5.107 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_recv';
   5.108 -
   5.109 -CREATE FUNCTION epoint_send(epoint)
   5.110 -  RETURNS bytea
   5.111 -  LANGUAGE C IMMUTABLE STRICT
   5.112 -  AS '$libdir/latlon-v0007', 'pgl_epoint_send';
   5.113 -
   5.114 -CREATE FUNCTION ebox_send(ebox)
   5.115 -  RETURNS bytea
   5.116 -  LANGUAGE C IMMUTABLE STRICT
   5.117 -  AS '$libdir/latlon-v0007', 'pgl_ebox_send';
   5.118 -
   5.119 -CREATE FUNCTION ecircle_send(ecircle)
   5.120 -  RETURNS bytea
   5.121 -  LANGUAGE C IMMUTABLE STRICT
   5.122 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_send';
   5.123 -
   5.124 -
   5.125 ------------------------------------------------
   5.126 --- type definitions of dummy index key types --
   5.127 ------------------------------------------------
   5.128 -
   5.129 -CREATE TYPE ekey_point (
   5.130 -  internallength = 8,
   5.131 -  input = ekey_point_in_dummy,
   5.132 -  output = ekey_point_out_dummy,
   5.133 -  alignment = char );
   5.134 -
   5.135 -CREATE TYPE ekey_area (
   5.136 -  internallength = 9,
   5.137 -  input = ekey_area_in_dummy,
   5.138 -  output = ekey_area_out_dummy,
   5.139 -  alignment = char );
   5.140 -
   5.141 -
   5.142 -------------------------------------------
   5.143 --- definitions of geographic data types --
   5.144 -------------------------------------------
   5.145 -
   5.146 -CREATE TYPE epoint (
   5.147 -  internallength = 16,
   5.148 -  input = epoint_in,
   5.149 -  output = epoint_out,
   5.150 -  receive = epoint_recv,
   5.151 -  send = epoint_send,
   5.152 -  alignment = double );
   5.153 -
   5.154 -CREATE TYPE ebox (
   5.155 -  internallength = 32,
   5.156 -  input = ebox_in,
   5.157 -  output = ebox_out,
   5.158 -  receive = ebox_recv,
   5.159 -  send = ebox_send,
   5.160 -  alignment = double );
   5.161 -
   5.162 -CREATE TYPE ecircle (
   5.163 -  internallength = 24,
   5.164 -  input = ecircle_in,
   5.165 -  output = ecircle_out,
   5.166 -  receive = ecircle_recv,
   5.167 -  send = ecircle_send,
   5.168 -  alignment = double );
   5.169 -
   5.170 -CREATE TYPE ecluster (
   5.171 -  internallength = VARIABLE,
   5.172 -  input = ecluster_in,
   5.173 -  output = ecluster_out,
   5.174 -  alignment = double,
   5.175 -  storage = external );
   5.176 -
   5.177 -
   5.178 ---------------------
   5.179 --- B-tree support --
   5.180 ---------------------
   5.181 -
   5.182 --- begin of B-tree support for epoint
   5.183 -
   5.184 -CREATE FUNCTION epoint_btree_lt(epoint, epoint)
   5.185 -  RETURNS boolean
   5.186 -  LANGUAGE C IMMUTABLE STRICT
   5.187 -  AS '$libdir/latlon-v0007', 'pgl_btree_epoint_lt';
   5.188 -
   5.189 -CREATE FUNCTION epoint_btree_le(epoint, epoint)
   5.190 -  RETURNS boolean
   5.191 -  LANGUAGE C IMMUTABLE STRICT
   5.192 -  AS '$libdir/latlon-v0007', 'pgl_btree_epoint_le';
   5.193 -
   5.194 -CREATE FUNCTION epoint_btree_eq(epoint, epoint)
   5.195 -  RETURNS boolean
   5.196 -  LANGUAGE C IMMUTABLE STRICT
   5.197 -  AS '$libdir/latlon-v0007', 'pgl_btree_epoint_eq';
   5.198 -
   5.199 -CREATE FUNCTION epoint_btree_ne(epoint, epoint)
   5.200 -  RETURNS boolean
   5.201 -  LANGUAGE C IMMUTABLE STRICT
   5.202 -  AS '$libdir/latlon-v0007', 'pgl_btree_epoint_ne';
   5.203 -
   5.204 -CREATE FUNCTION epoint_btree_ge(epoint, epoint)
   5.205 -  RETURNS boolean
   5.206 -  LANGUAGE C IMMUTABLE STRICT
   5.207 -  AS '$libdir/latlon-v0007', 'pgl_btree_epoint_ge';
   5.208 -
   5.209 -CREATE FUNCTION epoint_btree_gt(epoint, epoint)
   5.210 -  RETURNS boolean
   5.211 -  LANGUAGE C IMMUTABLE STRICT
   5.212 -  AS '$libdir/latlon-v0007', 'pgl_btree_epoint_gt';
   5.213 -
   5.214 -CREATE OPERATOR <<< (
   5.215 -  leftarg = epoint,
   5.216 -  rightarg = epoint,
   5.217 -  procedure = epoint_btree_lt,
   5.218 -  commutator = >>>,
   5.219 -  negator = >>>=,
   5.220 -  restrict = scalarltsel,
   5.221 -  join = scalarltjoinsel
   5.222 -);
   5.223 -
   5.224 -CREATE OPERATOR <<<= (
   5.225 -  leftarg = epoint,
   5.226 -  rightarg = epoint,
   5.227 -  procedure = epoint_btree_le,
   5.228 -  commutator = >>>=,
   5.229 -  negator = >>>,
   5.230 -  restrict = scalarltsel,
   5.231 -  join = scalarltjoinsel
   5.232 -);
   5.233 -
   5.234 -CREATE OPERATOR = (
   5.235 -  leftarg = epoint,
   5.236 -  rightarg = epoint,
   5.237 -  procedure = epoint_btree_eq,
   5.238 -  commutator = =,
   5.239 -  negator = <>,
   5.240 -  restrict = eqsel,
   5.241 -  join = eqjoinsel,
   5.242 -  merges
   5.243 -);
   5.244 -
   5.245 -CREATE OPERATOR <> (
   5.246 -  leftarg = epoint,
   5.247 -  rightarg = epoint,
   5.248 -  procedure = epoint_btree_eq,
   5.249 -  commutator = <>,
   5.250 -  negator = =,
   5.251 -  restrict = neqsel,
   5.252 -  join = neqjoinsel
   5.253 -);
   5.254 -
   5.255 -CREATE OPERATOR >>>= (
   5.256 -  leftarg = epoint,
   5.257 -  rightarg = epoint,
   5.258 -  procedure = epoint_btree_ge,
   5.259 -  commutator = <<<=,
   5.260 -  negator = <<<,
   5.261 -  restrict = scalargtsel,
   5.262 -  join = scalargtjoinsel
   5.263 -);
   5.264 -
   5.265 -CREATE OPERATOR >>> (
   5.266 -  leftarg = epoint,
   5.267 -  rightarg = epoint,
   5.268 -  procedure = epoint_btree_gt,
   5.269 -  commutator = <<<,
   5.270 -  negator = <<<=,
   5.271 -  restrict = scalargtsel,
   5.272 -  join = scalargtjoinsel
   5.273 -);
   5.274 -
   5.275 -CREATE FUNCTION epoint_btree_cmp(epoint, epoint)
   5.276 -  RETURNS int4
   5.277 -  LANGUAGE C IMMUTABLE STRICT
   5.278 -  AS '$libdir/latlon-v0007', 'pgl_btree_epoint_cmp';
   5.279 -
   5.280 -CREATE OPERATOR CLASS epoint_btree_ops
   5.281 -  DEFAULT FOR TYPE epoint USING btree AS
   5.282 -  OPERATOR 1 <<< ,
   5.283 -  OPERATOR 2 <<<= ,
   5.284 -  OPERATOR 3 = ,
   5.285 -  OPERATOR 4 >>>= ,
   5.286 -  OPERATOR 5 >>> ,
   5.287 -  FUNCTION 1 epoint_btree_cmp(epoint, epoint);
   5.288 -
   5.289 --- end of B-tree support for epoint
   5.290 -
   5.291 --- begin of B-tree support for ebox
   5.292 -
   5.293 -CREATE FUNCTION ebox_btree_lt(ebox, ebox)
   5.294 -  RETURNS boolean
   5.295 -  LANGUAGE C IMMUTABLE STRICT
   5.296 -  AS '$libdir/latlon-v0007', 'pgl_btree_ebox_lt';
   5.297 -
   5.298 -CREATE FUNCTION ebox_btree_le(ebox, ebox)
   5.299 -  RETURNS boolean
   5.300 -  LANGUAGE C IMMUTABLE STRICT
   5.301 -  AS '$libdir/latlon-v0007', 'pgl_btree_ebox_le';
   5.302 -
   5.303 -CREATE FUNCTION ebox_btree_eq(ebox, ebox)
   5.304 -  RETURNS boolean
   5.305 -  LANGUAGE C IMMUTABLE STRICT
   5.306 -  AS '$libdir/latlon-v0007', 'pgl_btree_ebox_eq';
   5.307 -
   5.308 -CREATE FUNCTION ebox_btree_ne(ebox, ebox)
   5.309 -  RETURNS boolean
   5.310 -  LANGUAGE C IMMUTABLE STRICT
   5.311 -  AS '$libdir/latlon-v0007', 'pgl_btree_ebox_ne';
   5.312 -
   5.313 -CREATE FUNCTION ebox_btree_ge(ebox, ebox)
   5.314 -  RETURNS boolean
   5.315 -  LANGUAGE C IMMUTABLE STRICT
   5.316 -  AS '$libdir/latlon-v0007', 'pgl_btree_ebox_ge';
   5.317 -
   5.318 -CREATE FUNCTION ebox_btree_gt(ebox, ebox)
   5.319 -  RETURNS boolean
   5.320 -  LANGUAGE C IMMUTABLE STRICT
   5.321 -  AS '$libdir/latlon-v0007', 'pgl_btree_ebox_gt';
   5.322 -
   5.323 -CREATE OPERATOR <<< (
   5.324 -  leftarg = ebox,
   5.325 -  rightarg = ebox,
   5.326 -  procedure = ebox_btree_lt,
   5.327 -  commutator = >>>,
   5.328 -  negator = >>>=,
   5.329 -  restrict = scalarltsel,
   5.330 -  join = scalarltjoinsel
   5.331 -);
   5.332 -
   5.333 -CREATE OPERATOR <<<= (
   5.334 -  leftarg = ebox,
   5.335 -  rightarg = ebox,
   5.336 -  procedure = ebox_btree_le,
   5.337 -  commutator = >>>=,
   5.338 -  negator = >>>,
   5.339 -  restrict = scalarltsel,
   5.340 -  join = scalarltjoinsel
   5.341 -);
   5.342 -
   5.343 -CREATE OPERATOR = (
   5.344 -  leftarg = ebox,
   5.345 -  rightarg = ebox,
   5.346 -  procedure = ebox_btree_eq,
   5.347 -  commutator = =,
   5.348 -  negator = <>,
   5.349 -  restrict = eqsel,
   5.350 -  join = eqjoinsel,
   5.351 -  merges
   5.352 -);
   5.353 -
   5.354 -CREATE OPERATOR <> (
   5.355 -  leftarg = ebox,
   5.356 -  rightarg = ebox,
   5.357 -  procedure = ebox_btree_eq,
   5.358 -  commutator = <>,
   5.359 -  negator = =,
   5.360 -  restrict = neqsel,
   5.361 -  join = neqjoinsel
   5.362 -);
   5.363 -
   5.364 -CREATE OPERATOR >>>= (
   5.365 -  leftarg = ebox,
   5.366 -  rightarg = ebox,
   5.367 -  procedure = ebox_btree_ge,
   5.368 -  commutator = <<<=,
   5.369 -  negator = <<<,
   5.370 -  restrict = scalargtsel,
   5.371 -  join = scalargtjoinsel
   5.372 -);
   5.373 -
   5.374 -CREATE OPERATOR >>> (
   5.375 -  leftarg = ebox,
   5.376 -  rightarg = ebox,
   5.377 -  procedure = ebox_btree_gt,
   5.378 -  commutator = <<<,
   5.379 -  negator = <<<=,
   5.380 -  restrict = scalargtsel,
   5.381 -  join = scalargtjoinsel
   5.382 -);
   5.383 -
   5.384 -CREATE FUNCTION ebox_btree_cmp(ebox, ebox)
   5.385 -  RETURNS int4
   5.386 -  LANGUAGE C IMMUTABLE STRICT
   5.387 -  AS '$libdir/latlon-v0007', 'pgl_btree_ebox_cmp';
   5.388 -
   5.389 -CREATE OPERATOR CLASS ebox_btree_ops
   5.390 -  DEFAULT FOR TYPE ebox USING btree AS
   5.391 -  OPERATOR 1 <<< ,
   5.392 -  OPERATOR 2 <<<= ,
   5.393 -  OPERATOR 3 = ,
   5.394 -  OPERATOR 4 >>>= ,
   5.395 -  OPERATOR 5 >>> ,
   5.396 -  FUNCTION 1 ebox_btree_cmp(ebox, ebox);
   5.397 -
   5.398 --- end of B-tree support for ebox
   5.399 -
   5.400 --- begin of B-tree support for ecircle
   5.401 -
   5.402 -CREATE FUNCTION ecircle_btree_lt(ecircle, ecircle)
   5.403 -  RETURNS boolean
   5.404 -  LANGUAGE C IMMUTABLE STRICT
   5.405 -  AS '$libdir/latlon-v0007', 'pgl_btree_ecircle_lt';
   5.406 -
   5.407 -CREATE FUNCTION ecircle_btree_le(ecircle, ecircle)
   5.408 -  RETURNS boolean
   5.409 -  LANGUAGE C IMMUTABLE STRICT
   5.410 -  AS '$libdir/latlon-v0007', 'pgl_btree_ecircle_le';
   5.411 -
   5.412 -CREATE FUNCTION ecircle_btree_eq(ecircle, ecircle)
   5.413 -  RETURNS boolean
   5.414 -  LANGUAGE C IMMUTABLE STRICT
   5.415 -  AS '$libdir/latlon-v0007', 'pgl_btree_ecircle_eq';
   5.416 -
   5.417 -CREATE FUNCTION ecircle_btree_ne(ecircle, ecircle)
   5.418 -  RETURNS boolean
   5.419 -  LANGUAGE C IMMUTABLE STRICT
   5.420 -  AS '$libdir/latlon-v0007', 'pgl_btree_ecircle_ne';
   5.421 -
   5.422 -CREATE FUNCTION ecircle_btree_ge(ecircle, ecircle)
   5.423 -  RETURNS boolean
   5.424 -  LANGUAGE C IMMUTABLE STRICT
   5.425 -  AS '$libdir/latlon-v0007', 'pgl_btree_ecircle_ge';
   5.426 -
   5.427 -CREATE FUNCTION ecircle_btree_gt(ecircle, ecircle)
   5.428 -  RETURNS boolean
   5.429 -  LANGUAGE C IMMUTABLE STRICT
   5.430 -  AS '$libdir/latlon-v0007', 'pgl_btree_ecircle_gt';
   5.431 -
   5.432 -CREATE OPERATOR <<< (
   5.433 -  leftarg = ecircle,
   5.434 -  rightarg = ecircle,
   5.435 -  procedure = ecircle_btree_lt,
   5.436 -  commutator = >>>,
   5.437 -  negator = >>>=,
   5.438 -  restrict = scalarltsel,
   5.439 -  join = scalarltjoinsel
   5.440 -);
   5.441 -
   5.442 -CREATE OPERATOR <<<= (
   5.443 -  leftarg = ecircle,
   5.444 -  rightarg = ecircle,
   5.445 -  procedure = ecircle_btree_le,
   5.446 -  commutator = >>>=,
   5.447 -  negator = >>>,
   5.448 -  restrict = scalarltsel,
   5.449 -  join = scalarltjoinsel
   5.450 -);
   5.451 -
   5.452 -CREATE OPERATOR = (
   5.453 -  leftarg = ecircle,
   5.454 -  rightarg = ecircle,
   5.455 -  procedure = ecircle_btree_eq,
   5.456 -  commutator = =,
   5.457 -  negator = <>,
   5.458 -  restrict = eqsel,
   5.459 -  join = eqjoinsel,
   5.460 -  merges
   5.461 -);
   5.462 -
   5.463 -CREATE OPERATOR <> (
   5.464 -  leftarg = ecircle,
   5.465 -  rightarg = ecircle,
   5.466 -  procedure = ecircle_btree_eq,
   5.467 -  commutator = <>,
   5.468 -  negator = =,
   5.469 -  restrict = neqsel,
   5.470 -  join = neqjoinsel
   5.471 -);
   5.472 -
   5.473 -CREATE OPERATOR >>>= (
   5.474 -  leftarg = ecircle,
   5.475 -  rightarg = ecircle,
   5.476 -  procedure = ecircle_btree_ge,
   5.477 -  commutator = <<<=,
   5.478 -  negator = <<<,
   5.479 -  restrict = scalargtsel,
   5.480 -  join = scalargtjoinsel
   5.481 -);
   5.482 -
   5.483 -CREATE OPERATOR >>> (
   5.484 -  leftarg = ecircle,
   5.485 -  rightarg = ecircle,
   5.486 -  procedure = ecircle_btree_gt,
   5.487 -  commutator = <<<,
   5.488 -  negator = <<<=,
   5.489 -  restrict = scalargtsel,
   5.490 -  join = scalargtjoinsel
   5.491 -);
   5.492 -
   5.493 -CREATE FUNCTION ecircle_btree_cmp(ecircle, ecircle)
   5.494 -  RETURNS int4
   5.495 -  LANGUAGE C IMMUTABLE STRICT
   5.496 -  AS '$libdir/latlon-v0007', 'pgl_btree_ecircle_cmp';
   5.497 -
   5.498 -CREATE OPERATOR CLASS ecircle_btree_ops
   5.499 -  DEFAULT FOR TYPE ecircle USING btree AS
   5.500 -  OPERATOR 1 <<< ,
   5.501 -  OPERATOR 2 <<<= ,
   5.502 -  OPERATOR 3 = ,
   5.503 -  OPERATOR 4 >>>= ,
   5.504 -  OPERATOR 5 >>> ,
   5.505 -  FUNCTION 1 ecircle_btree_cmp(ecircle, ecircle);
   5.506 -
   5.507 --- end of B-tree support for ecircle
   5.508 -
   5.509 -
   5.510 -----------------
   5.511 --- type casts --
   5.512 -----------------
   5.513 -
   5.514 -CREATE FUNCTION cast_epoint_to_ebox(epoint)
   5.515 -  RETURNS ebox
   5.516 -  LANGUAGE C IMMUTABLE STRICT
   5.517 -  AS '$libdir/latlon-v0007', 'pgl_epoint_to_ebox';
   5.518 -
   5.519 -CREATE CAST (epoint AS ebox) WITH FUNCTION cast_epoint_to_ebox(epoint);
   5.520 -
   5.521 -CREATE FUNCTION cast_epoint_to_ecircle(epoint)
   5.522 -  RETURNS ecircle
   5.523 -  LANGUAGE C IMMUTABLE STRICT
   5.524 -  AS '$libdir/latlon-v0007', 'pgl_epoint_to_ecircle';
   5.525 -
   5.526 -CREATE CAST (epoint AS ecircle) WITH FUNCTION cast_epoint_to_ecircle(epoint);
   5.527 -
   5.528 -CREATE FUNCTION cast_epoint_to_ecluster(epoint)
   5.529 -  RETURNS ecluster
   5.530 -  LANGUAGE C IMMUTABLE STRICT
   5.531 -  AS '$libdir/latlon-v0007', 'pgl_epoint_to_ecluster';
   5.532 -
   5.533 -CREATE CAST (epoint AS ecluster) WITH FUNCTION cast_epoint_to_ecluster(epoint);
   5.534 -
   5.535 -CREATE FUNCTION cast_ebox_to_ecluster(ebox)
   5.536 -  RETURNS ecluster
   5.537 -  LANGUAGE C IMMUTABLE STRICT
   5.538 -  AS '$libdir/latlon-v0007', 'pgl_ebox_to_ecluster';
   5.539 -
   5.540 -CREATE CAST (ebox AS ecluster) WITH FUNCTION cast_ebox_to_ecluster(ebox);
   5.541 -
   5.542 -
   5.543 ----------------------------
   5.544 --- constructor functions --
   5.545 ----------------------------
   5.546 -
   5.547 -CREATE FUNCTION epoint(float8, float8)
   5.548 -  RETURNS epoint
   5.549 -  LANGUAGE C IMMUTABLE STRICT
   5.550 -  AS '$libdir/latlon-v0007', 'pgl_create_epoint';
   5.551 -
   5.552 -CREATE FUNCTION epoint_latlon(float8, float8)
   5.553 -  RETURNS epoint
   5.554 -  LANGUAGE SQL IMMUTABLE STRICT AS $$
   5.555 -    SELECT epoint($1, $2)
   5.556 -  $$;
   5.557 -
   5.558 -CREATE FUNCTION epoint_lonlat(float8, float8)
   5.559 -  RETURNS epoint
   5.560 -  LANGUAGE SQL IMMUTABLE STRICT AS $$
   5.561 -    SELECT epoint($2, $1)
   5.562 -  $$;
   5.563 -
   5.564 -CREATE FUNCTION empty_ebox()
   5.565 -  RETURNS ebox
   5.566 -  LANGUAGE C IMMUTABLE STRICT
   5.567 -  AS '$libdir/latlon-v0007', 'pgl_create_empty_ebox';
   5.568 -
   5.569 -CREATE FUNCTION ebox(float8, float8, float8, float8)
   5.570 -  RETURNS ebox
   5.571 -  LANGUAGE C IMMUTABLE STRICT
   5.572 -  AS '$libdir/latlon-v0007', 'pgl_create_ebox';
   5.573 -
   5.574 -CREATE FUNCTION ebox(epoint, epoint)
   5.575 -  RETURNS ebox
   5.576 -  LANGUAGE C IMMUTABLE STRICT
   5.577 -  AS '$libdir/latlon-v0007', 'pgl_create_ebox_from_epoints';
   5.578 -
   5.579 -CREATE FUNCTION ecircle(float8, float8, float8)
   5.580 -  RETURNS ecircle
   5.581 -  LANGUAGE C IMMUTABLE STRICT
   5.582 -  AS '$libdir/latlon-v0007', 'pgl_create_ecircle';
   5.583 -
   5.584 -CREATE FUNCTION ecircle(epoint, float8)
   5.585 -  RETURNS ecircle
   5.586 -  LANGUAGE C IMMUTABLE STRICT
   5.587 -  AS '$libdir/latlon-v0007', 'pgl_create_ecircle_from_epoint';
   5.588 -
   5.589 -CREATE FUNCTION ecluster_concat(ecluster[])
   5.590 -  RETURNS ecluster
   5.591 -  LANGUAGE sql IMMUTABLE STRICT AS $$
   5.592 -    SELECT array_to_string($1, ' ')::ecluster
   5.593 -  $$;
   5.594 -
   5.595 -CREATE FUNCTION ecluster_concat(ecluster, ecluster)
   5.596 -  RETURNS ecluster
   5.597 -  LANGUAGE sql IMMUTABLE STRICT AS $$
   5.598 -    SELECT ($1::text || ' ' || $2::text)::ecluster
   5.599 -  $$;
   5.600 -
   5.601 -CREATE FUNCTION ecluster_create_multipoint(epoint[])
   5.602 -  RETURNS ecluster
   5.603 -  LANGUAGE sql IMMUTABLE STRICT AS $$
   5.604 -    SELECT
   5.605 -      array_to_string(array_agg('point (' || unnest || ')'), ' ')::ecluster
   5.606 -    FROM unnest($1)
   5.607 -  $$;
   5.608 -
   5.609 -CREATE FUNCTION ecluster_create_path(epoint[])
   5.610 -  RETURNS ecluster
   5.611 -  LANGUAGE sql IMMUTABLE STRICT AS $$
   5.612 -    SELECT CASE WHEN "str" = '' THEN 'empty'::ecluster ELSE
   5.613 -      ('path (' || array_to_string($1, ' ') || ')')::ecluster
   5.614 -    END
   5.615 -    FROM array_to_string($1, ' ') AS "str"
   5.616 -  $$;
   5.617 -
   5.618 -CREATE FUNCTION ecluster_create_outline(epoint[])
   5.619 -  RETURNS ecluster
   5.620 -  LANGUAGE sql IMMUTABLE STRICT AS $$
   5.621 -    SELECT CASE WHEN "str" = '' THEN 'empty'::ecluster ELSE
   5.622 -      ('outline (' || array_to_string($1, ' ') || ')')::ecluster
   5.623 -    END
   5.624 -    FROM array_to_string($1, ' ') AS "str"
   5.625 -  $$;
   5.626 -
   5.627 -CREATE FUNCTION ecluster_create_polygon(epoint[])
   5.628 -  RETURNS ecluster
   5.629 -  LANGUAGE sql IMMUTABLE STRICT AS $$
   5.630 -    SELECT CASE WHEN "str" = '' THEN 'empty'::ecluster ELSE
   5.631 -      ('polygon (' || array_to_string($1, ' ') || ')')::ecluster
   5.632 -    END
   5.633 -    FROM array_to_string($1, ' ') AS "str"
   5.634 -  $$;
   5.635 -
   5.636 -
   5.637 -----------------------
   5.638 --- getter functions --
   5.639 -----------------------
   5.640 -
   5.641 -CREATE FUNCTION latitude(epoint)
   5.642 -  RETURNS float8
   5.643 -  LANGUAGE C IMMUTABLE STRICT
   5.644 -  AS '$libdir/latlon-v0007', 'pgl_epoint_lat';
   5.645 -
   5.646 -CREATE FUNCTION longitude(epoint)
   5.647 -  RETURNS float8
   5.648 -  LANGUAGE C IMMUTABLE STRICT
   5.649 -  AS '$libdir/latlon-v0007', 'pgl_epoint_lon';
   5.650 -
   5.651 -CREATE FUNCTION min_latitude(ebox)
   5.652 -  RETURNS float8
   5.653 -  LANGUAGE C IMMUTABLE STRICT
   5.654 -  AS '$libdir/latlon-v0007', 'pgl_ebox_lat_min';
   5.655 -
   5.656 -CREATE FUNCTION max_latitude(ebox)
   5.657 -  RETURNS float8
   5.658 -  LANGUAGE C IMMUTABLE STRICT
   5.659 -  AS '$libdir/latlon-v0007', 'pgl_ebox_lat_max';
   5.660 -
   5.661 -CREATE FUNCTION min_longitude(ebox)
   5.662 -  RETURNS float8
   5.663 -  LANGUAGE C IMMUTABLE STRICT
   5.664 -  AS '$libdir/latlon-v0007', 'pgl_ebox_lon_min';
   5.665 -
   5.666 -CREATE FUNCTION max_longitude(ebox)
   5.667 -  RETURNS float8
   5.668 -  LANGUAGE C IMMUTABLE STRICT
   5.669 -  AS '$libdir/latlon-v0007', 'pgl_ebox_lon_max';
   5.670 -
   5.671 -CREATE FUNCTION center(ecircle)
   5.672 -  RETURNS epoint
   5.673 -  LANGUAGE C IMMUTABLE STRICT
   5.674 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_center';
   5.675 -
   5.676 -CREATE FUNCTION radius(ecircle)
   5.677 -  RETURNS float8
   5.678 -  LANGUAGE C IMMUTABLE STRICT
   5.679 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_radius';
   5.680 -
   5.681 -CREATE FUNCTION ecluster_extract_points(ecluster)
   5.682 -  RETURNS SETOF epoint
   5.683 -  LANGUAGE sql IMMUTABLE STRICT AS $$
   5.684 -    SELECT "match"[2]::epoint
   5.685 -    FROM regexp_matches($1::text, e'(^| )point \\(([^)]+)\\)', 'g') AS "match"
   5.686 -  $$;
   5.687 -
   5.688 -CREATE FUNCTION ecluster_extract_paths(ecluster)
   5.689 -  RETURNS SETOF epoint[]
   5.690 -  LANGUAGE sql IMMUTABLE STRICT AS $$
   5.691 -    SELECT (
   5.692 -      SELECT array_agg("m2"[1]::epoint)
   5.693 -      FROM regexp_matches("m1"[2], e'[^ ]+ [^ ]+', 'g') AS "m2"
   5.694 -    )
   5.695 -    FROM regexp_matches($1::text, e'(^| )path \\(([^)]+)\\)', 'g') AS "m1"
   5.696 -  $$;
   5.697 -
   5.698 -CREATE FUNCTION ecluster_extract_outlines(ecluster)
   5.699 -  RETURNS SETOF epoint[]
   5.700 -  LANGUAGE sql IMMUTABLE STRICT AS $$
   5.701 -    SELECT (
   5.702 -      SELECT array_agg("m2"[1]::epoint)
   5.703 -      FROM regexp_matches("m1"[2], e'[^ ]+ [^ ]+', 'g') AS "m2"
   5.704 -    )
   5.705 -    FROM regexp_matches($1::text, e'(^| )outline \\(([^)]+)\\)', 'g') AS "m1"
   5.706 -  $$;
   5.707 -
   5.708 -CREATE FUNCTION ecluster_extract_polygons(ecluster)
   5.709 -  RETURNS SETOF epoint[]
   5.710 -  LANGUAGE sql IMMUTABLE STRICT AS $$
   5.711 -    SELECT (
   5.712 -      SELECT array_agg("m2"[1]::epoint)
   5.713 -      FROM regexp_matches("m1"[2], e'[^ ]+ [^ ]+', 'g') AS "m2"
   5.714 -    )
   5.715 -    FROM regexp_matches($1::text, e'(^| )polygon \\(([^)]+)\\)', 'g') AS "m1"
   5.716 -  $$;
   5.717 -
   5.718 -
   5.719 ----------------
   5.720 --- operators --
   5.721 ----------------
   5.722 -
   5.723 -CREATE FUNCTION epoint_ebox_overlap_proc(epoint, ebox)
   5.724 -  RETURNS boolean
   5.725 -  LANGUAGE C IMMUTABLE STRICT
   5.726 -  AS '$libdir/latlon-v0007', 'pgl_epoint_ebox_overlap';
   5.727 -
   5.728 -CREATE FUNCTION epoint_ecircle_overlap_proc(epoint, ecircle)
   5.729 -  RETURNS boolean
   5.730 -  LANGUAGE C IMMUTABLE STRICT
   5.731 -  AS '$libdir/latlon-v0007', 'pgl_epoint_ecircle_overlap';
   5.732 -
   5.733 -CREATE FUNCTION epoint_ecluster_overlap_proc(epoint, ecluster)
   5.734 -  RETURNS boolean
   5.735 -  LANGUAGE C IMMUTABLE STRICT
   5.736 -  AS '$libdir/latlon-v0007', 'pgl_epoint_ecluster_overlap';
   5.737 -
   5.738 -CREATE FUNCTION epoint_ecluster_may_overlap_proc(epoint, ecluster)
   5.739 -  RETURNS boolean
   5.740 -  LANGUAGE C IMMUTABLE STRICT
   5.741 -  AS '$libdir/latlon-v0007', 'pgl_epoint_ecluster_may_overlap';
   5.742 -
   5.743 -CREATE FUNCTION ebox_overlap_proc(ebox, ebox)
   5.744 -  RETURNS boolean
   5.745 -  LANGUAGE C IMMUTABLE STRICT
   5.746 -  AS '$libdir/latlon-v0007', 'pgl_ebox_overlap';
   5.747 -
   5.748 -CREATE FUNCTION ebox_ecircle_may_overlap_proc(ebox, ecircle)
   5.749 -  RETURNS boolean
   5.750 -  LANGUAGE C IMMUTABLE STRICT
   5.751 -  AS '$libdir/latlon-v0007', 'pgl_ebox_ecircle_may_overlap';
   5.752 -
   5.753 -CREATE FUNCTION ebox_ecluster_may_overlap_proc(ebox, ecluster)
   5.754 -  RETURNS boolean
   5.755 -  LANGUAGE C IMMUTABLE STRICT
   5.756 -  AS '$libdir/latlon-v0007', 'pgl_ebox_ecluster_may_overlap';
   5.757 -
   5.758 -CREATE FUNCTION ecircle_overlap_proc(ecircle, ecircle)
   5.759 -  RETURNS boolean
   5.760 -  LANGUAGE C IMMUTABLE STRICT
   5.761 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_overlap';
   5.762 -
   5.763 -CREATE FUNCTION ecircle_ecluster_overlap_proc(ecircle, ecluster)
   5.764 -  RETURNS boolean
   5.765 -  LANGUAGE C IMMUTABLE STRICT
   5.766 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_ecluster_overlap';
   5.767 -
   5.768 -CREATE FUNCTION ecircle_ecluster_may_overlap_proc(ecircle, ecluster)
   5.769 -  RETURNS boolean
   5.770 -  LANGUAGE C IMMUTABLE STRICT
   5.771 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_ecluster_may_overlap';
   5.772 -
   5.773 -CREATE FUNCTION ecluster_overlap_proc(ecluster, ecluster)
   5.774 -  RETURNS boolean
   5.775 -  LANGUAGE C IMMUTABLE STRICT
   5.776 -  AS '$libdir/latlon-v0007', 'pgl_ecluster_overlap';
   5.777 -
   5.778 -CREATE FUNCTION ecluster_may_overlap_proc(ecluster, ecluster)
   5.779 -  RETURNS boolean
   5.780 -  LANGUAGE C IMMUTABLE STRICT
   5.781 -  AS '$libdir/latlon-v0007', 'pgl_ecluster_may_overlap';
   5.782 -
   5.783 -CREATE FUNCTION ecluster_contains_proc(ecluster, ecluster)
   5.784 -  RETURNS boolean
   5.785 -  LANGUAGE C IMMUTABLE STRICT
   5.786 -  AS '$libdir/latlon-v0007', 'pgl_ecluster_contains';
   5.787 -
   5.788 -CREATE FUNCTION epoint_distance_proc(epoint, epoint)
   5.789 -  RETURNS float8
   5.790 -  LANGUAGE C IMMUTABLE STRICT
   5.791 -  AS '$libdir/latlon-v0007', 'pgl_epoint_distance';
   5.792 -
   5.793 -CREATE FUNCTION epoint_ecircle_distance_proc(epoint, ecircle)
   5.794 -  RETURNS float8
   5.795 -  LANGUAGE C IMMUTABLE STRICT
   5.796 -  AS '$libdir/latlon-v0007', 'pgl_epoint_ecircle_distance';
   5.797 -
   5.798 -CREATE FUNCTION epoint_ecluster_distance_proc(epoint, ecluster)
   5.799 -  RETURNS float8
   5.800 -  LANGUAGE C IMMUTABLE STRICT
   5.801 -  AS '$libdir/latlon-v0007', 'pgl_epoint_ecluster_distance';
   5.802 -
   5.803 -CREATE FUNCTION ecircle_distance_proc(ecircle, ecircle)
   5.804 -  RETURNS float8
   5.805 -  LANGUAGE C IMMUTABLE STRICT
   5.806 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_distance';
   5.807 -
   5.808 -CREATE FUNCTION ecircle_ecluster_distance_proc(ecircle, ecluster)
   5.809 -  RETURNS float8
   5.810 -  LANGUAGE C IMMUTABLE STRICT
   5.811 -  AS '$libdir/latlon-v0007', 'pgl_ecircle_ecluster_distance';
   5.812 -
   5.813 -CREATE FUNCTION ecluster_distance_proc(ecluster, ecluster)
   5.814 -  RETURNS float8
   5.815 -  LANGUAGE C IMMUTABLE STRICT
   5.816 -  AS '$libdir/latlon-v0007', 'pgl_ecluster_distance';
   5.817 -
   5.818 -CREATE OPERATOR && (
   5.819 -  leftarg = epoint,
   5.820 -  rightarg = ebox,
   5.821 -  procedure = epoint_ebox_overlap_proc,
   5.822 -  commutator = &&,
   5.823 -  restrict = areasel,
   5.824 -  join = areajoinsel
   5.825 -);
   5.826 -
   5.827 -CREATE FUNCTION epoint_ebox_overlap_commutator(ebox, epoint)
   5.828 -  RETURNS boolean
   5.829 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2 && $1';
   5.830 -
   5.831 -CREATE OPERATOR && (
   5.832 -  leftarg = ebox,
   5.833 -  rightarg = epoint,
   5.834 -  procedure = epoint_ebox_overlap_commutator,
   5.835 -  commutator = &&,
   5.836 -  restrict = areasel,
   5.837 -  join = areajoinsel
   5.838 -);
   5.839 -
   5.840 -CREATE OPERATOR && (
   5.841 -  leftarg = epoint,
   5.842 -  rightarg = ecircle,
   5.843 -  procedure = epoint_ecircle_overlap_proc,
   5.844 -  commutator = &&,
   5.845 -  restrict = areasel,
   5.846 -  join = areajoinsel
   5.847 -);
   5.848 -
   5.849 -CREATE FUNCTION epoint_ecircle_overlap_commutator(ecircle, epoint)
   5.850 -  RETURNS boolean
   5.851 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2 && $1';
   5.852 -
   5.853 -CREATE OPERATOR && (
   5.854 -  leftarg = ecircle,
   5.855 -  rightarg = epoint,
   5.856 -  procedure = epoint_ecircle_overlap_commutator,
   5.857 -  commutator = &&,
   5.858 -  restrict = areasel,
   5.859 -  join = areajoinsel
   5.860 -);
   5.861 -
   5.862 -CREATE OPERATOR && (
   5.863 -  leftarg = epoint,
   5.864 -  rightarg = ecluster,
   5.865 -  procedure = epoint_ecluster_overlap_proc,
   5.866 -  commutator = &&,
   5.867 -  restrict = areasel,
   5.868 -  join = areajoinsel
   5.869 -);
   5.870 -
   5.871 -CREATE FUNCTION epoint_ecluster_overlap_commutator(ecluster, epoint)
   5.872 -  RETURNS boolean
   5.873 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2 && $1';
   5.874 -
   5.875 -CREATE OPERATOR && (
   5.876 -  leftarg = ecluster,
   5.877 -  rightarg = epoint,
   5.878 -  procedure = epoint_ecluster_overlap_commutator,
   5.879 -  commutator = &&,
   5.880 -  restrict = areasel,
   5.881 -  join = areajoinsel
   5.882 -);
   5.883 -
   5.884 -CREATE OPERATOR && (
   5.885 -  leftarg = ebox,
   5.886 -  rightarg = ebox,
   5.887 -  procedure = ebox_overlap_proc,
   5.888 -  commutator = &&,
   5.889 -  restrict = areasel,
   5.890 -  join = areajoinsel
   5.891 -);
   5.892 -
   5.893 -CREATE OPERATOR && (
   5.894 -  leftarg = ecircle,
   5.895 -  rightarg = ecircle,
   5.896 -  procedure = ecircle_overlap_proc,
   5.897 -  commutator = &&,
   5.898 -  restrict = areasel,
   5.899 -  join = areajoinsel
   5.900 -);
   5.901 -
   5.902 -CREATE OPERATOR && (
   5.903 -  leftarg = ecircle,
   5.904 -  rightarg = ecluster,
   5.905 -  procedure = ecircle_ecluster_overlap_proc,
   5.906 -  commutator = &&,
   5.907 -  restrict = areasel,
   5.908 -  join = areajoinsel
   5.909 -);
   5.910 -
   5.911 -CREATE FUNCTION ecircle_ecluster_overlap_commutator(ecluster, ecircle)
   5.912 -  RETURNS boolean
   5.913 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2 && $1';
   5.914 -
   5.915 -CREATE OPERATOR && (
   5.916 -  leftarg = ecluster,
   5.917 -  rightarg = ecircle,
   5.918 -  procedure = ecircle_ecluster_overlap_commutator,
   5.919 -  commutator = &&,
   5.920 -  restrict = areasel,
   5.921 -  join = areajoinsel
   5.922 -);
   5.923 -
   5.924 -CREATE OPERATOR && (
   5.925 -  leftarg = ecluster,
   5.926 -  rightarg = ecluster,
   5.927 -  procedure = ecluster_overlap_proc,
   5.928 -  commutator = &&,
   5.929 -  restrict = areasel,
   5.930 -  join = areajoinsel
   5.931 -);
   5.932 -
   5.933 -CREATE FUNCTION ebox_ecircle_overlap_castwrap(ebox, ecircle)
   5.934 -  RETURNS boolean
   5.935 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1::ecluster && $2';
   5.936 -
   5.937 -CREATE OPERATOR && (
   5.938 -  leftarg = ebox,
   5.939 -  rightarg = ecircle,
   5.940 -  procedure = ebox_ecircle_overlap_castwrap,
   5.941 -  commutator = &&,
   5.942 -  restrict = areasel,
   5.943 -  join = areajoinsel
   5.944 -);
   5.945 -
   5.946 -CREATE FUNCTION ebox_ecircle_overlap_castwrap(ecircle, ebox)
   5.947 -  RETURNS boolean
   5.948 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1 && $2::ecluster';
   5.949 -
   5.950 -CREATE OPERATOR && (
   5.951 -  leftarg = ecircle,
   5.952 -  rightarg = ebox,
   5.953 -  procedure = ebox_ecircle_overlap_castwrap,
   5.954 -  commutator = &&,
   5.955 -  restrict = areasel,
   5.956 -  join = areajoinsel
   5.957 -);
   5.958 -
   5.959 -CREATE FUNCTION ebox_ecluster_overlap_castwrap(ebox, ecluster)
   5.960 -  RETURNS boolean
   5.961 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1::ecluster && $2';
   5.962 -
   5.963 -CREATE OPERATOR && (
   5.964 -  leftarg = ebox,
   5.965 -  rightarg = ecluster,
   5.966 -  procedure = ebox_ecluster_overlap_castwrap,
   5.967 -  commutator = &&,
   5.968 -  restrict = areasel,
   5.969 -  join = areajoinsel
   5.970 -);
   5.971 -
   5.972 -CREATE FUNCTION ebox_ecluster_overlap_castwrap(ecluster, ebox)
   5.973 -  RETURNS boolean
   5.974 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1 && $2::ecluster';
   5.975 -
   5.976 -CREATE OPERATOR && (
   5.977 -  leftarg = ecluster,
   5.978 -  rightarg = ebox,
   5.979 -  procedure = ebox_ecluster_overlap_castwrap,
   5.980 -  commutator = &&,
   5.981 -  restrict = areasel,
   5.982 -  join = areajoinsel
   5.983 -);
   5.984 -
   5.985 -CREATE OPERATOR &&+ (
   5.986 -  leftarg = epoint,
   5.987 -  rightarg = ecluster,
   5.988 -  procedure = epoint_ecluster_may_overlap_proc,
   5.989 -  commutator = &&+,
   5.990 -  restrict = areasel,
   5.991 -  join = areajoinsel
   5.992 -);
   5.993 -
   5.994 -CREATE FUNCTION epoint_ecluster_may_overlap_commutator(ecluster, epoint)
   5.995 -  RETURNS boolean
   5.996 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2 &&+ $1';
   5.997 -
   5.998 -CREATE OPERATOR &&+ (
   5.999 -  leftarg = ecluster,
  5.1000 -  rightarg = epoint,
  5.1001 -  procedure = epoint_ecluster_may_overlap_commutator,
  5.1002 -  commutator = &&+,
  5.1003 -  restrict = areasel,
  5.1004 -  join = areajoinsel
  5.1005 -);
  5.1006 -
  5.1007 -CREATE OPERATOR &&+ (
  5.1008 -  leftarg = ebox,
  5.1009 -  rightarg = ecircle,
  5.1010 -  procedure = ebox_ecircle_may_overlap_proc,
  5.1011 -  commutator = &&+,
  5.1012 -  restrict = areasel,
  5.1013 -  join = areajoinsel
  5.1014 -);
  5.1015 -
  5.1016 -CREATE FUNCTION ebox_ecircle_may_overlap_commutator(ecircle, ebox)
  5.1017 -  RETURNS boolean
  5.1018 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2 &&+ $1';
  5.1019 -
  5.1020 -CREATE OPERATOR &&+ (
  5.1021 -  leftarg = ecircle,
  5.1022 -  rightarg = ebox,
  5.1023 -  procedure = ebox_ecircle_may_overlap_commutator,
  5.1024 -  commutator = &&+,
  5.1025 -  restrict = areasel,
  5.1026 -  join = areajoinsel
  5.1027 -);
  5.1028 -
  5.1029 -CREATE OPERATOR &&+ (
  5.1030 -  leftarg = ebox,
  5.1031 -  rightarg = ecluster,
  5.1032 -  procedure = ebox_ecluster_may_overlap_proc,
  5.1033 -  commutator = &&+,
  5.1034 -  restrict = areasel,
  5.1035 -  join = areajoinsel
  5.1036 -);
  5.1037 -
  5.1038 -CREATE FUNCTION ebox_ecluster_may_overlap_commutator(ecluster, ebox)
  5.1039 -  RETURNS boolean
  5.1040 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2 &&+ $1';
  5.1041 -
  5.1042 -CREATE OPERATOR &&+ (
  5.1043 -  leftarg = ecluster,
  5.1044 -  rightarg = ebox,
  5.1045 -  procedure = ebox_ecluster_may_overlap_commutator,
  5.1046 -  commutator = &&+,
  5.1047 -  restrict = areasel,
  5.1048 -  join = areajoinsel
  5.1049 -);
  5.1050 -
  5.1051 -CREATE OPERATOR &&+ (
  5.1052 -  leftarg = ecircle,
  5.1053 -  rightarg = ecluster,
  5.1054 -  procedure = ecircle_ecluster_may_overlap_proc,
  5.1055 -  commutator = &&+,
  5.1056 -  restrict = areasel,
  5.1057 -  join = areajoinsel
  5.1058 -);
  5.1059 -
  5.1060 -CREATE FUNCTION ecircle_ecluster_may_overlap_commutator(ecluster, ecircle)
  5.1061 -  RETURNS boolean
  5.1062 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2 &&+ $1';
  5.1063 -
  5.1064 -CREATE OPERATOR &&+ (
  5.1065 -  leftarg = ecluster,
  5.1066 -  rightarg = ecircle,
  5.1067 -  procedure = ecircle_ecluster_may_overlap_commutator,
  5.1068 -  commutator = &&+,
  5.1069 -  restrict = areasel,
  5.1070 -  join = areajoinsel
  5.1071 -);
  5.1072 -
  5.1073 -CREATE OPERATOR &&+ (
  5.1074 -  leftarg = ecluster,
  5.1075 -  rightarg = ecluster,
  5.1076 -  procedure = ecluster_may_overlap_proc,
  5.1077 -  commutator = &&+,
  5.1078 -  restrict = areasel,
  5.1079 -  join = areajoinsel
  5.1080 -);
  5.1081 -
  5.1082 -CREATE OPERATOR @> (
  5.1083 -  leftarg = ebox,
  5.1084 -  rightarg = epoint,
  5.1085 -  procedure = epoint_ebox_overlap_commutator,
  5.1086 -  commutator = <@,
  5.1087 -  restrict = areasel,
  5.1088 -  join = areajoinsel
  5.1089 -);
  5.1090 -
  5.1091 -CREATE OPERATOR <@ (
  5.1092 -  leftarg = epoint,
  5.1093 -  rightarg = ebox,
  5.1094 -  procedure = epoint_ebox_overlap_proc,
  5.1095 -  commutator = @>,
  5.1096 -  restrict = areasel,
  5.1097 -  join = areajoinsel
  5.1098 -);
  5.1099 -
  5.1100 -CREATE OPERATOR @> (
  5.1101 -  leftarg = ecluster,
  5.1102 -  rightarg = epoint,
  5.1103 -  procedure = epoint_ecluster_overlap_commutator,
  5.1104 -  commutator = <@,
  5.1105 -  restrict = areasel,
  5.1106 -  join = areajoinsel
  5.1107 -);
  5.1108 -
  5.1109 -CREATE OPERATOR <@ (
  5.1110 -  leftarg = epoint,
  5.1111 -  rightarg = ecluster,
  5.1112 -  procedure = epoint_ecluster_overlap_proc,
  5.1113 -  commutator = <@,
  5.1114 -  restrict = areasel,
  5.1115 -  join = areajoinsel
  5.1116 -);
  5.1117 -
  5.1118 -CREATE OPERATOR @> (
  5.1119 -  leftarg = ecluster,
  5.1120 -  rightarg = ecluster,
  5.1121 -  procedure = ecluster_contains_proc,
  5.1122 -  commutator = <@,
  5.1123 -  restrict = areasel,
  5.1124 -  join = areajoinsel
  5.1125 -);
  5.1126 -
  5.1127 -CREATE FUNCTION ecluster_contains_commutator(ecluster, ecluster)
  5.1128 -  RETURNS boolean
  5.1129 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2 @> $1';
  5.1130 -
  5.1131 -CREATE OPERATOR <@ (
  5.1132 -  leftarg = ecluster,
  5.1133 -  rightarg = ecluster,
  5.1134 -  procedure = ecluster_contains_commutator,
  5.1135 -  commutator = @>,
  5.1136 -  restrict = areasel,
  5.1137 -  join = areajoinsel
  5.1138 -);
  5.1139 -
  5.1140 -CREATE FUNCTION ebox_contains_castwrap(ebox, ebox)
  5.1141 -  RETURNS boolean
  5.1142 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1::ecluster @> $2::ecluster';
  5.1143 -
  5.1144 -CREATE OPERATOR @> (
  5.1145 -  leftarg = ebox,
  5.1146 -  rightarg = ebox,
  5.1147 -  procedure = ebox_contains_castwrap,
  5.1148 -  commutator = <@,
  5.1149 -  restrict = areasel,
  5.1150 -  join = areajoinsel
  5.1151 -);
  5.1152 -
  5.1153 -CREATE FUNCTION ebox_contains_swapped_castwrap(ebox, ebox)
  5.1154 -  RETURNS boolean
  5.1155 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2::ecluster @> $1::ecluster';
  5.1156 -
  5.1157 -CREATE OPERATOR <@ (
  5.1158 -  leftarg = ebox,
  5.1159 -  rightarg = ebox,
  5.1160 -  procedure = ebox_contains_swapped_castwrap,
  5.1161 -  commutator = @>,
  5.1162 -  restrict = areasel,
  5.1163 -  join = areajoinsel
  5.1164 -);
  5.1165 -
  5.1166 -CREATE FUNCTION ebox_ecluster_contains_castwrap(ebox, ecluster)
  5.1167 -  RETURNS boolean
  5.1168 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1::ecluster @> $2';
  5.1169 -
  5.1170 -CREATE OPERATOR @> (
  5.1171 -  leftarg = ebox,
  5.1172 -  rightarg = ecluster,
  5.1173 -  procedure = ebox_ecluster_contains_castwrap,
  5.1174 -  commutator = <@,
  5.1175 -  restrict = areasel,
  5.1176 -  join = areajoinsel
  5.1177 -);
  5.1178 -
  5.1179 -CREATE FUNCTION ebox_ecluster_contains_castwrap(ecluster, ebox)
  5.1180 -  RETURNS boolean
  5.1181 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2::ecluster @> $1';
  5.1182 -
  5.1183 -CREATE OPERATOR <@ (
  5.1184 -  leftarg = ecluster,
  5.1185 -  rightarg = ebox,
  5.1186 -  procedure = ebox_ecluster_contains_castwrap,
  5.1187 -  commutator = @>,
  5.1188 -  restrict = areasel,
  5.1189 -  join = areajoinsel
  5.1190 -);
  5.1191 -
  5.1192 -CREATE FUNCTION ecluster_ebox_contains_castwrap(ecluster, ebox)
  5.1193 -  RETURNS boolean
  5.1194 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1 @> $2::ecluster';
  5.1195 -
  5.1196 -CREATE OPERATOR @> (
  5.1197 -  leftarg = ecluster,
  5.1198 -  rightarg = ebox,
  5.1199 -  procedure = ecluster_ebox_contains_castwrap,
  5.1200 -  commutator = <@,
  5.1201 -  restrict = areasel,
  5.1202 -  join = areajoinsel
  5.1203 -);
  5.1204 -
  5.1205 -CREATE FUNCTION ecluster_ebox_contains_castwrap(ebox, ecluster)
  5.1206 -  RETURNS boolean
  5.1207 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2 @> $1::ecluster';
  5.1208 -
  5.1209 -CREATE OPERATOR <@ (
  5.1210 -  leftarg = ebox,
  5.1211 -  rightarg = ecluster,
  5.1212 -  procedure = ecluster_ebox_contains_castwrap,
  5.1213 -  commutator = @>,
  5.1214 -  restrict = areasel,
  5.1215 -  join = areajoinsel
  5.1216 -);
  5.1217 -
  5.1218 -CREATE OPERATOR <-> (
  5.1219 -  leftarg = epoint,
  5.1220 -  rightarg = epoint,
  5.1221 -  procedure = epoint_distance_proc,
  5.1222 -  commutator = <->
  5.1223 -);
  5.1224 -
  5.1225 -CREATE OPERATOR <-> (
  5.1226 -  leftarg = epoint,
  5.1227 -  rightarg = ecircle,
  5.1228 -  procedure = epoint_ecircle_distance_proc,
  5.1229 -  commutator = <->
  5.1230 -);
  5.1231 -
  5.1232 -CREATE FUNCTION epoint_ecircle_distance_commutator(ecircle, epoint)
  5.1233 -  RETURNS float8
  5.1234 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2 <-> $1';
  5.1235 -
  5.1236 -CREATE OPERATOR <-> (
  5.1237 -  leftarg = ecircle,
  5.1238 -  rightarg = epoint,
  5.1239 -  procedure = epoint_ecircle_distance_commutator,
  5.1240 -  commutator = <->
  5.1241 -);
  5.1242 -
  5.1243 -CREATE OPERATOR <-> (
  5.1244 -  leftarg = epoint,
  5.1245 -  rightarg = ecluster,
  5.1246 -  procedure = epoint_ecluster_distance_proc,
  5.1247 -  commutator = <->
  5.1248 -);
  5.1249 -
  5.1250 -CREATE FUNCTION epoint_ecluster_distance_commutator(ecluster, epoint)
  5.1251 -  RETURNS float8
  5.1252 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2 <-> $1';
  5.1253 -
  5.1254 -CREATE OPERATOR <-> (
  5.1255 -  leftarg = ecluster,
  5.1256 -  rightarg = epoint,
  5.1257 -  procedure = epoint_ecluster_distance_commutator,
  5.1258 -  commutator = <->
  5.1259 -);
  5.1260 -
  5.1261 -CREATE OPERATOR <-> (
  5.1262 -  leftarg = ecircle,
  5.1263 -  rightarg = ecircle,
  5.1264 -  procedure = ecircle_distance_proc,
  5.1265 -  commutator = <->
  5.1266 -);
  5.1267 -
  5.1268 -CREATE OPERATOR <-> (
  5.1269 -  leftarg = ecircle,
  5.1270 -  rightarg = ecluster,
  5.1271 -  procedure = ecircle_ecluster_distance_proc,
  5.1272 -  commutator = <->
  5.1273 -);
  5.1274 -
  5.1275 -CREATE FUNCTION ecircle_ecluster_distance_commutator(ecluster, ecircle)
  5.1276 -  RETURNS float8
  5.1277 -  LANGUAGE sql IMMUTABLE AS 'SELECT $2 <-> $1';
  5.1278 -
  5.1279 -CREATE OPERATOR <-> (
  5.1280 -  leftarg = ecluster,
  5.1281 -  rightarg = ecircle,
  5.1282 -  procedure = ecircle_ecluster_distance_commutator,
  5.1283 -  commutator = <->
  5.1284 -);
  5.1285 -
  5.1286 -CREATE OPERATOR <-> (
  5.1287 -  leftarg = ecluster,
  5.1288 -  rightarg = ecluster,
  5.1289 -  procedure = ecluster_distance_proc,
  5.1290 -  commutator = <->
  5.1291 -);
  5.1292 -
  5.1293 -CREATE FUNCTION epoint_ebox_distance_castwrap(epoint, ebox)
  5.1294 -  RETURNS float8
  5.1295 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1 <-> $2::ecluster';
  5.1296 -
  5.1297 -CREATE OPERATOR <-> (
  5.1298 -  leftarg = epoint,
  5.1299 -  rightarg = ebox,
  5.1300 -  procedure = epoint_ebox_distance_castwrap,
  5.1301 -  commutator = <->
  5.1302 -);
  5.1303 -
  5.1304 -CREATE FUNCTION epoint_ebox_distance_castwrap(ebox, epoint)
  5.1305 -  RETURNS float8
  5.1306 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1::ecluster <-> $2';
  5.1307 -
  5.1308 -CREATE OPERATOR <-> (
  5.1309 -  leftarg = ebox,
  5.1310 -  rightarg = epoint,
  5.1311 -  procedure = epoint_ebox_distance_castwrap,
  5.1312 -  commutator = <->
  5.1313 -);
  5.1314 -
  5.1315 -CREATE FUNCTION ebox_distance_castwrap(ebox, ebox)
  5.1316 -  RETURNS float8
  5.1317 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1::ecluster <-> $2::ecluster';
  5.1318 -
  5.1319 -CREATE OPERATOR <-> (
  5.1320 -  leftarg = ebox,
  5.1321 -  rightarg = ebox,
  5.1322 -  procedure = ebox_distance_castwrap,
  5.1323 -  commutator = <->
  5.1324 -);
  5.1325 -
  5.1326 -CREATE FUNCTION ebox_ecircle_distance_castwrap(ebox, ecircle)
  5.1327 -  RETURNS float8
  5.1328 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1::ecluster <-> $2';
  5.1329 -
  5.1330 -CREATE OPERATOR <-> (
  5.1331 -  leftarg = ebox,
  5.1332 -  rightarg = ecircle,
  5.1333 -  procedure = ebox_ecircle_distance_castwrap,
  5.1334 -  commutator = <->
  5.1335 -);
  5.1336 -
  5.1337 -CREATE FUNCTION ebox_ecircle_distance_castwrap(ecircle, ebox)
  5.1338 -  RETURNS float8
  5.1339 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1 <-> $2::ecluster';
  5.1340 -
  5.1341 -CREATE OPERATOR <-> (
  5.1342 -  leftarg = ecircle,
  5.1343 -  rightarg = ebox,
  5.1344 -  procedure = ebox_ecircle_distance_castwrap,
  5.1345 -  commutator = <->
  5.1346 -);
  5.1347 -
  5.1348 -CREATE FUNCTION ebox_ecluster_distance_castwrap(ebox, ecluster)
  5.1349 -  RETURNS float8
  5.1350 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1::ecluster <-> $2';
  5.1351 -
  5.1352 -CREATE OPERATOR <-> (
  5.1353 -  leftarg = ebox,
  5.1354 -  rightarg = ecluster,
  5.1355 -  procedure = ebox_ecluster_distance_castwrap,
  5.1356 -  commutator = <->
  5.1357 -);
  5.1358 -
  5.1359 -CREATE FUNCTION ebox_ecluster_distance_castwrap(ecluster, ebox)
  5.1360 -  RETURNS float8
  5.1361 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1 <-> $2::ecluster';
  5.1362 -
  5.1363 -CREATE OPERATOR <-> (
  5.1364 -  leftarg = ecluster,
  5.1365 -  rightarg = ebox,
  5.1366 -  procedure = ebox_ecluster_distance_castwrap,
  5.1367 -  commutator = <->
  5.1368 -);
  5.1369 -
  5.1370 -
  5.1371 -----------------
  5.1372 --- GiST index --
  5.1373 -----------------
  5.1374 -
  5.1375 -CREATE FUNCTION pgl_gist_consistent(internal, internal, smallint, oid, internal)
  5.1376 -  RETURNS boolean
  5.1377 -  LANGUAGE C STRICT
  5.1378 -  AS '$libdir/latlon-v0007', 'pgl_gist_consistent';
  5.1379 -
  5.1380 -CREATE FUNCTION pgl_gist_union(internal, internal)
  5.1381 -  RETURNS internal
  5.1382 -  LANGUAGE C STRICT
  5.1383 -  AS '$libdir/latlon-v0007', 'pgl_gist_union';
  5.1384 -
  5.1385 -CREATE FUNCTION pgl_gist_compress_epoint(internal)
  5.1386 -  RETURNS internal
  5.1387 -  LANGUAGE C STRICT
  5.1388 -  AS '$libdir/latlon-v0007', 'pgl_gist_compress_epoint';
  5.1389 -
  5.1390 -CREATE FUNCTION pgl_gist_compress_ecircle(internal)
  5.1391 -  RETURNS internal
  5.1392 -  LANGUAGE C STRICT
  5.1393 -  AS '$libdir/latlon-v0007', 'pgl_gist_compress_ecircle';
  5.1394 -
  5.1395 -CREATE FUNCTION pgl_gist_compress_ecluster(internal)
  5.1396 -  RETURNS internal
  5.1397 -  LANGUAGE C STRICT
  5.1398 -  AS '$libdir/latlon-v0007', 'pgl_gist_compress_ecluster';
  5.1399 -
  5.1400 -CREATE FUNCTION pgl_gist_decompress(internal)
  5.1401 -  RETURNS internal
  5.1402 -  LANGUAGE C STRICT
  5.1403 -  AS '$libdir/latlon-v0007', 'pgl_gist_decompress';
  5.1404 -
  5.1405 -CREATE FUNCTION pgl_gist_penalty(internal, internal, internal)
  5.1406 -  RETURNS internal
  5.1407 -  LANGUAGE C STRICT
  5.1408 -  AS '$libdir/latlon-v0007', 'pgl_gist_penalty';
  5.1409 -
  5.1410 -CREATE FUNCTION pgl_gist_picksplit(internal, internal)
  5.1411 -  RETURNS internal
  5.1412 -  LANGUAGE C STRICT
  5.1413 -  AS '$libdir/latlon-v0007', 'pgl_gist_picksplit';
  5.1414 -
  5.1415 -CREATE FUNCTION pgl_gist_same(internal, internal, internal)
  5.1416 -  RETURNS internal
  5.1417 -  LANGUAGE C STRICT
  5.1418 -  AS '$libdir/latlon-v0007', 'pgl_gist_same';
  5.1419 -
  5.1420 -CREATE FUNCTION pgl_gist_distance(internal, internal, smallint, oid)
  5.1421 -  RETURNS internal
  5.1422 -  LANGUAGE C STRICT
  5.1423 -  AS '$libdir/latlon-v0007', 'pgl_gist_distance';
  5.1424 -
  5.1425 -CREATE OPERATOR CLASS epoint_ops
  5.1426 -  DEFAULT FOR TYPE epoint USING gist AS
  5.1427 -  OPERATOR  11 = ,
  5.1428 -  OPERATOR  22 &&  (epoint, ebox),
  5.1429 -  OPERATOR 222 <@  (epoint, ebox),
  5.1430 -  OPERATOR  23 &&  (epoint, ecircle),
  5.1431 -  OPERATOR  24 &&  (epoint, ecluster),
  5.1432 -  OPERATOR 124 &&+ (epoint, ecluster),
  5.1433 -  OPERATOR 224 <@  (epoint, ecluster),
  5.1434 -  OPERATOR  31 <-> (epoint, epoint) FOR ORDER BY float_ops,
  5.1435 -  OPERATOR  32 <-> (epoint, ebox) FOR ORDER BY float_ops,
  5.1436 -  OPERATOR  33 <-> (epoint, ecircle) FOR ORDER BY float_ops,
  5.1437 -  OPERATOR  34 <-> (epoint, ecluster) FOR ORDER BY float_ops,
  5.1438 -  FUNCTION 1 pgl_gist_consistent(internal, internal, smallint, oid, internal),
  5.1439 -  FUNCTION 2 pgl_gist_union(internal, internal),
  5.1440 -  FUNCTION 3 pgl_gist_compress_epoint(internal),
  5.1441 -  FUNCTION 4 pgl_gist_decompress(internal),
  5.1442 -  FUNCTION 5 pgl_gist_penalty(internal, internal, internal),
  5.1443 -  FUNCTION 6 pgl_gist_picksplit(internal, internal),
  5.1444 -  FUNCTION 7 pgl_gist_same(internal, internal, internal),
  5.1445 -  FUNCTION 8 pgl_gist_distance(internal, internal, smallint, oid),
  5.1446 -  STORAGE ekey_point;
  5.1447 -
  5.1448 -CREATE OPERATOR CLASS ecircle_ops
  5.1449 -  DEFAULT FOR TYPE ecircle USING gist AS
  5.1450 -  OPERATOR  13 = ,
  5.1451 -  OPERATOR  21 &&  (ecircle, epoint),
  5.1452 -  OPERATOR  22 &&  (ecircle, ebox),
  5.1453 -  OPERATOR 122 &&+ (ecircle, ebox),
  5.1454 -  OPERATOR  23 &&  (ecircle, ecircle),
  5.1455 -  OPERATOR  24 &&  (ecircle, ecluster),
  5.1456 -  OPERATOR 124 &&+ (ecircle, ecluster),
  5.1457 -  OPERATOR  31 <-> (ecircle, epoint) FOR ORDER BY float_ops,
  5.1458 -  OPERATOR  32 <-> (ecircle, ebox) FOR ORDER BY float_ops,
  5.1459 -  OPERATOR  33 <-> (ecircle, ecircle) FOR ORDER BY float_ops,
  5.1460 -  OPERATOR  34 <-> (ecircle, ecluster) FOR ORDER BY float_ops,
  5.1461 -  FUNCTION 1 pgl_gist_consistent(internal, internal, smallint, oid, internal),
  5.1462 -  FUNCTION 2 pgl_gist_union(internal, internal),
  5.1463 -  FUNCTION 3 pgl_gist_compress_ecircle(internal),
  5.1464 -  FUNCTION 4 pgl_gist_decompress(internal),
  5.1465 -  FUNCTION 5 pgl_gist_penalty(internal, internal, internal),
  5.1466 -  FUNCTION 6 pgl_gist_picksplit(internal, internal),
  5.1467 -  FUNCTION 7 pgl_gist_same(internal, internal, internal),
  5.1468 -  FUNCTION 8 pgl_gist_distance(internal, internal, smallint, oid),
  5.1469 -  STORAGE ekey_area;
  5.1470 -
  5.1471 -CREATE OPERATOR CLASS ecluster_ops
  5.1472 -  DEFAULT FOR TYPE ecluster USING gist AS
  5.1473 -  OPERATOR  21 &&  (ecluster, epoint),
  5.1474 -  OPERATOR 121 &&+ (ecluster, epoint),
  5.1475 -  OPERATOR 221 @>  (ecluster, epoint),
  5.1476 -  OPERATOR  22 &&  (ecluster, ebox),
  5.1477 -  OPERATOR 122 &&+ (ecluster, ebox),
  5.1478 -  OPERATOR 222 @>  (ecluster, ebox),
  5.1479 -  OPERATOR 322 <@  (ecluster, ebox),
  5.1480 -  OPERATOR  23 &&  (ecluster, ecircle),
  5.1481 -  OPERATOR 123 &&+ (ecluster, ecircle),
  5.1482 -  OPERATOR  24 &&  (ecluster, ecluster),
  5.1483 -  OPERATOR 124 &&+ (ecluster, ecluster),
  5.1484 -  OPERATOR 224 @>  (ecluster, ecluster),
  5.1485 -  OPERATOR 324 <@  (ecluster, ecluster),
  5.1486 -  OPERATOR  31 <-> (ecluster, epoint) FOR ORDER BY float_ops,
  5.1487 -  OPERATOR  32 <-> (ecluster, ebox) FOR ORDER BY float_ops,
  5.1488 -  OPERATOR  33 <-> (ecluster, ecircle) FOR ORDER BY float_ops,
  5.1489 -  OPERATOR  34 <-> (ecluster, ecluster) FOR ORDER BY float_ops,
  5.1490 -  FUNCTION 1 pgl_gist_consistent(internal, internal, smallint, oid, internal),
  5.1491 -  FUNCTION 2 pgl_gist_union(internal, internal),
  5.1492 -  FUNCTION 3 pgl_gist_compress_ecluster(internal),
  5.1493 -  FUNCTION 4 pgl_gist_decompress(internal),
  5.1494 -  FUNCTION 5 pgl_gist_penalty(internal, internal, internal),
  5.1495 -  FUNCTION 6 pgl_gist_picksplit(internal, internal),
  5.1496 -  FUNCTION 7 pgl_gist_same(internal, internal, internal),
  5.1497 -  FUNCTION 8 pgl_gist_distance(internal, internal, smallint, oid),
  5.1498 -  STORAGE ekey_area;
  5.1499 -
  5.1500 -
  5.1501 ----------------------
  5.1502 --- alias functions --
  5.1503 ----------------------
  5.1504 -
  5.1505 -CREATE FUNCTION distance(epoint, epoint)
  5.1506 -  RETURNS float8
  5.1507 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1 <-> $2';
  5.1508 -
  5.1509 -CREATE FUNCTION distance(ecluster, epoint)
  5.1510 -  RETURNS float8
  5.1511 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1 <-> $2';
  5.1512 -
  5.1513 -CREATE FUNCTION distance_within(epoint, epoint, float8)
  5.1514 -  RETURNS boolean
  5.1515 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1 && ecircle($2, $3)';
  5.1516 -
  5.1517 -CREATE FUNCTION distance_within(ecluster, epoint, float8)
  5.1518 -  RETURNS boolean
  5.1519 -  LANGUAGE sql IMMUTABLE AS 'SELECT $1 && ecircle($2, $3)';
  5.1520 -
  5.1521 -
  5.1522 ---------------------------------
  5.1523 --- other data storage formats --
  5.1524 ---------------------------------
  5.1525 -
  5.1526 -CREATE FUNCTION coords_to_epoint(float8, float8, text = 'epoint_lonlat')
  5.1527 -  RETURNS epoint
  5.1528 -  LANGUAGE plpgsql IMMUTABLE STRICT AS $$
  5.1529 -    DECLARE
  5.1530 -      "result" epoint;
  5.1531 -    BEGIN
  5.1532 -      IF $3 = 'epoint_lonlat' THEN
  5.1533 -        -- avoid dynamic command execution for better performance
  5.1534 -        RETURN epoint($2, $1);
  5.1535 -      END IF;
  5.1536 -      IF $3 = 'epoint' OR $3 = 'epoint_latlon' THEN
  5.1537 -        -- avoid dynamic command execution for better performance
  5.1538 -        RETURN epoint($1, $2);
  5.1539 -      END IF;
  5.1540 -      EXECUTE 'SELECT ' || $3 || '($1, $2)' INTO STRICT "result" USING $1, $2;
  5.1541 -      RETURN "result";
  5.1542 -    END;
  5.1543 -  $$;
  5.1544 -
  5.1545 -CREATE FUNCTION GeoJSON_to_epoint(jsonb, text = 'epoint_lonlat')
  5.1546 -  RETURNS epoint
  5.1547 -  LANGUAGE sql IMMUTABLE STRICT AS $$
  5.1548 -    SELECT CASE
  5.1549 -    WHEN $1->>'type' = 'Point' THEN
  5.1550 -      coords_to_epoint(
  5.1551 -        ($1->'coordinates'->>1)::float8,
  5.1552 -        ($1->'coordinates'->>0)::float8,
  5.1553 -        $2
  5.1554 -      )
  5.1555 -    WHEN $1->>'type' = 'Feature' THEN
  5.1556 -      GeoJSON_to_epoint($1->'geometry', $2)
  5.1557 -    ELSE
  5.1558 -      NULL
  5.1559 -    END
  5.1560 -  $$;
  5.1561 -
  5.1562 -CREATE FUNCTION GeoJSON_to_ecluster(jsonb, text = 'epoint_lonlat')
  5.1563 -  RETURNS ecluster
  5.1564 -  LANGUAGE sql IMMUTABLE STRICT AS $$
  5.1565 -    SELECT CASE $1->>'type'
  5.1566 -    WHEN 'Point' THEN
  5.1567 -      coords_to_epoint(
  5.1568 -        ($1->'coordinates'->>1)::float8,
  5.1569 -        ($1->'coordinates'->>0)::float8,
  5.1570 -        $2
  5.1571 -      )::ecluster
  5.1572 -    WHEN 'MultiPoint' THEN
  5.1573 -      ( SELECT ecluster_create_multipoint(array_agg(
  5.1574 -          coords_to_epoint(
  5.1575 -            ("coord"->>1)::float8,
  5.1576 -            ("coord"->>0)::float8,
  5.1577 -            $2
  5.1578 -          )
  5.1579 -        ))
  5.1580 -        FROM jsonb_array_elements($1->'coordinates') AS "coord"
  5.1581 -      )
  5.1582 -    WHEN 'LineString' THEN
  5.1583 -      ( SELECT ecluster_create_path(array_agg(
  5.1584 -          coords_to_epoint(
  5.1585 -            ("coord"->>1)::float8,
  5.1586 -            ("coord"->>0)::float8,
  5.1587 -            $2
  5.1588 -          )
  5.1589 -        ))
  5.1590 -        FROM jsonb_array_elements($1->'coordinates') AS "coord"
  5.1591 -      )
  5.1592 -    WHEN 'MultiLineString' THEN
  5.1593 -      ( SELECT ecluster_concat(array_agg(
  5.1594 -          ( SELECT ecluster_create_path(array_agg(
  5.1595 -              coords_to_epoint(
  5.1596 -                ("coord"->>1)::float8,
  5.1597 -                ("coord"->>0)::float8,
  5.1598 -                $2
  5.1599 -              )
  5.1600 -            ))
  5.1601 -            FROM jsonb_array_elements("coord_array") AS "coord"
  5.1602 -          )
  5.1603 -        ))
  5.1604 -        FROM jsonb_array_elements($1->'coordinates') AS "coord_array"
  5.1605 -      )
  5.1606 -    WHEN 'Polygon' THEN
  5.1607 -      ( SELECT ecluster_concat(array_agg(
  5.1608 -          ( SELECT ecluster_create_polygon(array_agg(
  5.1609 -              coords_to_epoint(
  5.1610 -                ("coord"->>1)::float8,
  5.1611 -                ("coord"->>0)::float8,
  5.1612 -                $2
  5.1613 -              )
  5.1614 -            ))
  5.1615 -            FROM jsonb_array_elements("coord_array") AS "coord"
  5.1616 -          )
  5.1617 -        ))
  5.1618 -        FROM jsonb_array_elements($1->'coordinates') AS "coord_array"
  5.1619 -      )
  5.1620 -    WHEN 'MultiPolygon' THEN
  5.1621 -      ( SELECT ecluster_concat(array_agg(
  5.1622 -          ( SELECT ecluster_concat(array_agg(
  5.1623 -              ( SELECT ecluster_create_polygon(array_agg(
  5.1624 -                  coords_to_epoint(
  5.1625 -                    ("coord"->>1)::float8,
  5.1626 -                    ("coord"->>0)::float8,
  5.1627 -                    $2
  5.1628 -                  )
  5.1629 -                ))
  5.1630 -                FROM jsonb_array_elements("coord_array") AS "coord"
  5.1631 -              )
  5.1632 -            ))
  5.1633 -            FROM jsonb_array_elements("coord_array_array") AS "coord_array"
  5.1634 -          )
  5.1635 -        ))
  5.1636 -        FROM jsonb_array_elements($1->'coordinates') AS "coord_array_array"
  5.1637 -      )
  5.1638 -    WHEN 'Feature' THEN
  5.1639 -      GeoJSON_to_ecluster($1->'geometry', $2)
  5.1640 -    WHEN 'FeatureCollection' THEN
  5.1641 -      ( SELECT ecluster_concat(array_agg(
  5.1642 -          GeoJSON_to_ecluster("feature", $2)
  5.1643 -        ))
  5.1644 -        FROM jsonb_array_elements($1->'features') AS "feature"
  5.1645 -      )
  5.1646 -    ELSE
  5.1647 -      NULL
  5.1648 -    END
  5.1649 -  $$;
  5.1650 -
     6.1 --- a/latlon.control	Fri Oct 21 12:51:37 2016 +0200
     6.2 +++ b/latlon.control	Fri Oct 21 12:56:11 2016 +0200
     6.3 @@ -1,3 +1,3 @@
     6.4  comment = 'Geographic data types and spatial indexing for the WGS-84 spheroid'
     6.5 -default_version = '0.7'
     6.6 +default_version = '0.8'
     6.7  relocatable = true

Impressum / About Us