~ubuntu-branches/ubuntu/trusty/postgis/trusty-security

« back to all changes in this revision

Viewing changes to lwgeom/lwpostgis.sql.in

  • Committer: Bazaar Package Importer
  • Author(s): Francesco Paolo Lovergine
  • Date: 2009-12-11 13:10:34 UTC
  • mfrom: (1.1.9 upstream) (5.2.1 experimental)
  • Revision ID: james.westby@ubuntu.com-20091211131034-wmsz69wxvt95pe5r
Tags: 1.4.0-2
* Upload to unstable.
* Better parameterized debian/rules against postgis $(VERSION).
* Added dblatex and libcunit1-dev among build-deps.
* Added postgis_comments.sql to contrib/ SQL templates.
* Dropping 8.3 support, no more supported for squeeze.
  (closes: #559587)
* Do not stop on error in postrm if the target dir does not exist.
  (closes: #560409)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
--
2
 
--
3
 
--
4
 
--          other changes will require a bump in Major version.
5
 
--          Currently only function replaceble by CREATE OR REPLACE
6
 
--          are cleanly handled.
7
 
--
8
 
 
9
 
#include "sqldefines.h"
10
 
 
11
 
BEGIN;
12
 
 
13
 
-------------------------------------------------------------------
14
 
-------------------------------------------------------------------
15
 
 
16
 
#if USE_VERSION < 73
17
 
# define HISTOGRAM_IN_REP opaque
18
 
# define HISTOGRAM_OUT_REP opaque
19
 
#else
20
 
# define HISTOGRAM_IN_REP histogram2d
21
 
# define HISTOGRAM_OUT_REP cstring
22
 
#endif
23
 
 
24
 
CREATEFUNCTION histogram2d_in(HISTOGRAM_OUT_REP)
25
 
        RETURNS HISTOGRAM_IN_REP
26
 
        AS '@MODULE_FILENAME@', 'lwhistogram2d_in'
27
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
28
 
 
29
 
CREATEFUNCTION ST_histogram2d_in(HISTOGRAM_OUT_REP)
30
 
        RETURNS HISTOGRAM_IN_REP
31
 
        AS '@MODULE_FILENAME@', 'lwhistogram2d_in'
32
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
33
 
 
34
 
CREATEFUNCTION histogram2d_out(HISTOGRAM_IN_REP)
35
 
        RETURNS HISTOGRAM_OUT_REP
36
 
        AS '@MODULE_FILENAME@', 'lwhistogram2d_out'
37
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
38
 
 
39
 
CREATEFUNCTION ST_histogram2d_out(HISTOGRAM_IN_REP)
40
 
        RETURNS HISTOGRAM_OUT_REP
41
 
        AS '@MODULE_FILENAME@', 'lwhistogram2d_out'
42
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
43
 
 
44
 
CREATE TYPE histogram2d (
45
 
        alignment = double,
46
 
        internallength = variable,
47
 
        input = ST_histogram2d_in,
48
 
        output = ST_histogram2d_out,
49
 
        storage = main
50
 
);
51
 
 
52
 
-------------------------------------------------------------------
53
 
-------------------------------------------------------------------
54
 
 
55
 
#if USE_VERSION < 73
56
 
# define SPHEROID_IN_REP opaque
57
 
# define SPHEROID_OUT_REP opaque
58
 
#else
59
 
# define SPHEROID_IN_REP spheroid
60
 
# define SPHEROID_OUT_REP cstring
61
 
#endif
62
 
 
63
 
CREATEFUNCTION spheroid_in(SPHEROID_OUT_REP)
64
 
        RETURNS SPHEROID_IN_REP
65
 
        AS '@MODULE_FILENAME@','ellipsoid_in'
66
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
67
 
 
68
 
CREATEFUNCTION ST_spheroid_in(SPHEROID_OUT_REP)
69
 
        RETURNS SPHEROID_IN_REP
70
 
        AS '@MODULE_FILENAME@','ellipsoid_in'
71
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
72
 
 
73
 
CREATEFUNCTION spheroid_out(SPHEROID_IN_REP)
74
 
        RETURNS SPHEROID_OUT_REP
75
 
        AS '@MODULE_FILENAME@','ellipsoid_out'
76
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
77
 
 
78
 
CREATEFUNCTION ST_spheroid_out(SPHEROID_IN_REP)
79
 
        RETURNS SPHEROID_OUT_REP
80
 
        AS '@MODULE_FILENAME@','ellipsoid_out'
81
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
82
 
 
83
 
CREATE TYPE spheroid (
84
 
        alignment = double,
85
 
        internallength = 65,
86
 
        input = ST_spheroid_in,
87
 
        output = ST_spheroid_out
88
 
);
89
 
 
90
 
-------------------------------------------------------------------
91
 
-------------------------------------------------------------------
92
 
 
93
 
#if USE_VERSION < 73
94
 
# define GEOMETRY_IN_REP opaque
95
 
# define GEOMETRY_OUT_REP opaque
96
 
#else
97
 
# define GEOMETRY_IN_REP geometry
98
 
# define GEOMETRY_OUT_REP cstring
99
 
#endif
100
 
 
101
 
CREATEFUNCTION geometry_in(GEOMETRY_OUT_REP)
102
 
        RETURNS geometry
103
 
        AS '@MODULE_FILENAME@','LWGEOM_in'
104
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
105
 
 
106
 
CREATEFUNCTION ST_geometry_in(GEOMETRY_OUT_REP)
107
 
        RETURNS geometry
108
 
        AS '@MODULE_FILENAME@','LWGEOM_in'
109
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
110
 
 
111
 
CREATEFUNCTION geometry_out(GEOMETRY_IN_REP)
112
 
        RETURNS cstring
113
 
        AS '@MODULE_FILENAME@','LWGEOM_out'
114
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
115
 
 
116
 
CREATEFUNCTION ST_geometry_out(GEOMETRY_IN_REP)
117
 
        RETURNS cstring
118
 
        AS '@MODULE_FILENAME@','LWGEOM_out'
119
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
120
 
 
121
 
#if USE_VERSION >= 80
122
 
CREATEFUNCTION geometry_analyze(internal)
123
 
        RETURNS bool
124
 
        AS '@MODULE_FILENAME@', 'LWGEOM_analyze'
125
 
        LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (isstrict);
126
 
 
127
 
CREATEFUNCTION ST_geometry_analyze(internal)
128
 
        RETURNS bool
129
 
        AS '@MODULE_FILENAME@', 'LWGEOM_analyze'
130
 
        LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (isstrict);
131
 
#endif
132
 
 
133
 
#if USE_VERSION > 73
134
 
CREATEFUNCTION geometry_recv(internal)
135
 
        RETURNS geometry
136
 
        AS '@MODULE_FILENAME@','LWGEOM_recv'
137
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
138
 
 
139
 
CREATEFUNCTION ST_geometry_recv(internal)
140
 
        RETURNS geometry
141
 
        AS '@MODULE_FILENAME@','LWGEOM_recv'
142
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
143
 
 
144
 
CREATEFUNCTION geometry_send(geometry)
145
 
        RETURNS bytea
146
 
        AS '@MODULE_FILENAME@','LWGEOM_send'
147
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
148
 
 
149
 
CREATEFUNCTION ST_geometry_send(geometry)
150
 
        RETURNS bytea
151
 
        AS '@MODULE_FILENAME@','LWGEOM_send'
152
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
153
 
#endif
154
 
 
155
 
CREATE TYPE geometry (
156
 
        internallength = variable,
157
 
        input = ST_geometry_in,
158
 
        output = ST_geometry_out,
159
 
#if USE_VERSION > 73
160
 
        send = ST_geometry_send,
161
 
        receive = ST_geometry_recv,
162
 
#endif
163
 
        delimiter = ':',
164
 
#if USE_VERSION >= 80
165
 
        analyze = ST_geometry_analyze,
166
 
#endif 
167
 
        storage = main
168
 
);
169
 
 
170
 
-------------------------------------------
171
 
-------------------------------------------
172
 
 
173
 
CREATE OR REPLACE FUNCTION Affine(geometry,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8)
174
 
        RETURNS geometry
175
 
        AS '@MODULE_FILENAME@', 'LWGEOM_affine'
176
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; 
177
 
 
178
 
CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8)
179
 
        RETURNS geometry
180
 
        AS '@MODULE_FILENAME@', 'LWGEOM_affine'
181
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; 
182
 
 
183
 
CREATE OR REPLACE FUNCTION Affine(geometry,float8,float8,float8,float8,float8,float8)
184
 
        RETURNS geometry
185
 
        AS 'SELECT affine($1,  $2, $3, 0,  $4, $5, 0,  0, 0, 1,  $6, $7, 0)'
186
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
187
 
 
188
 
CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8)
189
 
        RETURNS geometry
190
 
        AS 'SELECT affine($1,  $2, $3, 0,  $4, $5, 0,  0, 0, 1,  $6, $7, 0)'
191
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
192
 
 
193
 
CREATEFUNCTION RotateZ(geometry,float8)
194
 
        RETURNS geometry
195
 
        AS 'SELECT affine($1,  cos($2), -sin($2), 0,  sin($2), cos($2), 0,  0, 0, 1,  0, 0, 0)'
196
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
197
 
 
198
 
CREATEFUNCTION ST_RotateZ(geometry,float8)
199
 
        RETURNS geometry
200
 
        AS 'SELECT affine($1,  cos($2), -sin($2), 0,  sin($2), cos($2), 0,  0, 0, 1,  0, 0, 0)'
201
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
202
 
 
203
 
CREATEFUNCTION Rotate(geometry,float8)
204
 
        RETURNS geometry
205
 
        AS 'SELECT rotateZ($1, $2)'
206
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
207
 
 
208
 
CREATEFUNCTION ST_Rotate(geometry,float8)
209
 
        RETURNS geometry
210
 
        AS 'SELECT rotateZ($1, $2)'
211
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
212
 
 
213
 
CREATEFUNCTION RotateX(geometry,float8)
214
 
        RETURNS geometry
215
 
        AS 'SELECT affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)'
216
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
217
 
 
218
 
CREATEFUNCTION ST_RotateX(geometry,float8)
219
 
        RETURNS geometry
220
 
        AS 'SELECT affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)'
221
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
222
 
 
223
 
CREATEFUNCTION RotateY(geometry,float8)
224
 
        RETURNS geometry
225
 
        AS 'SELECT affine($1,  cos($2), 0, sin($2),  0, 1, 0,  -sin($2), 0, cos($2), 0,  0, 0)'
226
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
227
 
 
228
 
CREATEFUNCTION ST_RotateY(geometry,float8)
229
 
        RETURNS geometry
230
 
        AS 'SELECT affine($1,  cos($2), 0, sin($2),  0, 1, 0,  -sin($2), 0, cos($2), 0,  0, 0)'
231
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
232
 
 
233
 
CREATEFUNCTION Translate(geometry,float8,float8,float8)
234
 
        RETURNS geometry
235
 
        AS 'SELECT affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)'
236
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
237
 
 
238
 
CREATEFUNCTION ST_Translate(geometry,float8,float8,float8)
239
 
        RETURNS geometry
240
 
        AS 'SELECT affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)'
241
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
242
 
 
243
 
CREATEFUNCTION Translate(geometry,float8,float8)
244
 
        RETURNS geometry
245
 
        AS 'SELECT translate($1, $2, $3, 0)'
246
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT;
247
 
 
248
 
CREATEFUNCTION ST_Translate(geometry,float8,float8)
249
 
        RETURNS geometry
250
 
        AS 'SELECT translate($1, $2, $3, 0)'
251
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT;
252
 
 
253
 
CREATEFUNCTION Scale(geometry,float8,float8,float8)
254
 
        RETURNS geometry
255
 
        AS 'SELECT affine($1,  $2, 0, 0,  0, $3, 0,  0, 0, $4,  0, 0, 0)'
256
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
257
 
 
258
 
CREATEFUNCTION ST_Scale(geometry,float8,float8,float8)
259
 
        RETURNS geometry
260
 
        AS 'SELECT affine($1,  $2, 0, 0,  0, $3, 0,  0, 0, $4,  0, 0, 0)'
261
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
262
 
 
263
 
CREATEFUNCTION Scale(geometry,float8,float8)
264
 
        RETURNS geometry
265
 
        AS 'SELECT scale($1, $2, $3, 1)'
266
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
267
 
 
268
 
CREATEFUNCTION ST_Scale(geometry,float8,float8)
269
 
        RETURNS geometry
270
 
        AS 'SELECT scale($1, $2, $3, 1)'
271
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; 
272
 
 
273
 
CREATEFUNCTION transscale(geometry,float8,float8,float8,float8)
274
 
        RETURNS geometry
275
 
        AS 'SELECT affine($1,  $4, 0, 0,  0, $5, 0, 
276
 
                0, 0, 1,  $2 * $4, $3 * $5, 0)'
277
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT;
278
 
 
279
 
CREATEFUNCTION ST_transscale(geometry,float8,float8,float8,float8)
280
 
        RETURNS geometry
281
 
        AS 'SELECT affine($1,  $4, 0, 0,  0, $5, 0, 
282
 
                0, 0, 1,  $2 * $4, $3 * $5, 0)'
283
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT;
284
 
 
285
 
CREATEFUNCTION shift_longitude(geometry)
286
 
        RETURNS geometry
287
 
        AS '@MODULE_FILENAME@', 'LWGEOM_longitude_shift'
288
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; 
289
 
 
290
 
CREATEFUNCTION ST_shift_longitude(geometry)
291
 
        RETURNS geometry
292
 
        AS '@MODULE_FILENAME@', 'LWGEOM_longitude_shift'
293
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; 
294
 
 
295
 
-------------------------------------------------------------------
296
 
-------------------------------------------------------------------
297
 
 
298
 
#if USE_VERSION < 73
299
 
# define BOX3D_IN_REP opaque
300
 
# define BOX3D_OUT_REP opaque
301
 
#else
302
 
# define BOX3D_IN_REP box3d
303
 
# define BOX3D_OUT_REP cstring
304
 
#endif
305
 
 
306
 
CREATEFUNCTION box3d_in(BOX3D_OUT_REP)
307
 
        RETURNS BOX3D_IN_REP
308
 
        AS '@MODULE_FILENAME@', 'BOX3D_in'
309
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
310
 
 
311
 
CREATEFUNCTION box3d_out(BOX3D_IN_REP)
312
 
        RETURNS BOX3D_OUT_REP
313
 
        AS '@MODULE_FILENAME@', 'BOX3D_out'
314
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
315
 
 
316
 
CREATEFUNCTION ST_box3d_in(BOX3D_OUT_REP)
317
 
        RETURNS BOX3D_IN_REP
318
 
        AS '@MODULE_FILENAME@', 'BOX3D_in'
319
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
320
 
 
321
 
CREATEFUNCTION ST_box3d_out(BOX3D_IN_REP)
322
 
        RETURNS BOX3D_OUT_REP
323
 
        AS '@MODULE_FILENAME@', 'BOX3D_out'
324
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
325
 
 
326
 
CREATE TYPE box3d (
327
 
        alignment = double,
328
 
        internallength = 48,
329
 
        input = ST_box3d_in,
330
 
        output = ST_box3d_out
331
 
);
332
 
 
333
 
CREATEFUNCTION xmin(box3d)
334
 
        RETURNS FLOAT8
335
 
        AS '@MODULE_FILENAME@','BOX3D_xmin'
336
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
337
 
 
338
 
CREATEFUNCTION ST_XMin(box3d)
339
 
        RETURNS FLOAT8
340
 
        AS '@MODULE_FILENAME@','BOX3D_xmin'
341
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
342
 
 
343
 
CREATEFUNCTION ymin(box3d)
344
 
        RETURNS FLOAT8
345
 
        AS '@MODULE_FILENAME@','BOX3D_ymin'
346
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
347
 
 
348
 
CREATEFUNCTION ST_YMin(box3d)
349
 
        RETURNS FLOAT8
350
 
        AS '@MODULE_FILENAME@','BOX3D_ymin'
351
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
352
 
 
353
 
CREATEFUNCTION zmin(box3d)
354
 
        RETURNS FLOAT8
355
 
        AS '@MODULE_FILENAME@','BOX3D_zmin'
356
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
357
 
 
358
 
CREATEFUNCTION ST_ZMin(box3d)
359
 
        RETURNS FLOAT8
360
 
        AS '@MODULE_FILENAME@','BOX3D_zmin'
361
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
362
 
 
363
 
CREATEFUNCTION xmax(box3d)
364
 
        RETURNS FLOAT8
365
 
        AS '@MODULE_FILENAME@','BOX3D_xmax'
366
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
367
 
 
368
 
CREATEFUNCTION ST_XMax(box3d)
369
 
        RETURNS FLOAT8
370
 
        AS '@MODULE_FILENAME@','BOX3D_xmax'
371
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
372
 
 
373
 
CREATEFUNCTION ymax(box3d)
374
 
        RETURNS FLOAT8
375
 
        AS '@MODULE_FILENAME@','BOX3D_ymax'
376
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
377
 
 
378
 
CREATEFUNCTION ST_YMax(box3d)
379
 
        RETURNS FLOAT8
380
 
        AS '@MODULE_FILENAME@','BOX3D_ymax'
381
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
382
 
 
383
 
CREATEFUNCTION zmax(box3d)
384
 
        RETURNS FLOAT8
385
 
        AS '@MODULE_FILENAME@','BOX3D_zmax'
386
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
387
 
 
388
 
CREATEFUNCTION ST_ZMax(box3d)
389
 
        RETURNS FLOAT8
390
 
        AS '@MODULE_FILENAME@','BOX3D_zmax'
391
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
392
 
 
393
 
-------------------------------------------------------------------
394
 
-------------------------------------------------------------------
395
 
 
396
 
#if USE_VERSION < 73
397
 
# define CHIP_IN_REP opaque
398
 
# define CHIP_OUT_REP opaque
399
 
#else
400
 
# define CHIP_IN_REP chip
401
 
# define CHIP_OUT_REP cstring
402
 
#endif
403
 
 
404
 
CREATEFUNCTION chip_in(CHIP_OUT_REP)
405
 
        RETURNS CHIP_IN_REP
406
 
        AS '@MODULE_FILENAME@','CHIP_in'
407
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
408
 
        
409
 
CREATEFUNCTION ST_chip_in(CHIP_OUT_REP)
410
 
        RETURNS CHIP_IN_REP
411
 
        AS '@MODULE_FILENAME@','CHIP_in'
412
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
413
 
 
414
 
CREATEFUNCTION chip_out(CHIP_IN_REP)
415
 
        RETURNS CHIP_OUT_REP
416
 
        AS '@MODULE_FILENAME@','CHIP_out'
417
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
418
 
 
419
 
CREATEFUNCTION ST_chip_out(CHIP_IN_REP)
420
 
        RETURNS CHIP_OUT_REP
421
 
        AS '@MODULE_FILENAME@','CHIP_out'
422
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
423
 
 
424
 
CREATE TYPE chip (
425
 
        alignment = double,
426
 
        internallength = variable,
427
 
        input = ST_chip_in,
428
 
        output = ST_chip_out,
429
 
        storage = extended
430
 
);
431
 
 
432
 
-----------------------------------------------------------------------
433
 
-----------------------------------------------------------------------
434
 
 
435
 
 
436
 
#if USE_VERSION < 73
437
 
# define BOX2D_IN_REP opaque
438
 
# define BOX2D_OUT_REP opaque
439
 
#else
440
 
# define BOX2D_IN_REP box2d
441
 
# define BOX2D_OUT_REP cstring
442
 
#endif
443
 
 
444
 
CREATEFUNCTION box2d_in(BOX2D_OUT_REP)
445
 
        RETURNS box2d
446
 
        AS '@MODULE_FILENAME@','BOX2DFLOAT4_in'
447
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
448
 
 
449
 
CREATEFUNCTION ST_box2d_in(BOX2D_OUT_REP)
450
 
        RETURNS box2d
451
 
        AS '@MODULE_FILENAME@','BOX2DFLOAT4_in'
452
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
453
 
 
454
 
CREATEFUNCTION box2d_out(BOX2D_IN_REP)
455
 
        RETURNS cstring
456
 
        AS '@MODULE_FILENAME@','BOX2DFLOAT4_out'
457
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
458
 
 
459
 
CREATEFUNCTION ST_box2d_out(BOX2D_IN_REP)
460
 
        RETURNS cstring
461
 
        AS '@MODULE_FILENAME@','BOX2DFLOAT4_out'
462
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
463
 
 
464
 
CREATE TYPE box2d (
465
 
        internallength = 16,
466
 
        input = ST_box2d_in,
467
 
        output = ST_box2d_out,
468
 
        storage = plain
469
 
);
470
 
 
471
 
---- BOX2D  support functions
472
 
 
473
 
CREATEFUNCTION box2d_overleft(box2d, box2d) 
474
 
        RETURNS bool
475
 
        AS '@MODULE_FILENAME@', 'BOX2D_overleft'
476
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
477
 
 
478
 
CREATEFUNCTION ST_box2d_overleft(box2d, box2d) 
479
 
        RETURNS bool
480
 
        AS '@MODULE_FILENAME@', 'BOX2D_overleft'
481
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
482
 
 
483
 
CREATEFUNCTION box2d_overright(box2d, box2d) 
484
 
        RETURNS bool
485
 
        AS '@MODULE_FILENAME@', 'BOX2D_overright' 
486
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
487
 
 
488
 
CREATEFUNCTION ST_box2d_overright(box2d, box2d) 
489
 
        RETURNS bool
490
 
        AS '@MODULE_FILENAME@', 'BOX2D_overright' 
491
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
492
 
 
493
 
CREATEFUNCTION box2d_left(box2d, box2d) 
494
 
        RETURNS bool
495
 
        AS '@MODULE_FILENAME@', 'BOX2D_left' 
496
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
497
 
 
498
 
CREATEFUNCTION ST_box2d_left(box2d, box2d) 
499
 
        RETURNS bool
500
 
        AS '@MODULE_FILENAME@', 'BOX2D_left' 
501
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
502
 
 
503
 
CREATEFUNCTION box2d_right(box2d, box2d) 
504
 
        RETURNS bool
505
 
        AS '@MODULE_FILENAME@', 'BOX2D_right' 
506
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
507
 
 
508
 
CREATEFUNCTION ST_box2d_right(box2d, box2d) 
509
 
        RETURNS bool
510
 
        AS '@MODULE_FILENAME@', 'BOX2D_right' 
511
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
512
 
 
513
 
CREATEFUNCTION box2d_contain(box2d, box2d) 
514
 
        RETURNS bool
515
 
        AS '@MODULE_FILENAME@', 'BOX2D_contain'
516
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
517
 
 
518
 
CREATEFUNCTION ST_box2d_contain(box2d, box2d) 
519
 
        RETURNS bool
520
 
        AS '@MODULE_FILENAME@', 'BOX2D_contain'
521
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
522
 
 
523
 
CREATEFUNCTION box2d_contained(box2d, box2d) 
524
 
        RETURNS bool
525
 
        AS '@MODULE_FILENAME@', 'BOX2D_contained'
526
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
527
 
 
528
 
CREATEFUNCTION ST_box2d_contained(box2d, box2d) 
529
 
        RETURNS bool
530
 
        AS '@MODULE_FILENAME@', 'BOX2D_contained'
531
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
532
 
 
533
 
CREATEFUNCTION box2d_overlap(box2d, box2d) 
534
 
        RETURNS bool
535
 
        AS '@MODULE_FILENAME@', 'BOX2D_overlap'
536
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
537
 
 
538
 
CREATEFUNCTION ST_box2d_overlap(box2d, box2d) 
539
 
        RETURNS bool
540
 
        AS '@MODULE_FILENAME@', 'BOX2D_overlap'
541
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
542
 
 
543
 
CREATEFUNCTION box2d_same(box2d, box2d) 
544
 
        RETURNS bool
545
 
        AS '@MODULE_FILENAME@', 'BOX2D_same'
546
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
547
 
 
548
 
CREATEFUNCTION ST_box2d_same(box2d, box2d) 
549
 
        RETURNS bool
550
 
        AS '@MODULE_FILENAME@', 'BOX2D_same'
551
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
552
 
 
553
 
CREATEFUNCTION box2d_intersects(box2d, box2d) 
554
 
        RETURNS bool
555
 
        AS '@MODULE_FILENAME@', 'BOX2D_intersects'
556
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
557
 
 
558
 
CREATEFUNCTION ST_box2d_intersects(box2d, box2d) 
559
 
        RETURNS bool
560
 
        AS '@MODULE_FILENAME@', 'BOX2D_intersects'
561
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
562
 
 
563
 
 
564
 
 
565
 
-------------------------------------------------------------------
566
 
-------------------------------------------------------------------
567
 
 
568
 
CREATEFUNCTION geometry_lt(geometry, geometry) 
569
 
        RETURNS bool
570
 
        AS '@MODULE_FILENAME@', 'lwgeom_lt'
571
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
572
 
 
573
 
CREATEFUNCTION ST_geometry_lt(geometry, geometry) 
574
 
        RETURNS bool
575
 
        AS '@MODULE_FILENAME@', 'lwgeom_lt'
576
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
577
 
 
578
 
CREATEFUNCTION geometry_le(geometry, geometry) 
579
 
        RETURNS bool
580
 
        AS '@MODULE_FILENAME@', 'lwgeom_le'
581
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
582
 
 
583
 
CREATEFUNCTION ST_geometry_le(geometry, geometry) 
584
 
        RETURNS bool
585
 
        AS '@MODULE_FILENAME@', 'lwgeom_le'
586
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
587
 
 
588
 
CREATEFUNCTION geometry_gt(geometry, geometry) 
589
 
        RETURNS bool
590
 
        AS '@MODULE_FILENAME@', 'lwgeom_gt'
591
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
592
 
 
593
 
CREATEFUNCTION ST_geometry_gt(geometry, geometry) 
594
 
        RETURNS bool
595
 
        AS '@MODULE_FILENAME@', 'lwgeom_gt'
596
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
597
 
 
598
 
CREATEFUNCTION geometry_ge(geometry, geometry) 
599
 
        RETURNS bool
600
 
        AS '@MODULE_FILENAME@', 'lwgeom_ge'
601
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
602
 
 
603
 
CREATEFUNCTION ST_geometry_ge(geometry, geometry) 
604
 
        RETURNS bool
605
 
        AS '@MODULE_FILENAME@', 'lwgeom_ge'
606
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
607
 
 
608
 
CREATEFUNCTION geometry_eq(geometry, geometry) 
609
 
        RETURNS bool
610
 
        AS '@MODULE_FILENAME@', 'lwgeom_eq'
611
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
612
 
 
613
 
CREATEFUNCTION ST_geometry_eq(geometry, geometry) 
614
 
        RETURNS bool
615
 
        AS '@MODULE_FILENAME@', 'lwgeom_eq'
616
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
617
 
 
618
 
CREATEFUNCTION geometry_cmp(geometry, geometry) 
619
 
        RETURNS integer
620
 
        AS '@MODULE_FILENAME@', 'lwgeom_cmp'
621
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
622
 
 
623
 
CREATEFUNCTION ST_geometry_cmp(geometry, geometry) 
624
 
        RETURNS integer
625
 
        AS '@MODULE_FILENAME@', 'lwgeom_cmp'
626
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
627
 
 
628
 
--
629
 
--
630
 
 
631
 
CREATE OPERATOR < (
632
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_lt,
633
 
   COMMUTATOR = '>', NEGATOR = '>=',
634
 
   RESTRICT = contsel, JOIN = contjoinsel
635
 
);
636
 
 
637
 
CREATE OPERATOR <= (
638
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_le,
639
 
   COMMUTATOR = '>=', NEGATOR = '>',
640
 
   RESTRICT = contsel, JOIN = contjoinsel
641
 
);
642
 
 
643
 
CREATE OPERATOR = (
644
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_eq,
645
 
   COMMUTATOR = '=', -- we might implement a faster negator here
646
 
   RESTRICT = contsel, JOIN = contjoinsel
647
 
);
648
 
 
649
 
CREATE OPERATOR >= (
650
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_ge,
651
 
   COMMUTATOR = '<=', NEGATOR = '<',
652
 
   RESTRICT = contsel, JOIN = contjoinsel
653
 
);
654
 
CREATE OPERATOR > (
655
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_gt,
656
 
   COMMUTATOR = '<', NEGATOR = '<=',
657
 
   RESTRICT = contsel, JOIN = contjoinsel
658
 
);
659
 
 
660
 
#if USE_VERSION >= 74
661
 
 
662
 
CREATE OPERATOR CLASS btree_geometry_ops
663
 
        DEFAULT FOR TYPE geometry USING btree AS
664
 
        OPERATOR        1       < ,
665
 
        OPERATOR        2       <= ,
666
 
        OPERATOR        3       = ,
667
 
        OPERATOR        4       >= ,
668
 
        OPERATOR        5       > ,
669
 
        FUNCTION        1       geometry_cmp (geometry, geometry);
670
 
 
671
 
#endif
672
 
 
673
 
 
674
 
-------------------------------------------------------------------
675
 
-------------------------------------------------------------------
676
 
#if USE_VERSION < 73
677
 
CREATEFUNCTION postgis_gist_sel(opaque, oid,  opaque, int4)
678
 
#else
679
 
CREATEFUNCTION postgis_gist_sel (internal, oid, internal, int4)
680
 
#endif
681
 
        RETURNS float8
682
 
        AS '@MODULE_FILENAME@', 'LWGEOM_gist_sel'
683
 
        LANGUAGE 'C';
684
 
 
685
 
#if USE_VERSION < 73
686
 
CREATEFUNCTION ST_postgis_gist_sel(opaque, oid,  opaque, int4)
687
 
#else
688
 
CREATEFUNCTION ST_postgis_gist_sel (internal, oid, internal, int4)
689
 
#endif
690
 
        RETURNS float8
691
 
        AS '@MODULE_FILENAME@', 'LWGEOM_gist_sel'
692
 
        LANGUAGE 'C';
693
 
 
694
 
#if USE_VERSION == 72
695
 
CREATEFUNCTION postgis_gist_joinsel(opaque, oid,  opaque)
696
 
#elif USE_VERSION == 73
697
 
CREATEFUNCTION postgis_gist_joinsel(internal, oid,  internal)
698
 
#else
699
 
CREATEFUNCTION postgis_gist_joinsel(internal, oid, internal, smallint)
700
 
#endif
701
 
        RETURNS float8
702
 
        AS '@MODULE_FILENAME@', 'LWGEOM_gist_joinsel'
703
 
        LANGUAGE 'C';
704
 
 
705
 
#if USE_VERSION == 72
706
 
CREATEFUNCTION ST_postgis_gist_joinsel(opaque, oid,  opaque)
707
 
#elif USE_VERSION == 73
708
 
CREATEFUNCTION ST_postgis_gist_joinsel(internal, oid,  internal)
709
 
#else
710
 
CREATEFUNCTION ST_postgis_gist_joinsel(internal, oid, internal, smallint)
711
 
#endif
712
 
        RETURNS float8
713
 
        AS '@MODULE_FILENAME@', 'LWGEOM_gist_joinsel'
714
 
        LANGUAGE 'C';
715
 
 
716
 
CREATEFUNCTION geometry_overleft(geometry, geometry) 
717
 
        RETURNS bool
718
 
        AS '@MODULE_FILENAME@', 'LWGEOM_overleft'
719
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
720
 
 
721
 
CREATEFUNCTION ST_geometry_overleft(geometry, geometry) 
722
 
        RETURNS bool
723
 
        AS '@MODULE_FILENAME@', 'LWGEOM_overleft'
724
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
725
 
 
726
 
CREATEFUNCTION geometry_overright(geometry, geometry) 
727
 
        RETURNS bool
728
 
        AS '@MODULE_FILENAME@', 'LWGEOM_overright'
729
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
730
 
 
731
 
CREATEFUNCTION ST_geometry_overright(geometry, geometry) 
732
 
        RETURNS bool
733
 
        AS '@MODULE_FILENAME@', 'LWGEOM_overright'
734
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
735
 
 
736
 
CREATEFUNCTION geometry_overabove(geometry, geometry) 
737
 
        RETURNS bool
738
 
        AS '@MODULE_FILENAME@', 'LWGEOM_overabove'
739
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
740
 
 
741
 
CREATEFUNCTION ST_geometry_overabove(geometry, geometry) 
742
 
        RETURNS bool
743
 
        AS '@MODULE_FILENAME@', 'LWGEOM_overabove'
744
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
745
 
 
746
 
CREATEFUNCTION geometry_overbelow(geometry, geometry) 
747
 
        RETURNS bool
748
 
        AS '@MODULE_FILENAME@', 'LWGEOM_overbelow'
749
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
750
 
 
751
 
CREATEFUNCTION ST_geometry_overbelow(geometry, geometry) 
752
 
        RETURNS bool
753
 
        AS '@MODULE_FILENAME@', 'LWGEOM_overbelow'
754
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
755
 
 
756
 
CREATEFUNCTION geometry_left(geometry, geometry) 
757
 
        RETURNS bool
758
 
        AS '@MODULE_FILENAME@', 'LWGEOM_left'
759
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
760
 
 
761
 
CREATEFUNCTION ST_geometry_left(geometry, geometry) 
762
 
        RETURNS bool
763
 
        AS '@MODULE_FILENAME@', 'LWGEOM_left'
764
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
765
 
 
766
 
CREATEFUNCTION geometry_right(geometry, geometry) 
767
 
        RETURNS bool
768
 
        AS '@MODULE_FILENAME@', 'LWGEOM_right'
769
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
770
 
 
771
 
CREATEFUNCTION ST_geometry_right(geometry, geometry) 
772
 
        RETURNS bool
773
 
        AS '@MODULE_FILENAME@', 'LWGEOM_right'
774
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
775
 
 
776
 
CREATEFUNCTION geometry_above(geometry, geometry) 
777
 
        RETURNS bool
778
 
        AS '@MODULE_FILENAME@', 'LWGEOM_above'
779
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
780
 
 
781
 
CREATEFUNCTION ST_geometry_above(geometry, geometry) 
782
 
        RETURNS bool
783
 
        AS '@MODULE_FILENAME@', 'LWGEOM_above'
784
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
785
 
 
786
 
CREATEFUNCTION geometry_below(geometry, geometry) 
787
 
        RETURNS bool
788
 
        AS '@MODULE_FILENAME@', 'LWGEOM_below'
789
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
790
 
 
791
 
CREATEFUNCTION ST_geometry_below(geometry, geometry) 
792
 
        RETURNS bool
793
 
        AS '@MODULE_FILENAME@', 'LWGEOM_below'
794
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
795
 
 
796
 
CREATEFUNCTION geometry_contain(geometry, geometry) 
797
 
        RETURNS bool
798
 
        AS '@MODULE_FILENAME@', 'LWGEOM_contain'
799
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
800
 
 
801
 
CREATEFUNCTION ST_geometry_contain(geometry, geometry) 
802
 
        RETURNS bool
803
 
        AS '@MODULE_FILENAME@', 'LWGEOM_contain'
804
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
805
 
 
806
 
CREATEFUNCTION geometry_contained(geometry, geometry) 
807
 
        RETURNS bool
808
 
        AS '@MODULE_FILENAME@', 'LWGEOM_contained'
809
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
810
 
 
811
 
CREATEFUNCTION ST_geometry_contained(geometry, geometry) 
812
 
        RETURNS bool
813
 
        AS '@MODULE_FILENAME@', 'LWGEOM_contained'
814
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
815
 
 
816
 
CREATEFUNCTION geometry_overlap(geometry, geometry) 
817
 
        RETURNS bool
818
 
        AS '@MODULE_FILENAME@', 'LWGEOM_overlap'
819
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
820
 
 
821
 
CREATEFUNCTION ST_geometry_overlap(geometry, geometry) 
822
 
        RETURNS bool
823
 
        AS '@MODULE_FILENAME@', 'LWGEOM_overlap'
824
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
825
 
 
826
 
CREATEFUNCTION geometry_same(geometry, geometry) 
827
 
        RETURNS bool
828
 
        AS '@MODULE_FILENAME@', 'LWGEOM_same'
829
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
830
 
 
831
 
--Availability: 1.2.2
832
 
CREATEFUNCTION ST_geometry_same(geometry, geometry) 
833
 
        RETURNS bool
834
 
        AS '@MODULE_FILENAME@', 'LWGEOM_same'
835
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
836
 
 
837
 
 
838
 
CREATE OPERATOR << (
839
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_left,
840
 
   COMMUTATOR = '>>',
841
 
   RESTRICT = positionsel, JOIN = positionjoinsel
842
 
);
843
 
 
844
 
CREATE OPERATOR &< (
845
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overleft,
846
 
   COMMUTATOR = '&>',
847
 
   RESTRICT = positionsel, JOIN = positionjoinsel
848
 
);
849
 
 
850
 
CREATE OPERATOR <<| (
851
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_below,
852
 
   COMMUTATOR = '|>>',
853
 
   RESTRICT = positionsel, JOIN = positionjoinsel
854
 
);
855
 
 
856
 
CREATE OPERATOR &<| (
857
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overbelow,
858
 
   COMMUTATOR = '|&>',
859
 
   RESTRICT = positionsel, JOIN = positionjoinsel
860
 
);
861
 
 
862
 
CREATE OPERATOR && (
863
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overlap,
864
 
   COMMUTATOR = '&&',
865
 
   RESTRICT = ST_postgis_gist_sel, JOIN = ST_postgis_gist_joinsel
866
 
);
867
 
 
868
 
CREATE OPERATOR &> (
869
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overright,
870
 
   COMMUTATOR = '&<',
871
 
   RESTRICT = positionsel, JOIN = positionjoinsel
872
 
);
873
 
 
874
 
CREATE OPERATOR >> (
875
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_right,
876
 
   COMMUTATOR = '<<',
877
 
   RESTRICT = positionsel, JOIN = positionjoinsel
878
 
);
879
 
 
880
 
CREATE OPERATOR |&> (
881
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overabove,
882
 
   COMMUTATOR = '&<|',
883
 
   RESTRICT = positionsel, JOIN = positionjoinsel
884
 
);
885
 
 
886
 
CREATE OPERATOR |>> (
887
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_above,
888
 
   COMMUTATOR = '<<|',
889
 
   RESTRICT = positionsel, JOIN = positionjoinsel
890
 
);
891
 
 
892
 
CREATE OPERATOR ~= (
893
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_same,
894
 
   COMMUTATOR = '~=', 
895
 
   RESTRICT = eqsel, JOIN = eqjoinsel
896
 
);
897
 
 
898
 
CREATE OPERATOR @ (
899
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_contained,
900
 
   COMMUTATOR = '~',
901
 
   RESTRICT = contsel, JOIN = contjoinsel
902
 
);
903
 
 
904
 
CREATE OPERATOR ~ (
905
 
   LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_contain,
906
 
   COMMUTATOR = '@',
907
 
   RESTRICT = contsel, JOIN = contjoinsel
908
 
);
909
 
 
910
 
 
911
 
#if USE_VERSION < 73
912
 
#define OPAQUE_TYPE opaque
913
 
#else
914
 
#define OPAQUE_TYPE internal
915
 
#endif
916
 
 
917
 
CREATEFUNCTION LWGEOM_gist_consistent(OPAQUE_TYPE,geometry,int4) 
918
 
        RETURNS bool 
919
 
        AS '@MODULE_FILENAME@' ,'LWGEOM_gist_consistent'
920
 
        LANGUAGE 'C';
921
 
 
922
 
CREATEFUNCTION LWGEOM_gist_compress(OPAQUE_TYPE) 
923
 
        RETURNS OPAQUE_TYPE 
924
 
        AS '@MODULE_FILENAME@','LWGEOM_gist_compress'
925
 
        LANGUAGE 'C';
926
 
 
927
 
CREATEFUNCTION LWGEOM_gist_penalty(OPAQUE_TYPE,OPAQUE_TYPE,OPAQUE_TYPE) 
928
 
        RETURNS OPAQUE_TYPE 
929
 
        AS '@MODULE_FILENAME@' ,'LWGEOM_gist_penalty'
930
 
        LANGUAGE 'C';
931
 
 
932
 
CREATEFUNCTION LWGEOM_gist_picksplit(OPAQUE_TYPE, OPAQUE_TYPE) 
933
 
        RETURNS OPAQUE_TYPE 
934
 
        AS '@MODULE_FILENAME@' ,'LWGEOM_gist_picksplit'
935
 
        LANGUAGE 'C';
936
 
 
937
 
CREATEFUNCTION LWGEOM_gist_union(bytea, OPAQUE_TYPE) 
938
 
        RETURNS OPAQUE_TYPE 
939
 
        AS '@MODULE_FILENAME@' ,'LWGEOM_gist_union'
940
 
        LANGUAGE 'C';
941
 
 
942
 
CREATEFUNCTION LWGEOM_gist_same(box2d, box2d, OPAQUE_TYPE) 
943
 
        RETURNS OPAQUE_TYPE 
944
 
        AS '@MODULE_FILENAME@' ,'LWGEOM_gist_same'
945
 
        LANGUAGE 'C';
946
 
 
947
 
CREATEFUNCTION LWGEOM_gist_decompress(OPAQUE_TYPE) 
948
 
        RETURNS OPAQUE_TYPE
949
 
        AS '@MODULE_FILENAME@' ,'LWGEOM_gist_decompress'
950
 
        LANGUAGE 'C';
951
 
 
952
 
-------------------------------------------
953
 
-------------------------------------------
954
 
 
955
 
#if USE_VERSION == 72
956
 
 
957
 
--
958
 
--
959
 
 
960
 
INSERT INTO pg_opclass (opcamid, opcname, opcintype, opcdefault, opckeytype)
961
 
    VALUES (
962
 
        (SELECT oid FROM pg_am WHERE amname = 'gist'),
963
 
        'gist_geometry_ops',
964
 
        (SELECT oid FROM pg_type WHERE typname = 'geometry'),
965
 
        true,
966
 
        (SELECT oid FROM pg_type WHERE typname = 'box2d'));
967
 
 
968
 
 
969
 
SELECT o.oid AS opoid, o.oprname
970
 
        INTO TABLE rt_ops_tmp
971
 
        FROM pg_operator o, pg_type t
972
 
        WHERE o.oprleft = t.oid 
973
 
                AND t.typname = 'geometry';
974
 
 
975
 
INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) 
976
 
   SELECT opcl.oid, 1, true, c.opoid
977
 
   FROM pg_opclass opcl, rt_ops_tmp c
978
 
   WHERE
979
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
980
 
      and opcname = 'gist_geometry_ops' 
981
 
      and c.oprname = '<<';
982
 
 
983
 
INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) 
984
 
   SELECT opcl.oid, 2, true, c.opoid
985
 
   FROM pg_opclass opcl, rt_ops_tmp c
986
 
   WHERE
987
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
988
 
      and opcname = 'gist_geometry_ops' 
989
 
      and c.oprname = '&<';
990
 
 
991
 
INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) 
992
 
   SELECT opcl.oid, 3, true, c.opoid
993
 
   FROM pg_opclass opcl, rt_ops_tmp c
994
 
   WHERE
995
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
996
 
      and opcname = 'gist_geometry_ops' 
997
 
      and c.oprname = '&&';
998
 
 
999
 
INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) 
1000
 
   SELECT opcl.oid, 4, true, c.opoid
1001
 
   FROM pg_opclass opcl, rt_ops_tmp c
1002
 
   WHERE
1003
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1004
 
      and opcname = 'gist_geometry_ops' 
1005
 
      and c.oprname = '&>';
1006
 
 
1007
 
INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
1008
 
   SELECT opcl.oid, 5, true, c.opoid
1009
 
   FROM pg_opclass opcl, rt_ops_tmp c
1010
 
   WHERE
1011
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1012
 
      and opcname = 'gist_geometry_ops' 
1013
 
      and c.oprname = '>>';
1014
 
 
1015
 
INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) 
1016
 
   SELECT opcl.oid, 6, true, c.opoid
1017
 
   FROM pg_opclass opcl, rt_ops_tmp c
1018
 
   WHERE
1019
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1020
 
      and opcname = 'gist_geometry_ops' 
1021
 
      and c.oprname = '~=';
1022
 
 
1023
 
INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
1024
 
   SELECT opcl.oid, 7, true, c.opoid
1025
 
   FROM pg_opclass opcl, rt_ops_tmp c
1026
 
   WHERE
1027
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1028
 
      and opcname = 'gist_geometry_ops' 
1029
 
      and c.oprname = '~';
1030
 
 
1031
 
INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
1032
 
   SELECT opcl.oid, 8, true, c.opoid
1033
 
   FROM pg_opclass opcl, rt_ops_tmp c
1034
 
   WHERE
1035
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1036
 
      and opcname = 'gist_geometry_ops' 
1037
 
      and c.oprname = '@';
1038
 
 
1039
 
INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
1040
 
   SELECT opcl.oid, 9, true, c.opoid
1041
 
   FROM pg_opclass opcl, rt_ops_tmp c
1042
 
   WHERE
1043
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1044
 
      and opcname = 'gist_geometry_ops' 
1045
 
      and c.oprname = '&<|';
1046
 
 
1047
 
INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) 
1048
 
   SELECT opcl.oid, 10, true, c.opoid
1049
 
   FROM pg_opclass opcl, rt_ops_tmp c
1050
 
   WHERE
1051
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1052
 
      and opcname = 'gist_geometry_ops' 
1053
 
      and c.oprname = '<<|';
1054
 
 
1055
 
INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) 
1056
 
   SELECT opcl.oid, 11, true, c.opoid
1057
 
   FROM pg_opclass opcl, rt_ops_tmp c
1058
 
   WHERE
1059
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1060
 
      and opcname = 'gist_geometry_ops' 
1061
 
      and c.oprname = '|>>';
1062
 
 
1063
 
INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) 
1064
 
   SELECT opcl.oid, 12, true, c.opoid
1065
 
   FROM pg_opclass opcl, rt_ops_tmp c
1066
 
   WHERE
1067
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1068
 
      and opcname = 'gist_geometry_ops' 
1069
 
      and c.oprname = '|&>';
1070
 
 
1071
 
DROP TABLE rt_ops_tmp;
1072
 
 
1073
 
 
1074
 
INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
1075
 
   SELECT opcl.oid, 1, pro.oid
1076
 
   FROM pg_opclass opcl, pg_proc pro
1077
 
   WHERE
1078
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1079
 
      and opcname = 'gist_geometry_ops'
1080
 
      and proname = 'lwgeom_gist_consistent';
1081
 
 
1082
 
INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
1083
 
   SELECT opcl.oid, 2, pro.oid
1084
 
   FROM pg_opclass opcl, pg_proc pro
1085
 
   WHERE
1086
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1087
 
      and opcname = 'gist_geometry_ops'
1088
 
      and proname = 'lwgeom_gist_union';
1089
 
 
1090
 
INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
1091
 
   SELECT opcl.oid, 3, pro.oid
1092
 
   FROM pg_opclass opcl, pg_proc pro
1093
 
   WHERE
1094
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1095
 
      and opcname = 'gist_geometry_ops'
1096
 
      and proname = 'lwgeom_gist_compress';
1097
 
 
1098
 
INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
1099
 
   SELECT opcl.oid, 4, pro.oid
1100
 
   FROM pg_opclass opcl, pg_proc pro
1101
 
   WHERE
1102
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1103
 
      and opcname = 'gist_geometry_ops'
1104
 
      and proname = 'lwgeom_gist_decompress';
1105
 
 
1106
 
INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
1107
 
   SELECT opcl.oid, 5, pro.oid
1108
 
   FROM pg_opclass opcl, pg_proc pro
1109
 
   WHERE
1110
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1111
 
      and opcname = 'gist_geometry_ops'
1112
 
      and proname = 'lwgeom_gist_penalty';
1113
 
 
1114
 
INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
1115
 
   SELECT opcl.oid, 6, pro.oid
1116
 
   FROM pg_opclass opcl, pg_proc pro
1117
 
   WHERE
1118
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1119
 
      and opcname = 'gist_geometry_ops'
1120
 
      and proname = 'lwgeom_gist_picksplit';
1121
 
 
1122
 
INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
1123
 
   SELECT opcl.oid, 7, pro.oid
1124
 
   FROM pg_opclass opcl, pg_proc pro
1125
 
   WHERE
1126
 
      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
1127
 
      and opcname = 'gist_geometry_ops'
1128
 
      and proname = 'lwgeom_gist_same';
1129
 
 
1130
 
#else
1131
 
 
1132
 
#if USE_VERSION < 84 
1133
 
 
1134
 
--
1135
 
--
1136
 
 
1137
 
CREATE OPERATOR CLASS gist_geometry_ops
1138
 
        DEFAULT FOR TYPE geometry USING gist AS
1139
 
        OPERATOR        1        <<     RECHECK,
1140
 
        OPERATOR        2        &<     RECHECK,
1141
 
        OPERATOR        3        &&     RECHECK,
1142
 
        OPERATOR        4        &>     RECHECK,
1143
 
        OPERATOR        5        >>     RECHECK,
1144
 
        OPERATOR        6        ~=     RECHECK,
1145
 
        OPERATOR        7        ~      RECHECK,
1146
 
        OPERATOR        8        @      RECHECK,
1147
 
        OPERATOR        9        &<|    RECHECK,
1148
 
        OPERATOR        10       <<|    RECHECK,
1149
 
        OPERATOR        11       |>>    RECHECK,
1150
 
        OPERATOR        12       |&>    RECHECK,
1151
 
        FUNCTION        1        LWGEOM_gist_consistent (internal, geometry, int4),
1152
 
        FUNCTION        2        LWGEOM_gist_union (bytea, internal),
1153
 
        FUNCTION        3        LWGEOM_gist_compress (internal),
1154
 
        FUNCTION        4        LWGEOM_gist_decompress (internal),
1155
 
        FUNCTION        5        LWGEOM_gist_penalty (internal, internal, internal),
1156
 
        FUNCTION        6        LWGEOM_gist_picksplit (internal, internal),
1157
 
        FUNCTION        7        LWGEOM_gist_same (box2d, box2d, internal);
1158
 
 
1159
 
UPDATE pg_opclass 
1160
 
        SET opckeytype = (SELECT oid FROM pg_type 
1161
 
                          WHERE typname = 'box2d' 
1162
 
                          AND typnamespace = (SELECT oid FROM pg_namespace 
1163
 
                                              WHERE nspname=current_schema())) 
1164
 
        WHERE opcname = 'gist_geometry_ops' 
1165
 
        AND opcnamespace = (SELECT oid from pg_namespace 
1166
 
                            WHERE nspname=current_schema());
1167
 
        
1168
 
 
1169
 
#else
1170
 
 
1171
 
--
1172
 
--
1173
 
 
1174
 
CREATE OPERATOR CLASS gist_geometry_ops
1175
 
        DEFAULT FOR TYPE geometry USING gist AS
1176
 
        STORAGE         box2d,
1177
 
        OPERATOR        1        <<,
1178
 
        OPERATOR        2        &<,
1179
 
        OPERATOR        3        &&,
1180
 
        OPERATOR        4        &>,
1181
 
        OPERATOR        5        >>,
1182
 
        OPERATOR        6        ~=,
1183
 
        OPERATOR        7        ~,
1184
 
        OPERATOR        8        @,
1185
 
        OPERATOR        9        &<|,
1186
 
        OPERATOR        10       <<|,
1187
 
        OPERATOR        11       |>>,
1188
 
        OPERATOR        12       |&>,
1189
 
        FUNCTION        1        LWGEOM_gist_consistent (internal, geometry, int4),
1190
 
        FUNCTION        2        LWGEOM_gist_union (bytea, internal),
1191
 
        FUNCTION        3        LWGEOM_gist_compress (internal),
1192
 
        FUNCTION        4        LWGEOM_gist_decompress (internal),
1193
 
        FUNCTION        5        LWGEOM_gist_penalty (internal, internal, internal),
1194
 
        FUNCTION        6        LWGEOM_gist_picksplit (internal, internal),
1195
 
        FUNCTION        7        LWGEOM_gist_same (box2d, box2d, internal);
1196
 
 
1197
 
#endif
1198
 
 
1199
 
#endif
1200
 
        
1201
 
-------------------------------------------
1202
 
-------------------------------------------
1203
 
 
1204
 
CREATEFUNCTION addBBOX(geometry) 
1205
 
        RETURNS geometry
1206
 
        AS '@MODULE_FILENAME@','LWGEOM_addBBOX'
1207
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1208
 
 
1209
 
CREATEFUNCTION ST_addBBOX(geometry) 
1210
 
        RETURNS geometry
1211
 
        AS '@MODULE_FILENAME@','LWGEOM_addBBOX'
1212
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1213
 
 
1214
 
CREATEFUNCTION dropBBOX(geometry) 
1215
 
        RETURNS geometry
1216
 
        AS '@MODULE_FILENAME@','LWGEOM_dropBBOX'
1217
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1218
 
 
1219
 
CREATEFUNCTION ST_dropBBOX(geometry) 
1220
 
        RETURNS geometry
1221
 
        AS '@MODULE_FILENAME@','LWGEOM_dropBBOX'
1222
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1223
 
        
1224
 
CREATEFUNCTION getSRID(geometry) 
1225
 
        RETURNS int4
1226
 
        AS '@MODULE_FILENAME@','LWGEOM_getSRID'
1227
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1228
 
 
1229
 
CREATEFUNCTION getSRID(geometry) 
1230
 
        RETURNS int4
1231
 
        AS '@MODULE_FILENAME@','LWGEOM_getSRID'
1232
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1233
 
 
1234
 
CREATEFUNCTION getBBOX(geometry)
1235
 
        RETURNS box2d
1236
 
        AS '@MODULE_FILENAME@','LWGEOM_to_BOX2DFLOAT4'
1237
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1238
 
 
1239
 
CREATEFUNCTION getBBOX(geometry)
1240
 
        RETURNS box2d
1241
 
        AS '@MODULE_FILENAME@','LWGEOM_to_BOX2DFLOAT4'
1242
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1243
 
 
1244
 
-------------------------------------------
1245
 
--- CHIP functions
1246
 
-------------------------------------------
1247
 
 
1248
 
CREATEFUNCTION srid(chip)
1249
 
        RETURNS int4
1250
 
        AS '@MODULE_FILENAME@','CHIP_getSRID'
1251
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1252
 
 
1253
 
CREATEFUNCTION ST_srid(chip)
1254
 
        RETURNS int4
1255
 
        AS '@MODULE_FILENAME@','CHIP_getSRID'
1256
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1257
 
 
1258
 
CREATEFUNCTION height(chip)
1259
 
        RETURNS int4
1260
 
        AS '@MODULE_FILENAME@','CHIP_getHeight'
1261
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1262
 
 
1263
 
CREATEFUNCTION ST_height(chip)
1264
 
        RETURNS int4
1265
 
        AS '@MODULE_FILENAME@','CHIP_getHeight'
1266
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1267
 
 
1268
 
CREATEFUNCTION factor(chip)
1269
 
        RETURNS FLOAT4
1270
 
        AS '@MODULE_FILENAME@','CHIP_getFactor'
1271
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1272
 
 
1273
 
CREATEFUNCTION ST_factor(chip)
1274
 
        RETURNS FLOAT4
1275
 
        AS '@MODULE_FILENAME@','CHIP_getFactor'
1276
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1277
 
 
1278
 
CREATEFUNCTION width(chip)
1279
 
        RETURNS int4
1280
 
        AS '@MODULE_FILENAME@','CHIP_getWidth'
1281
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1282
 
 
1283
 
CREATEFUNCTION ST_width(chip)
1284
 
        RETURNS int4
1285
 
        AS '@MODULE_FILENAME@','CHIP_getWidth'
1286
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1287
 
 
1288
 
CREATEFUNCTION datatype(chip)
1289
 
        RETURNS int4
1290
 
        AS '@MODULE_FILENAME@','CHIP_getDatatype'
1291
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1292
 
 
1293
 
CREATEFUNCTION ST_datatype(chip)
1294
 
        RETURNS int4
1295
 
        AS '@MODULE_FILENAME@','CHIP_getDatatype'
1296
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1297
 
 
1298
 
CREATEFUNCTION compression(chip)
1299
 
        RETURNS int4
1300
 
        AS '@MODULE_FILENAME@','CHIP_getCompression'
1301
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1302
 
 
1303
 
CREATEFUNCTION ST_compression(chip)
1304
 
        RETURNS int4
1305
 
        AS '@MODULE_FILENAME@','CHIP_getCompression'
1306
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1307
 
 
1308
 
CREATEFUNCTION setSRID(chip,int4)
1309
 
        RETURNS chip
1310
 
        AS '@MODULE_FILENAME@','CHIP_setSRID'
1311
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1312
 
 
1313
 
CREATEFUNCTION setFactor(chip,float4)
1314
 
        RETURNS chip
1315
 
        AS '@MODULE_FILENAME@','CHIP_setFactor'
1316
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1317
 
 
1318
 
CREATEFUNCTION ST_setFactor(chip,float4)
1319
 
        RETURNS chip
1320
 
        AS '@MODULE_FILENAME@','CHIP_setFactor'
1321
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1322
 
 
1323
 
------------------------------------------------------------------------
1324
 
------------------------------------------------------------------------
1325
 
 
1326
 
CREATEFUNCTION mem_size(geometry)
1327
 
        RETURNS int4
1328
 
        AS '@MODULE_FILENAME@', 'LWGEOM_mem_size'
1329
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1330
 
 
1331
 
CREATEFUNCTION ST_mem_size(geometry)
1332
 
        RETURNS int4
1333
 
        AS '@MODULE_FILENAME@', 'LWGEOM_mem_size'
1334
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1335
 
 
1336
 
CREATEFUNCTION summary(geometry)
1337
 
        RETURNS text
1338
 
        AS '@MODULE_FILENAME@', 'LWGEOM_summary'
1339
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1340
 
 
1341
 
CREATEFUNCTION ST_summary(geometry)
1342
 
        RETURNS text
1343
 
        AS '@MODULE_FILENAME@', 'LWGEOM_summary'
1344
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1345
 
 
1346
 
CREATEFUNCTION npoints(geometry)
1347
 
        RETURNS int4
1348
 
        AS '@MODULE_FILENAME@', 'LWGEOM_npoints'
1349
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1350
 
 
1351
 
CREATEFUNCTION ST_npoints(geometry)
1352
 
        RETURNS int4
1353
 
        AS '@MODULE_FILENAME@', 'LWGEOM_npoints'
1354
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1355
 
 
1356
 
CREATEFUNCTION nrings(geometry)
1357
 
        RETURNS int4
1358
 
        AS '@MODULE_FILENAME@', 'LWGEOM_nrings'
1359
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1360
 
 
1361
 
CREATEFUNCTION ST_nrings(geometry)
1362
 
        RETURNS int4
1363
 
        AS '@MODULE_FILENAME@', 'LWGEOM_nrings'
1364
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1365
 
 
1366
 
------------------------------------------------------------------------
1367
 
------------------------------------------------------------------------
1368
 
 
1369
 
CREATEFUNCTION length3d(geometry)
1370
 
        RETURNS FLOAT8
1371
 
        AS '@MODULE_FILENAME@', 'LWGEOM_length_linestring'
1372
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1373
 
 
1374
 
CREATEFUNCTION ST_length3d(geometry)
1375
 
        RETURNS FLOAT8
1376
 
        AS '@MODULE_FILENAME@', 'LWGEOM_length_linestring'
1377
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1378
 
 
1379
 
CREATEFUNCTION length2d(geometry)
1380
 
        RETURNS FLOAT8
1381
 
        AS '@MODULE_FILENAME@', 'LWGEOM_length2d_linestring'
1382
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1383
 
 
1384
 
CREATEFUNCTION ST_length2d(geometry)
1385
 
        RETURNS FLOAT8
1386
 
        AS '@MODULE_FILENAME@', 'LWGEOM_length2d_linestring'
1387
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1388
 
 
1389
 
CREATEFUNCTION length(geometry)
1390
 
        RETURNS FLOAT8
1391
 
        AS '@MODULE_FILENAME@', 'LWGEOM_length_linestring'
1392
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1393
 
 
1394
 
CREATEFUNCTION ST_Length(geometry)
1395
 
        RETURNS FLOAT8
1396
 
        AS '@MODULE_FILENAME@', 'LWGEOM_length2d_linestring'
1397
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1398
 
 
1399
 
CREATEFUNCTION length3d_spheroid(geometry, spheroid)
1400
 
        RETURNS FLOAT8
1401
 
        AS '@MODULE_FILENAME@','LWGEOM_length_ellipsoid_linestring'
1402
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1403
 
 
1404
 
CREATEFUNCTION ST_length3d_spheroid(geometry, spheroid)
1405
 
        RETURNS FLOAT8
1406
 
        AS '@MODULE_FILENAME@','LWGEOM_length_ellipsoid_linestring'
1407
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1408
 
 
1409
 
CREATEFUNCTION length_spheroid(geometry, spheroid)
1410
 
        RETURNS FLOAT8
1411
 
        AS '@MODULE_FILENAME@','LWGEOM_length_ellipsoid_linestring'
1412
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1413
 
 
1414
 
CREATEFUNCTION ST_length_spheroid(geometry, spheroid)
1415
 
        RETURNS FLOAT8
1416
 
        AS '@MODULE_FILENAME@','LWGEOM_length_ellipsoid_linestring'
1417
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1418
 
 
1419
 
CREATEFUNCTION length2d_spheroid(geometry, spheroid)
1420
 
        RETURNS FLOAT8
1421
 
        AS '@MODULE_FILENAME@','LWGEOM_length2d_ellipsoid_linestring'
1422
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1423
 
 
1424
 
CREATEFUNCTION ST_length2d_spheroid(geometry, spheroid)
1425
 
        RETURNS FLOAT8
1426
 
        AS '@MODULE_FILENAME@','LWGEOM_length2d_ellipsoid_linestring'
1427
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1428
 
 
1429
 
CREATEFUNCTION perimeter3d(geometry)
1430
 
        RETURNS FLOAT8
1431
 
        AS '@MODULE_FILENAME@', 'LWGEOM_perimeter_poly'
1432
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1433
 
 
1434
 
CREATEFUNCTION ST_perimeter3d(geometry)
1435
 
        RETURNS FLOAT8
1436
 
        AS '@MODULE_FILENAME@', 'LWGEOM_perimeter_poly'
1437
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1438
 
 
1439
 
CREATEFUNCTION perimeter2d(geometry)
1440
 
        RETURNS FLOAT8
1441
 
        AS '@MODULE_FILENAME@', 'LWGEOM_perimeter2d_poly'
1442
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1443
 
 
1444
 
CREATEFUNCTION ST_perimeter2d(geometry)
1445
 
        RETURNS FLOAT8
1446
 
        AS '@MODULE_FILENAME@', 'LWGEOM_perimeter2d_poly'
1447
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1448
 
 
1449
 
CREATEFUNCTION perimeter(geometry)
1450
 
        RETURNS FLOAT8
1451
 
        AS '@MODULE_FILENAME@', 'LWGEOM_perimeter_poly'
1452
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1453
 
 
1454
 
CREATEFUNCTION ST_Perimeter(geometry)
1455
 
        RETURNS FLOAT8
1456
 
        AS '@MODULE_FILENAME@', 'LWGEOM_perimeter2d_poly'
1457
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1458
 
 
1459
 
CREATEFUNCTION area2d(geometry)
1460
 
        RETURNS FLOAT8
1461
 
        AS '@MODULE_FILENAME@', 'LWGEOM_area_polygon'
1462
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1463
 
 
1464
 
CREATEFUNCTION ST_area2d(geometry)
1465
 
        RETURNS FLOAT8
1466
 
        AS '@MODULE_FILENAME@', 'LWGEOM_area_polygon'
1467
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1468
 
 
1469
 
CREATEFUNCTION area(geometry)
1470
 
        RETURNS FLOAT8
1471
 
        AS '@MODULE_FILENAME@','LWGEOM_area_polygon'
1472
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1473
 
 
1474
 
CREATEFUNCTION ST_Area(geometry)
1475
 
        RETURNS FLOAT8
1476
 
        AS '@MODULE_FILENAME@','LWGEOM_area_polygon'
1477
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1478
 
 
1479
 
CREATEFUNCTION distance_spheroid(geometry,geometry,spheroid)
1480
 
        RETURNS FLOAT8
1481
 
        AS '@MODULE_FILENAME@','LWGEOM_distance_ellipsoid_point'
1482
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1483
 
 
1484
 
CREATEFUNCTION ST_distance_spheroid(geometry,geometry,spheroid)
1485
 
        RETURNS FLOAT8
1486
 
        AS '@MODULE_FILENAME@','LWGEOM_distance_ellipsoid_point'
1487
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1488
 
 
1489
 
CREATEFUNCTION distance_sphere(geometry,geometry)
1490
 
        RETURNS FLOAT8
1491
 
        AS '@MODULE_FILENAME@','LWGEOM_distance_sphere'
1492
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1493
 
 
1494
 
CREATEFUNCTION ST_distance_sphere(geometry,geometry)
1495
 
        RETURNS FLOAT8
1496
 
        AS '@MODULE_FILENAME@','LWGEOM_distance_sphere'
1497
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1498
 
 
1499
 
CREATEFUNCTION distance(geometry,geometry)
1500
 
        RETURNS float8
1501
 
        AS '@MODULE_FILENAME@', 'LWGEOM_mindistance2d'
1502
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1503
 
 
1504
 
CREATEFUNCTION ST_Distance(geometry,geometry)
1505
 
    RETURNS float8
1506
 
    AS '@MODULE_FILENAME@', 'LWGEOM_mindistance2d'
1507
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1508
 
 
1509
 
CREATEFUNCTION max_distance(geometry,geometry)
1510
 
        RETURNS float8
1511
 
        AS '@MODULE_FILENAME@', 'LWGEOM_maxdistance2d_linestring'
1512
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1513
 
 
1514
 
CREATEFUNCTION ST_max_distance(geometry,geometry)
1515
 
        RETURNS float8
1516
 
        AS '@MODULE_FILENAME@', 'LWGEOM_maxdistance2d_linestring'
1517
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1518
 
 
1519
 
CREATEFUNCTION point_inside_circle(geometry,float8,float8,float8)
1520
 
        RETURNS bool
1521
 
        AS '@MODULE_FILENAME@', 'LWGEOM_inside_circle_point'
1522
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1523
 
 
1524
 
CREATEFUNCTION ST_point_inside_circle(geometry,float8,float8,float8)
1525
 
        RETURNS bool
1526
 
        AS '@MODULE_FILENAME@', 'LWGEOM_inside_circle_point'
1527
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1528
 
 
1529
 
CREATEFUNCTION azimuth(geometry,geometry)
1530
 
        RETURNS float8
1531
 
        AS '@MODULE_FILENAME@', 'LWGEOM_azimuth'
1532
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1533
 
 
1534
 
CREATEFUNCTION ST_azimuth(geometry,geometry)
1535
 
        RETURNS float8
1536
 
        AS '@MODULE_FILENAME@', 'LWGEOM_azimuth'
1537
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1538
 
 
1539
 
------------------------------------------------------------------------
1540
 
------------------------------------------------------------------------
1541
 
 
1542
 
CREATEFUNCTION force_2d(geometry) 
1543
 
        RETURNS geometry
1544
 
        AS '@MODULE_FILENAME@', 'LWGEOM_force_2d'
1545
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1546
 
 
1547
 
CREATEFUNCTION ST_force_2d(geometry) 
1548
 
        RETURNS geometry
1549
 
        AS '@MODULE_FILENAME@', 'LWGEOM_force_2d'
1550
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1551
 
 
1552
 
CREATEFUNCTION force_3dz(geometry) 
1553
 
        RETURNS geometry
1554
 
        AS '@MODULE_FILENAME@', 'LWGEOM_force_3dz'
1555
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1556
 
 
1557
 
CREATEFUNCTION ST_force_3dz(geometry) 
1558
 
        RETURNS geometry
1559
 
        AS '@MODULE_FILENAME@', 'LWGEOM_force_3dz'
1560
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1561
 
 
1562
 
CREATEFUNCTION force_3d(geometry) 
1563
 
        RETURNS geometry
1564
 
        AS '@MODULE_FILENAME@', 'LWGEOM_force_3dz'
1565
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1566
 
 
1567
 
CREATEFUNCTION ST_force_3d(geometry) 
1568
 
        RETURNS geometry
1569
 
        AS '@MODULE_FILENAME@', 'LWGEOM_force_3dz'
1570
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1571
 
 
1572
 
CREATEFUNCTION force_3dm(geometry) 
1573
 
        RETURNS geometry
1574
 
        AS '@MODULE_FILENAME@', 'LWGEOM_force_3dm'
1575
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1576
 
 
1577
 
CREATEFUNCTION ST_force_3dm(geometry) 
1578
 
        RETURNS geometry
1579
 
        AS '@MODULE_FILENAME@', 'LWGEOM_force_3dm'
1580
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1581
 
 
1582
 
CREATEFUNCTION force_4d(geometry) 
1583
 
        RETURNS geometry
1584
 
        AS '@MODULE_FILENAME@', 'LWGEOM_force_4d'
1585
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1586
 
 
1587
 
CREATEFUNCTION ST_force_4d(geometry) 
1588
 
        RETURNS geometry
1589
 
        AS '@MODULE_FILENAME@', 'LWGEOM_force_4d'
1590
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1591
 
 
1592
 
CREATEFUNCTION force_collection(geometry) 
1593
 
        RETURNS geometry
1594
 
        AS '@MODULE_FILENAME@', 'LWGEOM_force_collection'
1595
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1596
 
 
1597
 
CREATEFUNCTION ST_force_collection(geometry) 
1598
 
        RETURNS geometry
1599
 
        AS '@MODULE_FILENAME@', 'LWGEOM_force_collection'
1600
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1601
 
 
1602
 
CREATEFUNCTION multi(geometry) 
1603
 
        RETURNS geometry
1604
 
        AS '@MODULE_FILENAME@', 'LWGEOM_force_multi'
1605
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1606
 
 
1607
 
CREATEFUNCTION ST_multi(geometry) 
1608
 
        RETURNS geometry
1609
 
        AS '@MODULE_FILENAME@', 'LWGEOM_force_multi'
1610
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
1611
 
 
1612
 
CREATEFUNCTION collector(geometry, geometry) 
1613
 
        RETURNS geometry
1614
 
        AS '@MODULE_FILENAME@', 'LWGEOM_collect'
1615
 
        LANGUAGE 'C' _IMMUTABLE;
1616
 
 
1617
 
CREATEFUNCTION ST_collector(geometry, geometry) 
1618
 
        RETURNS geometry
1619
 
        AS '@MODULE_FILENAME@', 'LWGEOM_collect'
1620
 
        LANGUAGE 'C' _IMMUTABLE;
1621
 
 
1622
 
CREATEFUNCTION collect(geometry, geometry) 
1623
 
        RETURNS geometry
1624
 
        AS '@MODULE_FILENAME@', 'LWGEOM_collect'
1625
 
        LANGUAGE 'C' _IMMUTABLE;
1626
 
 
1627
 
CREATEFUNCTION ST_collect(geometry, geometry) 
1628
 
        RETURNS geometry
1629
 
        AS '@MODULE_FILENAME@', 'LWGEOM_collect'
1630
 
        LANGUAGE 'C' _IMMUTABLE;
1631
 
 
1632
 
CREATE AGGREGATE memcollect(
1633
 
        sfunc = ST_collect,
1634
 
        basetype = geometry,
1635
 
        stype = geometry
1636
 
        );
1637
 
 
1638
 
CREATE AGGREGATE ST_memcollect(
1639
 
        sfunc = ST_collect,
1640
 
        basetype = geometry,
1641
 
        stype = geometry
1642
 
        );
1643
 
 
1644
 
CREATEFUNCTION geom_accum (geometry[],geometry)
1645
 
        RETURNS geometry[]
1646
 
        AS '@MODULE_FILENAME@', 'LWGEOM_accum'
1647
 
        LANGUAGE 'C' _IMMUTABLE;
1648
 
 
1649
 
CREATEFUNCTION ST_geom_accum (geometry[],geometry)
1650
 
        RETURNS geometry[]
1651
 
        AS '@MODULE_FILENAME@', 'LWGEOM_accum'
1652
 
        LANGUAGE 'C' _IMMUTABLE;
1653
 
 
1654
 
CREATE AGGREGATE accum (
1655
 
        sfunc = ST_geom_accum,
1656
 
        basetype = geometry,
1657
 
        stype = geometry[]
1658
 
        );
1659
 
 
1660
 
CREATE AGGREGATE ST_accum (
1661
 
        sfunc = ST_geom_accum,
1662
 
        basetype = geometry,
1663
 
        stype = geometry[]
1664
 
        );
1665
 
 
1666
 
CREATEFUNCTION collect_garray (geometry[])
1667
 
        RETURNS geometry
1668
 
        AS '@MODULE_FILENAME@', 'LWGEOM_collect_garray'
1669
 
        LANGUAGE 'C' _IMMUTABLE_STRICT;
1670
 
 
1671
 
CREATEFUNCTION ST_collect_garray (geometry[])
1672
 
        RETURNS geometry
1673
 
        AS '@MODULE_FILENAME@', 'LWGEOM_collect_garray'
1674
 
        LANGUAGE 'C' _IMMUTABLE_STRICT;
1675
 
 
1676
 
CREATE AGGREGATE collect (
1677
 
        sfunc = ST_geom_accum,
1678
 
        basetype = geometry,
1679
 
        stype = geometry[],
1680
 
        finalfunc = ST_collect_garray
1681
 
        );
1682
 
 
1683
 
 
1684
 
CREATE AGGREGATE ST_collect (
1685
 
        sfunc = ST_geom_accum,
1686
 
        basetype = geometry,
1687
 
        stype = geometry[],
1688
 
        finalfunc = ST_collect_garray
1689
 
        );
1690
 
 
1691
 
CREATEFUNCTION expand(box3d,float8)
1692
 
        RETURNS box3d
1693
 
        AS '@MODULE_FILENAME@', 'BOX3D_expand'
1694
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1695
 
 
1696
 
CREATEFUNCTION ST_Expand(box3d,float8)
1697
 
        RETURNS box3d
1698
 
        AS '@MODULE_FILENAME@', 'BOX3D_expand'
1699
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1700
 
 
1701
 
CREATEFUNCTION expand(box2d,float8)
1702
 
        RETURNS box2d
1703
 
        AS '@MODULE_FILENAME@', 'BOX2DFLOAT4_expand'
1704
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1705
 
 
1706
 
CREATEFUNCTION ST_expand(box2d,float8)
1707
 
        RETURNS box2d
1708
 
        AS '@MODULE_FILENAME@', 'BOX2DFLOAT4_expand'
1709
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1710
 
 
1711
 
CREATEFUNCTION expand(geometry,float8)
1712
 
        RETURNS geometry
1713
 
        AS '@MODULE_FILENAME@', 'LWGEOM_expand'
1714
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1715
 
 
1716
 
CREATEFUNCTION ST_expand(geometry,float8)
1717
 
        RETURNS geometry
1718
 
        AS '@MODULE_FILENAME@', 'LWGEOM_expand'
1719
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1720
 
 
1721
 
CREATEFUNCTION envelope(geometry)
1722
 
        RETURNS geometry
1723
 
        AS '@MODULE_FILENAME@', 'LWGEOM_envelope'
1724
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1725
 
 
1726
 
CREATEFUNCTION ST_Envelope(geometry)
1727
 
        RETURNS geometry
1728
 
        AS '@MODULE_FILENAME@', 'LWGEOM_envelope'
1729
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1730
 
 
1731
 
CREATEFUNCTION reverse(geometry)
1732
 
        RETURNS geometry
1733
 
        AS '@MODULE_FILENAME@', 'LWGEOM_reverse'
1734
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1735
 
 
1736
 
CREATEFUNCTION ST_Reverse(geometry)
1737
 
        RETURNS geometry
1738
 
        AS '@MODULE_FILENAME@', 'LWGEOM_reverse'
1739
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1740
 
 
1741
 
CREATEFUNCTION ForceRHR(geometry)
1742
 
        RETURNS geometry
1743
 
        AS '@MODULE_FILENAME@', 'LWGEOM_forceRHR_poly'
1744
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1745
 
 
1746
 
CREATEFUNCTION ST_ForceRHR(geometry)
1747
 
        RETURNS geometry
1748
 
        AS '@MODULE_FILENAME@', 'LWGEOM_forceRHR_poly'
1749
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1750
 
 
1751
 
CREATEFUNCTION noop(geometry)
1752
 
        RETURNS geometry
1753
 
        AS '@MODULE_FILENAME@', 'LWGEOM_noop'
1754
 
        LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (iscachable,isstrict);
1755
 
 
1756
 
CREATEFUNCTION ST_noop(geometry)
1757
 
        RETURNS geometry
1758
 
        AS '@MODULE_FILENAME@', 'LWGEOM_noop'
1759
 
        LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (iscachable,isstrict);
1760
 
 
1761
 
CREATEFUNCTION zmflag(geometry)
1762
 
        RETURNS smallint
1763
 
        AS '@MODULE_FILENAME@', 'LWGEOM_zmflag'
1764
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1765
 
 
1766
 
CREATEFUNCTION ST_zmflag(geometry)
1767
 
        RETURNS smallint
1768
 
        AS '@MODULE_FILENAME@', 'LWGEOM_zmflag'
1769
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1770
 
 
1771
 
CREATEFUNCTION hasBBOX(geometry)
1772
 
        RETURNS bool
1773
 
        AS '@MODULE_FILENAME@', 'LWGEOM_hasBBOX'
1774
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1775
 
 
1776
 
CREATEFUNCTION ST_HasBBOX(geometry)
1777
 
        RETURNS bool
1778
 
        AS '@MODULE_FILENAME@', 'LWGEOM_hasBBOX'
1779
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1780
 
 
1781
 
CREATEFUNCTION ndims(geometry)
1782
 
        RETURNS smallint
1783
 
        AS '@MODULE_FILENAME@', 'LWGEOM_ndims'
1784
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1785
 
 
1786
 
CREATEFUNCTION ST_NDims(geometry)
1787
 
        RETURNS smallint
1788
 
        AS '@MODULE_FILENAME@', 'LWGEOM_ndims'
1789
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1790
 
 
1791
 
CREATEFUNCTION AsEWKT(geometry)
1792
 
        RETURNS TEXT
1793
 
        AS '@MODULE_FILENAME@','LWGEOM_asEWKT'
1794
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1795
 
 
1796
 
CREATEFUNCTION ST_AsEWKT(geometry)
1797
 
        RETURNS TEXT
1798
 
        AS '@MODULE_FILENAME@','LWGEOM_asEWKT'
1799
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1800
 
 
1801
 
CREATEFUNCTION AsEWKB(geometry)
1802
 
        RETURNS BYTEA
1803
 
        AS '@MODULE_FILENAME@','WKBFromLWGEOM'
1804
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1805
 
 
1806
 
CREATEFUNCTION ST_AsEWKB(geometry)
1807
 
        RETURNS BYTEA
1808
 
        AS '@MODULE_FILENAME@','WKBFromLWGEOM'
1809
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1810
 
 
1811
 
CREATEFUNCTION AsHEXEWKB(geometry)
1812
 
        RETURNS TEXT
1813
 
        AS '@MODULE_FILENAME@','LWGEOM_asHEXEWKB'
1814
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1815
 
 
1816
 
CREATEFUNCTION ST_AsHEXEWKB(geometry)
1817
 
        RETURNS TEXT
1818
 
        AS '@MODULE_FILENAME@','LWGEOM_asHEXEWKB'
1819
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1820
 
 
1821
 
CREATEFUNCTION AsHEXEWKB(geometry, text)
1822
 
        RETURNS TEXT
1823
 
        AS '@MODULE_FILENAME@','LWGEOM_asHEXEWKB'
1824
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1825
 
 
1826
 
CREATEFUNCTION ST_AsHEXEWKB(geometry, text)
1827
 
        RETURNS TEXT
1828
 
        AS '@MODULE_FILENAME@','LWGEOM_asHEXEWKB'
1829
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1830
 
 
1831
 
CREATEFUNCTION AsEWKB(geometry,text)
1832
 
        RETURNS bytea
1833
 
        AS '@MODULE_FILENAME@','WKBFromLWGEOM'
1834
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1835
 
 
1836
 
CREATEFUNCTION ST_AsEWKB(geometry,text)
1837
 
        RETURNS bytea
1838
 
        AS '@MODULE_FILENAME@','WKBFromLWGEOM'
1839
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1840
 
 
1841
 
CREATEFUNCTION GeomFromEWKB(bytea)
1842
 
        RETURNS geometry
1843
 
        AS '@MODULE_FILENAME@','LWGEOMFromWKB'
1844
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1845
 
 
1846
 
CREATEFUNCTION ST_GeomFromEWKB(bytea)
1847
 
        RETURNS geometry
1848
 
        AS '@MODULE_FILENAME@','LWGEOMFromWKB'
1849
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1850
 
 
1851
 
CREATEFUNCTION GeomFromEWKT(text)
1852
 
        RETURNS geometry
1853
 
        AS '@MODULE_FILENAME@','parse_WKT_lwgeom'
1854
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1855
 
 
1856
 
CREATEFUNCTION ST_GeomFromEWKT(text)
1857
 
        RETURNS geometry
1858
 
        AS '@MODULE_FILENAME@','parse_WKT_lwgeom'
1859
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
1860
 
 
1861
 
CREATEFUNCTION cache_bbox()
1862
 
        RETURNS trigger
1863
 
        AS '@MODULE_FILENAME@'
1864
 
        LANGUAGE 'C';
1865
 
 
1866
 
CREATEFUNCTION ST_Cache_BBox()
1867
 
        RETURNS trigger
1868
 
        AS '@MODULE_FILENAME@','cache_bbox'
1869
 
        LANGUAGE 'C';
1870
 
 
1871
 
------------------------------------------------------------------------
1872
 
------------------------------------------------------------------------
1873
 
 
1874
 
CREATEFUNCTION MakePoint(float8, float8)
1875
 
        RETURNS geometry
1876
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makepoint'
1877
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1878
 
 
1879
 
CREATEFUNCTION ST_MakePoint(float8, float8)
1880
 
        RETURNS geometry
1881
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makepoint'
1882
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1883
 
 
1884
 
CREATEFUNCTION MakePoint(float8, float8, float8)
1885
 
        RETURNS geometry
1886
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makepoint'
1887
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1888
 
 
1889
 
CREATEFUNCTION ST_MakePoint(float8, float8, float8)
1890
 
        RETURNS geometry
1891
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makepoint'
1892
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1893
 
 
1894
 
CREATEFUNCTION MakePoint(float8, float8, float8, float8)
1895
 
        RETURNS geometry
1896
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makepoint'
1897
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1898
 
 
1899
 
CREATEFUNCTION ST_MakePoint(float8, float8, float8, float8)
1900
 
        RETURNS geometry
1901
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makepoint'
1902
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1903
 
 
1904
 
CREATEFUNCTION MakePointM(float8, float8, float8)
1905
 
        RETURNS geometry
1906
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makepoint3dm'
1907
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1908
 
 
1909
 
CREATEFUNCTION ST_MakePointM(float8, float8, float8)
1910
 
        RETURNS geometry
1911
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makepoint3dm'
1912
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1913
 
 
1914
 
CREATEFUNCTION MakeBox2d(geometry, geometry)
1915
 
        RETURNS box2d
1916
 
        AS '@MODULE_FILENAME@', 'BOX2DFLOAT4_construct'
1917
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1918
 
 
1919
 
CREATEFUNCTION ST_MakeBox2d(geometry, geometry)
1920
 
        RETURNS box2d
1921
 
        AS '@MODULE_FILENAME@', 'BOX2DFLOAT4_construct'
1922
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1923
 
 
1924
 
CREATEFUNCTION MakeBox3d(geometry, geometry)
1925
 
        RETURNS box3d
1926
 
        AS '@MODULE_FILENAME@', 'BOX3D_construct'
1927
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1928
 
 
1929
 
CREATEFUNCTION ST_MakeBox3d(geometry, geometry)
1930
 
        RETURNS box3d
1931
 
        AS '@MODULE_FILENAME@', 'BOX3D_construct'
1932
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1933
 
 
1934
 
CREATEFUNCTION makeline_garray (geometry[])
1935
 
        RETURNS geometry
1936
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makeline_garray'
1937
 
        LANGUAGE 'C' _IMMUTABLE_STRICT;
1938
 
 
1939
 
CREATEFUNCTION ST_MakeLine_GArray (geometry[])
1940
 
        RETURNS geometry
1941
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makeline_garray'
1942
 
        LANGUAGE 'C' _IMMUTABLE_STRICT;
1943
 
 
1944
 
CREATEFUNCTION LineFromMultiPoint(geometry)
1945
 
        RETURNS geometry
1946
 
        AS '@MODULE_FILENAME@', 'LWGEOM_line_from_mpoint'
1947
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1948
 
 
1949
 
CREATEFUNCTION ST_LineFromMultiPoint(geometry)
1950
 
        RETURNS geometry
1951
 
        AS '@MODULE_FILENAME@', 'LWGEOM_line_from_mpoint'
1952
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1953
 
 
1954
 
CREATEFUNCTION MakeLine(geometry, geometry)
1955
 
        RETURNS geometry
1956
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makeline'
1957
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1958
 
 
1959
 
CREATEFUNCTION ST_MakeLine(geometry, geometry)
1960
 
        RETURNS geometry
1961
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makeline'
1962
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1963
 
 
1964
 
CREATEFUNCTION AddPoint(geometry, geometry)
1965
 
        RETURNS geometry
1966
 
        AS '@MODULE_FILENAME@', 'LWGEOM_addpoint'
1967
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1968
 
 
1969
 
CREATEFUNCTION ST_AddPoint(geometry, geometry)
1970
 
        RETURNS geometry
1971
 
        AS '@MODULE_FILENAME@', 'LWGEOM_addpoint'
1972
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1973
 
 
1974
 
CREATEFUNCTION AddPoint(geometry, geometry, integer)
1975
 
        RETURNS geometry
1976
 
        AS '@MODULE_FILENAME@', 'LWGEOM_addpoint'
1977
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1978
 
 
1979
 
CREATEFUNCTION ST_AddPoint(geometry, geometry, integer)
1980
 
        RETURNS geometry
1981
 
        AS '@MODULE_FILENAME@', 'LWGEOM_addpoint'
1982
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1983
 
 
1984
 
CREATEFUNCTION RemovePoint(geometry, integer)
1985
 
        RETURNS geometry
1986
 
        AS '@MODULE_FILENAME@', 'LWGEOM_removepoint'
1987
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1988
 
 
1989
 
CREATEFUNCTION ST_RemovePoint(geometry, integer)
1990
 
        RETURNS geometry
1991
 
        AS '@MODULE_FILENAME@', 'LWGEOM_removepoint'
1992
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1993
 
 
1994
 
CREATEFUNCTION SetPoint(geometry, integer, geometry)
1995
 
        RETURNS geometry
1996
 
        AS '@MODULE_FILENAME@', 'LWGEOM_setpoint_linestring'
1997
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
1998
 
 
1999
 
CREATEFUNCTION ST_SetPoint(geometry, integer, geometry)
2000
 
        RETURNS geometry
2001
 
        AS '@MODULE_FILENAME@', 'LWGEOM_setpoint_linestring'
2002
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
2003
 
 
2004
 
CREATE AGGREGATE makeline (
2005
 
        sfunc = geom_accum,
2006
 
        basetype = geometry,
2007
 
        stype = geometry[],
2008
 
        finalfunc = makeline_garray
2009
 
        );
2010
 
 
2011
 
CREATE AGGREGATE ST_MakeLine (
2012
 
        sfunc = geom_accum,
2013
 
        basetype = geometry,
2014
 
        stype = geometry[],
2015
 
        finalfunc = ST_makeline_garray
2016
 
        );
2017
 
 
2018
 
CREATEFUNCTION MakePolygon(geometry, geometry[])
2019
 
        RETURNS geometry
2020
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makepoly'
2021
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
2022
 
 
2023
 
CREATEFUNCTION ST_MakePolygon(geometry, geometry[])
2024
 
        RETURNS geometry
2025
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makepoly'
2026
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
2027
 
 
2028
 
CREATEFUNCTION MakePolygon(geometry)
2029
 
        RETURNS geometry
2030
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makepoly'
2031
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
2032
 
 
2033
 
CREATEFUNCTION ST_MakePolygon(geometry)
2034
 
        RETURNS geometry
2035
 
        AS '@MODULE_FILENAME@', 'LWGEOM_makepoly'
2036
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
2037
 
 
2038
 
CREATEFUNCTION BuildArea(geometry)
2039
 
        RETURNS geometry
2040
 
        AS '@MODULE_FILENAME@', 'LWGEOM_buildarea'
2041
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
2042
 
 
2043
 
CREATEFUNCTION ST_BuildArea(geometry)
2044
 
        RETURNS geometry
2045
 
        AS '@MODULE_FILENAME@', 'LWGEOM_buildarea'
2046
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
2047
 
 
2048
 
CREATEFUNCTION Polygonize_GArray (geometry[])
2049
 
        RETURNS geometry
2050
 
        AS '@MODULE_FILENAME@', 'polygonize_garray'
2051
 
        LANGUAGE 'C' _IMMUTABLE_STRICT;
2052
 
 
2053
 
CREATEFUNCTION ST_Polygonize_GArray (geometry[])
2054
 
        RETURNS geometry
2055
 
        AS '@MODULE_FILENAME@', 'polygonize_garray'
2056
 
        LANGUAGE 'C' _IMMUTABLE_STRICT;
2057
 
 
2058
 
CREATEFUNCTION LineMerge(geometry)
2059
 
        RETURNS geometry
2060
 
        AS '@MODULE_FILENAME@', 'linemerge'
2061
 
        LANGUAGE 'C' _IMMUTABLE_STRICT;
2062
 
 
2063
 
CREATEFUNCTION ST_LineMerge(geometry)
2064
 
        RETURNS geometry
2065
 
        AS '@MODULE_FILENAME@', 'linemerge'
2066
 
        LANGUAGE 'C' _IMMUTABLE_STRICT;
2067
 
 
2068
 
CREATE AGGREGATE Polygonize (
2069
 
        sfunc = geom_accum,
2070
 
        basetype = geometry,
2071
 
        stype = geometry[],
2072
 
        finalfunc = polygonize_garray
2073
 
        );
2074
 
 
2075
 
CREATE AGGREGATE ST_Polygonize (
2076
 
        sfunc = ST_geom_accum,
2077
 
        basetype = geometry,
2078
 
        stype = geometry[],
2079
 
        finalfunc = ST_polygonize_garray
2080
 
        );
2081
 
 
2082
 
#if USE_VERSION > 72
2083
 
 
2084
 
CREATE TYPE geometry_dump AS (path integer[], geom geometry);
2085
 
 
2086
 
CREATEFUNCTION Dump(geometry)
2087
 
        RETURNS SETOF geometry_dump
2088
 
        AS '@MODULE_FILENAME@', 'LWGEOM_dump'
2089
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
2090
 
 
2091
 
CREATEFUNCTION ST_Dump(geometry)
2092
 
        RETURNS SETOF geometry_dump
2093
 
        AS '@MODULE_FILENAME@', 'LWGEOM_dump'
2094
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
2095
 
 
2096
 
CREATEFUNCTION DumpRings(geometry)
2097
 
        RETURNS SETOF geometry_dump
2098
 
        AS '@MODULE_FILENAME@', 'LWGEOM_dump_rings'
2099
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
2100
 
 
2101
 
CREATEFUNCTION ST_DumpRings(geometry)
2102
 
        RETURNS SETOF geometry_dump
2103
 
        AS '@MODULE_FILENAME@', 'LWGEOM_dump_rings'
2104
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
2105
 
 
2106
 
#endif
2107
 
 
2108
 
------------------------------------------------------------------------
2109
 
 
2110
 
--
2111
 
--
2112
 
 
2113
 
CREATEFUNCTION combine_bbox(box2d,geometry)
2114
 
        RETURNS box2d
2115
 
        AS '@MODULE_FILENAME@', 'BOX2DFLOAT4_combine'
2116
 
        LANGUAGE 'C' _IMMUTABLE;
2117
 
 
2118
 
CREATEFUNCTION ST_Combine_BBox(box2d,geometry)
2119
 
        RETURNS box2d
2120
 
        AS '@MODULE_FILENAME@', 'BOX2DFLOAT4_combine'
2121
 
        LANGUAGE 'C' _IMMUTABLE;
2122
 
 
2123
 
CREATE AGGREGATE Extent(
2124
 
        sfunc = ST_combine_bbox,
2125
 
        basetype = geometry,
2126
 
        stype = box2d
2127
 
        );
2128
 
 
2129
 
CREATE AGGREGATE ST_Extent(
2130
 
        sfunc = ST_combine_bbox,
2131
 
        basetype = geometry,
2132
 
        stype = box2d
2133
 
        );
2134
 
 
2135
 
CREATEFUNCTION combine_bbox(box3d,geometry)
2136
 
        RETURNS box3d
2137
 
        AS '@MODULE_FILENAME@', 'BOX3D_combine'
2138
 
        LANGUAGE 'C' _IMMUTABLE;
2139
 
 
2140
 
CREATEFUNCTION ST_Combine_BBox(box3d,geometry)
2141
 
        RETURNS box3d
2142
 
        AS '@MODULE_FILENAME@', 'BOX3D_combine'
2143
 
        LANGUAGE 'C' _IMMUTABLE;
2144
 
 
2145
 
CREATE AGGREGATE Extent3d(
2146
 
        sfunc = combine_bbox,
2147
 
        basetype = geometry,
2148
 
        stype = box3d
2149
 
        );
2150
 
 
2151
 
CREATE AGGREGATE ST_Extent3d(
2152
 
        sfunc = ST_combine_bbox,
2153
 
        basetype = geometry,
2154
 
        stype = box3d
2155
 
        );
2156
 
 
2157
 
-----------------------------------------------------------------------
2158
 
-----------------------------------------------------------------------
2159
 
--
2160
 
--
2161
 
-----------------------------------------------------------------------
2162
 
CREATEFUNCTION create_histogram2d(box2d,int)
2163
 
        RETURNS histogram2d
2164
 
        AS '@MODULE_FILENAME@','create_lwhistogram2d'
2165
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
2166
 
 
2167
 
CREATEFUNCTION ST_create_histogram2d(box2d,int)
2168
 
        RETURNS histogram2d
2169
 
        AS '@MODULE_FILENAME@','create_lwhistogram2d'
2170
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
2171
 
 
2172
 
-----------------------------------------------------------------------
2173
 
-----------------------------------------------------------------------
2174
 
CREATEFUNCTION build_histogram2d (histogram2d,text,text)
2175
 
        RETURNS histogram2d
2176
 
        AS '@MODULE_FILENAME@','build_lwhistogram2d'
2177
 
        LANGUAGE 'C' _STABLE_STRICT; -- WITH (isstrict);
2178
 
 
2179
 
CREATEFUNCTION ST_build_histogram2d (histogram2d,text,text)
2180
 
        RETURNS histogram2d
2181
 
        AS '@MODULE_FILENAME@','build_lwhistogram2d'
2182
 
        LANGUAGE 'C' _STABLE_STRICT; -- WITH (isstrict);
2183
 
 
2184
 
#if USE_VERSION >= 73
2185
 
-----------------------------------------------------------------------
2186
 
-----------------------------------------------------------------------
2187
 
-----------------------------------------------------------------------
2188
 
CREATEFUNCTION build_histogram2d (histogram2d,text,text,text)
2189
 
RETURNS histogram2d
2190
 
AS '
2191
 
BEGIN
2192
 
        EXECUTE ''SET local search_path = ''||$2||'',public'';
2193
 
        RETURN public.build_histogram2d($1,$3,$4);
2194
 
END
2195
 
'
2196
 
LANGUAGE 'plpgsql' _STABLE_STRICT; -- WITH (isstrict);
2197
 
 
2198
 
CREATEFUNCTION ST_build_histogram2d (histogram2d,text,text,text)
2199
 
RETURNS histogram2d
2200
 
AS '
2201
 
BEGIN
2202
 
        EXECUTE ''SET local search_path = ''||$2||'',public'';
2203
 
        RETURN public.build_histogram2d($1,$3,$4);
2204
 
END
2205
 
'
2206
 
LANGUAGE 'plpgsql' _STABLE_STRICT; -- WITH (isstrict);
2207
 
 
2208
 
#endif
2209
 
 
2210
 
-----------------------------------------------------------------------
2211
 
-----------------------------------------------------------------------
2212
 
CREATEFUNCTION explode_histogram2d (histogram2d,text)
2213
 
        RETURNS histogram2d
2214
 
        AS '@MODULE_FILENAME@','explode_lwhistogram2d'
2215
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
2216
 
 
2217
 
CREATEFUNCTION ST_explode_histogram2d (histogram2d,text)
2218
 
        RETURNS histogram2d
2219
 
        AS '@MODULE_FILENAME@','explode_lwhistogram2d'
2220
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
2221
 
 
2222
 
-----------------------------------------------------------------------
2223
 
-----------------------------------------------------------------------
2224
 
CREATEFUNCTION estimate_histogram2d(histogram2d,box2d)
2225
 
        RETURNS float8
2226
 
        AS '@MODULE_FILENAME@','estimate_lwhistogram2d'
2227
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
2228
 
 
2229
 
CREATEFUNCTION ST_estimate_histogram2d(histogram2d,box2d)
2230
 
        RETURNS float8
2231
 
        AS '@MODULE_FILENAME@','estimate_lwhistogram2d'
2232
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
2233
 
 
2234
 
-----------------------------------------------------------------------
2235
 
-----------------------------------------------------------------------
2236
 
CREATEFUNCTION estimated_extent(text,text,text) RETURNS box2d AS
2237
 
        '@MODULE_FILENAME@', 'LWGEOM_estimated_extent'
2238
 
        LANGUAGE 'C' _IMMUTABLE_STRICT _SECURITY_DEFINER;
2239
 
 
2240
 
CREATEFUNCTION ST_estimated_extent(text,text,text) RETURNS box2d AS
2241
 
        '@MODULE_FILENAME@', 'LWGEOM_estimated_extent'
2242
 
        LANGUAGE 'C' _IMMUTABLE_STRICT _SECURITY_DEFINER;
2243
 
 
2244
 
-----------------------------------------------------------------------
2245
 
-----------------------------------------------------------------------
2246
 
CREATEFUNCTION estimated_extent(text,text) RETURNS box2d AS
2247
 
        '@MODULE_FILENAME@', 'LWGEOM_estimated_extent'
2248
 
        LANGUAGE 'C' _IMMUTABLE_STRICT _SECURITY_DEFINER; 
2249
 
 
2250
 
CREATEFUNCTION ST_estimated_extent(text,text) RETURNS box2d AS
2251
 
        '@MODULE_FILENAME@', 'LWGEOM_estimated_extent'
2252
 
        LANGUAGE 'C' _IMMUTABLE_STRICT _SECURITY_DEFINER; 
2253
 
 
2254
 
-----------------------------------------------------------------------
2255
 
-----------------------------------------------------------------------
2256
 
CREATEFUNCTION find_extent(text,text,text) RETURNS box2d AS
2257
 
'
2258
 
DECLARE
2259
 
        schemaname alias for $1;
2260
 
        tablename alias for $2;
2261
 
        columnname alias for $3;
2262
 
        myrec RECORD;
2263
 
 
2264
 
BEGIN
2265
 
        FOR myrec IN EXECUTE ''SELECT extent("''||columnname||''") FROM "''||schemaname||''"."''||tablename||''"'' LOOP
2266
 
                return myrec.extent;
2267
 
        END LOOP; 
2268
 
END;
2269
 
'
2270
 
LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict);
2271
 
 
2272
 
CREATEFUNCTION ST_find_extent(text,text,text) RETURNS box2d AS
2273
 
'
2274
 
DECLARE
2275
 
        schemaname alias for $1;
2276
 
        tablename alias for $2;
2277
 
        columnname alias for $3;
2278
 
        myrec RECORD;
2279
 
 
2280
 
BEGIN
2281
 
        FOR myrec IN EXECUTE ''SELECT extent("''||columnname||''") FROM "''||schemaname||''"."''||tablename||''"'' LOOP
2282
 
                return myrec.extent;
2283
 
        END LOOP; 
2284
 
END;
2285
 
'
2286
 
LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict);
2287
 
 
2288
 
 
2289
 
-----------------------------------------------------------------------
2290
 
-----------------------------------------------------------------------
2291
 
CREATEFUNCTION find_extent(text,text) RETURNS box2d AS
2292
 
'
2293
 
DECLARE
2294
 
        tablename alias for $1;
2295
 
        columnname alias for $2;
2296
 
        myrec RECORD;
2297
 
 
2298
 
BEGIN
2299
 
        FOR myrec IN EXECUTE ''SELECT extent("''||columnname||''") FROM "''||tablename||''"'' LOOP
2300
 
                return myrec.extent;
2301
 
        END LOOP; 
2302
 
END;
2303
 
'
2304
 
LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict);
2305
 
 
2306
 
CREATEFUNCTION ST_find_extent(text,text) RETURNS box2d AS
2307
 
'
2308
 
DECLARE
2309
 
        tablename alias for $1;
2310
 
        columnname alias for $2;
2311
 
        myrec RECORD;
2312
 
 
2313
 
BEGIN
2314
 
        FOR myrec IN EXECUTE ''SELECT extent("''||columnname||''") FROM "''||tablename||''"'' LOOP
2315
 
                return myrec.extent;
2316
 
        END LOOP; 
2317
 
END;
2318
 
'
2319
 
LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict);
2320
 
 
2321
 
-------------------------------------------------------------------
2322
 
-------------------------------------------------------------------
2323
 
CREATE TABLE spatial_ref_sys (
2324
 
         srid integer not null primary key,
2325
 
         auth_name varchar(256), 
2326
 
         auth_srid integer, 
2327
 
         srtext varchar(2048),
2328
 
         proj4text varchar(2048) 
2329
 
);
2330
 
 
2331
 
-------------------------------------------------------------------
2332
 
-------------------------------------------------------------------
2333
 
CREATE TABLE geometry_columns (
2334
 
        f_table_catalog varchar(256) not null,
2335
 
        f_table_schema varchar(256) not null,
2336
 
        f_table_name varchar(256) not null,
2337
 
        f_geometry_column varchar(256) not null,
2338
 
        coord_dimension integer not null,
2339
 
        srid integer not null,
2340
 
        type varchar(30) not null,
2341
 
#if USE_VERSION < 80
2342
 
        attrelid oid,
2343
 
        varattnum int,
2344
 
        stats histogram2d,
2345
 
#endif
2346
 
        CONSTRAINT geometry_columns_pk primary key ( 
2347
 
                f_table_catalog, 
2348
 
                f_table_schema, 
2349
 
                f_table_name, 
2350
 
                f_geometry_column )
2351
 
) WITH OIDS;
2352
 
 
2353
 
-----------------------------------------------------------------------
2354
 
-----------------------------------------------------------------------
2355
 
-----------------------------------------------------------------------
2356
 
CREATEFUNCTION rename_geometry_table_constraints() RETURNS text
2357
 
AS 
2358
 
'
2359
 
SELECT ''rename_geometry_table_constraint() is obsoleted''::text
2360
 
'
2361
 
LANGUAGE 'SQL' _IMMUTABLE;
2362
 
 
2363
 
-----------------------------------------------------------------------
2364
 
-----------------------------------------------------------------------
2365
 
--
2366
 
--      o try to fix the schema of records with an invalid one
2367
 
--              (for PG>=73)
2368
 
--
2369
 
--      o link records to system tables through attrelid and varattnum
2370
 
--              (for PG<75)
2371
 
--
2372
 
--      o delete all records for which no linking was possible
2373
 
--              (for PG<75)
2374
 
--      
2375
 
-----------------------------------------------------------------------
2376
 
CREATEFUNCTION fix_geometry_columns() RETURNS text
2377
 
AS 
2378
 
'
2379
 
DECLARE
2380
 
        mislinked record;
2381
 
        result text;
2382
 
        linked integer;
2383
 
        deleted integer;
2384
 
#if USE_VERSION >= 73
2385
 
        foundschema integer;
2386
 
#endif
2387
 
BEGIN
2388
 
 
2389
 
#if USE_VERSION >= 73
2390
 
        -- Since 7.3 schema support has been added.
2391
 
        -- Previous postgis versions used to put the database name in
2392
 
        -- the schema column. This needs to be fixed, so we try to 
2393
 
        -- set the correct schema for each geometry_colums record
2394
 
        -- looking at table, column, type and srid.
2395
 
        UPDATE geometry_columns SET f_table_schema = n.nspname
2396
 
                FROM pg_namespace n, pg_class c, pg_attribute a,
2397
 
                        pg_constraint sridcheck, pg_constraint typecheck
2398
 
                WHERE ( f_table_schema is NULL
2399
 
                OR f_table_schema = ''''
2400
 
                OR f_table_schema NOT IN (
2401
 
                        SELECT nspname::varchar
2402
 
                        FROM pg_namespace nn, pg_class cc, pg_attribute aa
2403
 
                        WHERE cc.relnamespace = nn.oid
2404
 
                        AND cc.relname = f_table_name::name
2405
 
                        AND aa.attrelid = cc.oid
2406
 
                        AND aa.attname = f_geometry_column::name))
2407
 
                AND f_table_name::name = c.relname
2408
 
                AND c.oid = a.attrelid
2409
 
                AND c.relnamespace = n.oid
2410
 
                AND f_geometry_column::name = a.attname
2411
 
 
2412
 
                AND sridcheck.conrelid = c.oid
2413
 
                AND sridcheck.consrc LIKE ''(srid(% = %)''
2414
 
                AND sridcheck.consrc ~ textcat('' = '', srid::text)
2415
 
 
2416
 
                AND typecheck.conrelid = c.oid
2417
 
                AND typecheck.consrc LIKE
2418
 
        ''((geometrytype(%) = ''''%''''::text) OR (% IS NULL))''
2419
 
                AND typecheck.consrc ~ textcat('' = '''''', type::text)
2420
 
 
2421
 
                AND NOT EXISTS (
2422
 
                        SELECT oid FROM geometry_columns gc
2423
 
                        WHERE c.relname::varchar = gc.f_table_name
2424
 
                        AND n.nspname::varchar = gc.f_table_schema
2425
 
                        AND a.attname::varchar = gc.f_geometry_column
2426
 
                );
2427
 
 
2428
 
        GET DIAGNOSTICS foundschema = ROW_COUNT;
2429
 
#endif
2430
 
 
2431
 
#if USE_VERSION >= 80
2432
 
        -- no linkage to system table needed
2433
 
        return ''fixed:''||foundschema::text;
2434
 
#endif
2435
 
 
2436
 
        -- fix linking to system tables
2437
 
        SELECT 0 INTO linked;
2438
 
        FOR mislinked in
2439
 
                SELECT gc.oid as gcrec,
2440
 
                        a.attrelid as attrelid, a.attnum as attnum
2441
 
                FROM geometry_columns gc, pg_class c,
2442
 
#if USE_VERSION >= 73
2443
 
                pg_namespace n, pg_attribute a
2444
 
#else
2445
 
                pg_attribute a
2446
 
#endif
2447
 
                WHERE ( gc.attrelid IS NULL OR gc.attrelid != a.attrelid 
2448
 
                        OR gc.varattnum IS NULL OR gc.varattnum != a.attnum)
2449
 
#if USE_VERSION >= 73
2450
 
                AND n.nspname = gc.f_table_schema::name
2451
 
                AND c.relnamespace = n.oid
2452
 
#endif
2453
 
                AND c.relname = gc.f_table_name::name
2454
 
                AND a.attname = f_geometry_column::name
2455
 
                AND a.attrelid = c.oid
2456
 
        LOOP
2457
 
                UPDATE geometry_columns SET
2458
 
                        attrelid = mislinked.attrelid,
2459
 
                        varattnum = mislinked.attnum,
2460
 
                        stats = NULL
2461
 
                        WHERE geometry_columns.oid = mislinked.gcrec;
2462
 
                SELECT linked+1 INTO linked;
2463
 
        END LOOP; 
2464
 
 
2465
 
        -- remove stale records
2466
 
        DELETE FROM geometry_columns WHERE attrelid IS NULL;
2467
 
 
2468
 
        GET DIAGNOSTICS deleted = ROW_COUNT;
2469
 
 
2470
 
        result = 
2471
 
#if USE_VERSION >= 73
2472
 
                ''fixed:'' || foundschema::text ||
2473
 
#endif
2474
 
                '' linked:'' || linked::text || 
2475
 
                '' deleted:'' || deleted::text;
2476
 
 
2477
 
        return result;
2478
 
 
2479
 
END;
2480
 
'
2481
 
LANGUAGE 'plpgsql' _VOLATILE;
2482
 
 
2483
 
-----------------------------------------------------------------------
2484
 
-----------------------------------------------------------------------
2485
 
--
2486
 
-----------------------------------------------------------------------
2487
 
CREATEFUNCTION probe_geometry_columns() RETURNS text AS
2488
 
'
2489
 
DECLARE
2490
 
        inserted integer;
2491
 
        oldcount integer;
2492
 
        probed integer;
2493
 
        stale integer;
2494
 
BEGIN
2495
 
 
2496
 
        SELECT count(*) INTO oldcount FROM geometry_columns;
2497
 
 
2498
 
        SELECT count(*) INTO probed
2499
 
                FROM pg_class c, pg_attribute a, pg_type t, 
2500
 
#if USE_VERSION >= 73
2501
 
                        pg_namespace n,
2502
 
                        pg_constraint sridcheck, pg_constraint typecheck
2503
 
#else
2504
 
                        pg_relcheck sridcheck, pg_relcheck typecheck
2505
 
#endif 
2506
 
 
2507
 
                WHERE t.typname = ''geometry''
2508
 
                AND a.atttypid = t.oid
2509
 
                AND a.attrelid = c.oid
2510
 
#if USE_VERSION >= 73
2511
 
                AND c.relnamespace = n.oid
2512
 
                AND sridcheck.connamespace = n.oid
2513
 
                AND typecheck.connamespace = n.oid
2514
 
#endif
2515
 
 
2516
 
#if USE_VERSION >= 73
2517
 
                AND sridcheck.conrelid = c.oid
2518
 
                AND sridcheck.consrc LIKE ''(srid(''||a.attname||'') = %)''
2519
 
                AND typecheck.conrelid = c.oid
2520
 
                AND typecheck.consrc LIKE
2521
 
        ''((geometrytype(''||a.attname||'') = ''''%''''::text) OR (% IS NULL))''
2522
 
#else
2523
 
                AND sridcheck.rcrelid = c.oid
2524
 
                AND sridcheck.rcsrc LIKE ''(srid(''||a.attname||'') = %)''
2525
 
                AND typecheck.rcrelid = c.oid
2526
 
                AND typecheck.rcsrc LIKE
2527
 
        ''((geometrytype(''||a.attname||'') = ''''%''''::text) OR (% IS NULL))''
2528
 
#endif
2529
 
                ;
2530
 
 
2531
 
        INSERT INTO geometry_columns SELECT
2532
 
                ''''::varchar as f_table_catalogue,
2533
 
#if USE_VERSION >= 73
2534
 
                n.nspname::varchar as f_table_schema,
2535
 
#else
2536
 
                ''''::varchar as f_table_schema,
2537
 
#endif
2538
 
                c.relname::varchar as f_table_name,
2539
 
                a.attname::varchar as f_geometry_column,
2540
 
                2 as coord_dimension,
2541
 
#if USE_VERSION >= 73
2542
 
                trim(both  '' =)'' from 
2543
 
                        replace(replace(split_part(
2544
 
                                sridcheck.consrc, '' = '', 2), '')'', ''''), ''('', ''''))::integer AS srid,
2545
 
                trim(both '' =)'''''' from substr(typecheck.consrc, 
2546
 
                        strpos(typecheck.consrc, ''=''),
2547
 
                        strpos(typecheck.consrc, ''::'')-
2548
 
                        strpos(typecheck.consrc, ''='')
2549
 
                        ))::varchar as type
2550
 
#else
2551
 
                trim(both  '' =)'' from 
2552
 
                        replace(replace(split_part(
2553
 
                                sridcheck.rcsrc, '' = '', 2), '')'', ''''), ''('', ''''))::integer AS srid,
2554
 
                trim(both '' =)'''''' from substr(typecheck.rcsrc, 
2555
 
                        strpos(typecheck.rcsrc, ''=''),
2556
 
                        strpos(typecheck.rcsrc, ''::'')-
2557
 
                        strpos(typecheck.rcsrc, ''='')
2558
 
                        ))::varchar as type
2559
 
#endif
2560
 
 
2561
 
#if USE_VERSION < 80
2562
 
                , a.attrelid,
2563
 
                a.attnum as varattnum,
2564
 
                null::histogram2d as stats
2565
 
#endif
2566
 
                FROM pg_class c, pg_attribute a, pg_type t, 
2567
 
#if USE_VERSION >= 73
2568
 
                        pg_namespace n,
2569
 
                        pg_constraint sridcheck, pg_constraint typecheck
2570
 
#else
2571
 
                        pg_relcheck sridcheck, pg_relcheck typecheck
2572
 
#endif 
2573
 
                WHERE t.typname = ''geometry''
2574
 
                AND a.atttypid = t.oid
2575
 
                AND a.attrelid = c.oid
2576
 
#if USE_VERSION >= 73
2577
 
                AND c.relnamespace = n.oid
2578
 
                AND sridcheck.connamespace = n.oid
2579
 
                AND typecheck.connamespace = n.oid
2580
 
                AND sridcheck.conrelid = c.oid
2581
 
                AND sridcheck.consrc LIKE ''(srid(''||a.attname||'') = %)''
2582
 
                AND typecheck.conrelid = c.oid
2583
 
                AND typecheck.consrc LIKE
2584
 
        ''((geometrytype(''||a.attname||'') = ''''%''''::text) OR (% IS NULL))''
2585
 
#else
2586
 
                AND sridcheck.rcrelid = c.oid
2587
 
                AND sridcheck.rcsrc LIKE ''(srid(''||a.attname||'') = %)''
2588
 
                AND typecheck.rcrelid = c.oid
2589
 
                AND typecheck.rcsrc LIKE
2590
 
        ''((geometrytype(''||a.attname||'') = ''''%''''::text) OR (% IS NULL))''
2591
 
#endif
2592
 
 
2593
 
                AND NOT EXISTS (
2594
 
                        SELECT oid FROM geometry_columns gc
2595
 
                        WHERE c.relname::varchar = gc.f_table_name
2596
 
#if USE_VERSION >= 73
2597
 
                        AND n.nspname::varchar = gc.f_table_schema
2598
 
#endif
2599
 
                        AND a.attname::varchar = gc.f_geometry_column
2600
 
                );
2601
 
 
2602
 
        GET DIAGNOSTICS inserted = ROW_COUNT;
2603
 
 
2604
 
        IF oldcount > probed THEN
2605
 
                stale = oldcount-probed;
2606
 
        ELSE
2607
 
                stale = 0;
2608
 
        END IF;
2609
 
 
2610
 
        RETURN ''probed:''||probed::text||
2611
 
                '' inserted:''||inserted::text||
2612
 
                '' conflicts:''||(probed-inserted)::text||
2613
 
                '' stale:''||stale::text;
2614
 
END
2615
 
 
2616
 
'
2617
 
LANGUAGE 'plpgsql' _VOLATILE;
2618
 
 
2619
 
-----------------------------------------------------------------------
2620
 
-----------------------------------------------------------------------
2621
 
--
2622
 
--
2623
 
--
2624
 
-----------------------------------------------------------------------
2625
 
CREATEFUNCTION AddGeometryColumn(varchar,varchar,varchar,varchar,integer,varchar,integer)
2626
 
        RETURNS text
2627
 
        AS 
2628
 
'
2629
 
DECLARE
2630
 
        catalog_name alias for $1;
2631
 
        schema_name alias for $2;
2632
 
        table_name alias for $3;
2633
 
        column_name alias for $4;
2634
 
        new_srid alias for $5;
2635
 
        new_type alias for $6;
2636
 
        new_dim alias for $7;
2637
 
        sr varchar;
2638
 
#if USE_VERSION >= 73
2639
 
        rec RECORD;
2640
 
        schema_ok bool;
2641
 
        real_schema name;
2642
 
#endif
2643
 
 
2644
 
BEGIN
2645
 
 
2646
 
        IF ( not ( (new_type =''GEOMETRY'') or
2647
 
                   (new_type =''GEOMETRYCOLLECTION'') or
2648
 
                   (new_type =''POINT'') or 
2649
 
                   (new_type =''MULTIPOINT'') or
2650
 
                   (new_type =''POLYGON'') or
2651
 
                   (new_type =''MULTIPOLYGON'') or
2652
 
                   (new_type =''LINESTRING'') or
2653
 
                   (new_type =''MULTILINESTRING'') or
2654
 
                   (new_type =''GEOMETRYCOLLECTIONM'') or
2655
 
                   (new_type =''POINTM'') or 
2656
 
                   (new_type =''MULTIPOINTM'') or
2657
 
                   (new_type =''POLYGONM'') or
2658
 
                   (new_type =''MULTIPOLYGONM'') or
2659
 
                   (new_type =''LINESTRINGM'') or
2660
 
                   (new_type =''MULTILINESTRINGM'') or
2661
 
                   (new_type = ''CIRCULARSTRING'') or
2662
 
                   (new_type = ''CIRCULARSTRINGM'') or
2663
 
                   (new_type = ''COMPOUNDCURVE'') or
2664
 
                   (new_type = ''COMPOUNDCURVEM'') or
2665
 
                   (new_type = ''CURVEPOLYGON'') or
2666
 
                   (new_type = ''CURVEPOLYGONM'') or
2667
 
                   (new_type = ''MULTICURVE'') or
2668
 
                   (new_type = ''MULTICURVEM'') or
2669
 
                   (new_type = ''MULTISURFACE'') or
2670
 
                   (new_type = ''MULTISURFACEM'')) )
2671
 
        THEN
2672
 
                RAISE EXCEPTION ''Invalid type name - valid ones are: 
2673
 
                        GEOMETRY, GEOMETRYCOLLECTION, POINT, 
2674
 
                        MULTIPOINT, POLYGON, MULTIPOLYGON, 
2675
 
                        LINESTRING, MULTILINESTRING,
2676
 
                        CIRCULARSTRING, COMPOUNDCURVE,
2677
 
                        CURVEPOLYGON, MULTICURVE, MULTISURFACE,
2678
 
                        GEOMETRYCOLLECTIONM, POINTM, 
2679
 
                        MULTIPOINTM, POLYGONM, MULTIPOLYGONM, 
2680
 
                        LINESTRINGM, MULTILINESTRINGM 
2681
 
                        CIRCULARSTRINGM, COMPOUNDCURVEM,
2682
 
                        CURVEPOLYGONM, MULTICURVEM or MULTISURFACEM'';
2683
 
                return ''fail'';
2684
 
        END IF;
2685
 
 
2686
 
        IF ( (new_dim >4) or (new_dim <0) ) THEN
2687
 
                RAISE EXCEPTION ''invalid dimension'';
2688
 
                return ''fail'';
2689
 
        END IF;
2690
 
 
2691
 
        IF ( (new_type LIKE ''%M'') and (new_dim!=3) ) THEN
2692
 
 
2693
 
                RAISE EXCEPTION ''TypeM needs 3 dimensions'';
2694
 
                return ''fail'';
2695
 
        END IF;
2696
 
 
2697
 
#if USE_VERSION >= 73
2698
 
        IF ( schema_name != '''' ) THEN
2699
 
                schema_ok = ''f'';
2700
 
                FOR rec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
2701
 
                        schema_ok := ''t'';
2702
 
                END LOOP;
2703
 
 
2704
 
                if ( schema_ok <> ''t'' ) THEN
2705
 
                        RAISE EXCEPTION ''Invalid schema name'';
2706
 
                ELSE
2707
 
                        real_schema = schema_name;
2708
 
                END IF;
2709
 
 
2710
 
        ELSE
2711
 
                SELECT current_schema() into real_schema;
2712
 
        END IF;
2713
 
#endif
2714
 
 
2715
 
        IF ( new_srid != -1 ) THEN
2716
 
                SELECT SRID INTO sr FROM SPATIAL_REF_SYS WHERE SRID = new_srid;
2717
 
                IF NOT FOUND THEN
2718
 
                        RAISE EXCEPTION ''AddGeometryColumns() - invalid SRID'';
2719
 
                END IF;
2720
 
        END IF;
2721
 
 
2722
 
 
2723
 
        -- Add geometry column
2724
 
 
2725
 
        EXECUTE ''ALTER TABLE '' ||
2726
 
#if USE_VERSION >= 73
2727
 
                quote_ident(real_schema) || ''.'' || quote_ident(table_name)
2728
 
#else
2729
 
                quote_ident(table_name)
2730
 
#endif
2731
 
                || '' ADD COLUMN '' || quote_ident(column_name) || 
2732
 
                '' geometry '';
2733
 
 
2734
 
 
2735
 
        -- Delete stale record in geometry_column (if any)
2736
 
 
2737
 
        EXECUTE ''DELETE FROM geometry_columns WHERE
2738
 
                f_table_catalog = '' || quote_literal('''') || 
2739
 
                '' AND f_table_schema = '' ||
2740
 
#if USE_VERSION >= 73
2741
 
                quote_literal(real_schema) || 
2742
 
#else
2743
 
                quote_literal('''') || 
2744
 
#endif
2745
 
                '' AND f_table_name = '' || quote_literal(table_name) ||
2746
 
                '' AND f_geometry_column = '' || quote_literal(column_name);
2747
 
 
2748
 
 
2749
 
        -- Add record in geometry_column 
2750
 
 
2751
 
        EXECUTE ''INSERT INTO geometry_columns VALUES ('' ||
2752
 
                quote_literal('''') || '','' ||
2753
 
#if USE_VERSION >= 73
2754
 
                quote_literal(real_schema) || '','' ||
2755
 
#else
2756
 
                quote_literal('''') || '','' ||
2757
 
#endif
2758
 
                quote_literal(table_name) || '','' ||
2759
 
                quote_literal(column_name) || '','' ||
2760
 
                new_dim::text || '','' || new_srid::text || '','' ||
2761
 
                quote_literal(new_type) || '')'';
2762
 
 
2763
 
        -- Add table checks
2764
 
 
2765
 
        EXECUTE ''ALTER TABLE '' || 
2766
 
#if USE_VERSION >= 73
2767
 
                quote_ident(real_schema) || ''.'' || quote_ident(table_name)
2768
 
#else
2769
 
                quote_ident(table_name)
2770
 
#endif
2771
 
                || '' ADD CONSTRAINT '' 
2772
 
                || quote_ident(''enforce_srid_'' || column_name)
2773
 
                || '' CHECK (SRID('' || quote_ident(column_name) ||
2774
 
                '') = '' || new_srid::text || '')'' ;
2775
 
 
2776
 
        EXECUTE ''ALTER TABLE '' || 
2777
 
#if USE_VERSION >= 73
2778
 
                quote_ident(real_schema) || ''.'' || quote_ident(table_name)
2779
 
#else
2780
 
                quote_ident(table_name)
2781
 
#endif
2782
 
                || '' ADD CONSTRAINT ''
2783
 
                || quote_ident(''enforce_dims_'' || column_name)
2784
 
                || '' CHECK (ndims('' || quote_ident(column_name) ||
2785
 
                '') = '' || new_dim::text || '')'' ;
2786
 
 
2787
 
        IF (not(new_type = ''GEOMETRY'')) THEN
2788
 
                EXECUTE ''ALTER TABLE '' || 
2789
 
#if USE_VERSION >= 73
2790
 
                quote_ident(real_schema) || ''.'' || quote_ident(table_name)
2791
 
#else
2792
 
                quote_ident(table_name)
2793
 
#endif
2794
 
                || '' ADD CONSTRAINT ''
2795
 
                || quote_ident(''enforce_geotype_'' || column_name)
2796
 
                || '' CHECK (geometrytype('' ||
2797
 
                quote_ident(column_name) || '')='' ||
2798
 
                quote_literal(new_type) || '' OR ('' ||
2799
 
                quote_ident(column_name) || '') is null)'';
2800
 
        END IF;
2801
 
 
2802
 
        return 
2803
 
#if USE_VERSION >= 73
2804
 
                real_schema || ''.'' || 
2805
 
#endif
2806
 
                table_name || ''.'' || column_name ||
2807
 
                '' SRID:'' || new_srid::text ||
2808
 
                '' TYPE:'' || new_type || 
2809
 
                '' DIMS:'' || new_dim::text || chr(10) || '' ''; 
2810
 
END;
2811
 
'
2812
 
LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
2813
 
 
2814
 
----------------------------------------------------------------------------
2815
 
----------------------------------------------------------------------------
2816
 
--
2817
 
--
2818
 
----------------------------------------------------------------------------
2819
 
CREATEFUNCTION AddGeometryColumn(varchar,varchar,varchar,integer,varchar,integer) RETURNS text AS '
2820
 
DECLARE
2821
 
        ret  text;
2822
 
BEGIN
2823
 
        SELECT AddGeometryColumn('''',$1,$2,$3,$4,$5,$6) into ret;
2824
 
        RETURN ret;
2825
 
END;
2826
 
'
2827
 
LANGUAGE 'plpgsql' _STABLE_STRICT; -- WITH (isstrict);
2828
 
 
2829
 
----------------------------------------------------------------------------
2830
 
----------------------------------------------------------------------------
2831
 
--
2832
 
--
2833
 
----------------------------------------------------------------------------
2834
 
CREATEFUNCTION AddGeometryColumn(varchar,varchar,integer,varchar,integer) RETURNS text AS '
2835
 
DECLARE
2836
 
        ret  text;
2837
 
BEGIN
2838
 
        SELECT AddGeometryColumn('''','''',$1,$2,$3,$4,$5) into ret;
2839
 
        RETURN ret;
2840
 
END;
2841
 
'
2842
 
LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
2843
 
 
2844
 
-----------------------------------------------------------------------
2845
 
-----------------------------------------------------------------------
2846
 
--
2847
 
--
2848
 
-----------------------------------------------------------------------
2849
 
CREATEFUNCTION DropGeometryColumn(varchar, varchar,varchar,varchar)
2850
 
        RETURNS text
2851
 
        AS 
2852
 
'
2853
 
DECLARE
2854
 
        catalog_name alias for $1; 
2855
 
        schema_name alias for $2;
2856
 
        table_name alias for $3;
2857
 
        column_name alias for $4;
2858
 
        myrec RECORD;
2859
 
        okay boolean;
2860
 
        real_schema name;
2861
 
 
2862
 
BEGIN
2863
 
 
2864
 
 
2865
 
#if USE_VERSION >= 73
2866
 
        -- Find, check or fix schema_name
2867
 
        IF ( schema_name != '''' ) THEN
2868
 
                okay = ''f'';
2869
 
 
2870
 
                FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
2871
 
                        okay := ''t'';
2872
 
                END LOOP;
2873
 
 
2874
 
                IF ( okay <> ''t'' ) THEN
2875
 
                        RAISE NOTICE ''Invalid schema name - using current_schema()'';
2876
 
                        SELECT current_schema() into real_schema;
2877
 
                ELSE
2878
 
                        real_schema = schema_name;
2879
 
                END IF;
2880
 
        ELSE
2881
 
                SELECT current_schema() into real_schema;
2882
 
        END IF;
2883
 
#else
2884
 
        real_schema = schema_name;
2885
 
#endif
2886
 
 
2887
 
        -- Find out if the column is in the geometry_columns table
2888
 
        okay = ''f'';
2889
 
        FOR myrec IN SELECT * from geometry_columns where f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP
2890
 
                okay := ''t'';
2891
 
        END LOOP; 
2892
 
        IF (okay <> ''t'') THEN 
2893
 
                RAISE EXCEPTION ''column not found in geometry_columns table'';
2894
 
                RETURN ''f'';
2895
 
        END IF;
2896
 
 
2897
 
        -- Remove ref from geometry_columns table
2898
 
        EXECUTE ''delete from geometry_columns where f_table_schema = '' ||
2899
 
                quote_literal(real_schema) || '' and f_table_name = '' ||
2900
 
                quote_literal(table_name)  || '' and f_geometry_column = '' ||
2901
 
                quote_literal(column_name);
2902
 
        
2903
 
#if USE_VERSION < 73
2904
 
        -- Remove not-null constraint to table column 
2905
 
        EXECUTE ''update pg_attribute set attnotnull = false from pg_class where pg_attribute.attrelid = pg_class.oid and pg_class.relname = '' || quote_literal(table_name) ||'' and pg_attribute.attname = '' || quote_literal(column_name);
2906
 
        -- update the given table/column so that it it all NULLS
2907
 
        EXECUTE ''update "''||table_name||''" set "''||column_name||''"= NULL'';
2908
 
        -- add = NULL constraint to given table/column
2909
 
        EXECUTE ''ALTER TABLE "''||table_name||''" ADD CHECK ("''||column_name||''" IS NULL)'';
2910
 
#else
2911
 
        -- Remove table column
2912
 
        EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) || ''.'' ||
2913
 
                quote_ident(table_name) || '' DROP COLUMN '' ||
2914
 
                quote_ident(column_name);
2915
 
#endif 
2916
 
 
2917
 
 
2918
 
        RETURN real_schema || ''.'' || table_name || ''.'' || column_name ||'' effectively removed.'';
2919
 
        
2920
 
END;
2921
 
'
2922
 
LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
2923
 
 
2924
 
-----------------------------------------------------------------------
2925
 
-----------------------------------------------------------------------
2926
 
--
2927
 
--
2928
 
-----------------------------------------------------------------------
2929
 
CREATEFUNCTION DropGeometryColumn(varchar,varchar,varchar)
2930
 
        RETURNS text
2931
 
        AS 
2932
 
'
2933
 
DECLARE
2934
 
        ret text;
2935
 
BEGIN
2936
 
        SELECT DropGeometryColumn('''',$1,$2,$3) into ret;
2937
 
        RETURN ret;
2938
 
END;
2939
 
'
2940
 
LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
2941
 
 
2942
 
-----------------------------------------------------------------------
2943
 
-----------------------------------------------------------------------
2944
 
--
2945
 
--
2946
 
-----------------------------------------------------------------------
2947
 
CREATEFUNCTION DropGeometryColumn(varchar,varchar)
2948
 
        RETURNS text
2949
 
        AS 
2950
 
'
2951
 
DECLARE
2952
 
        ret text;
2953
 
BEGIN
2954
 
        SELECT DropGeometryColumn('''','''',$1,$2) into ret;
2955
 
        RETURN ret;
2956
 
END;
2957
 
'
2958
 
LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
2959
 
 
2960
 
-----------------------------------------------------------------------
2961
 
-----------------------------------------------------------------------
2962
 
--
2963
 
--
2964
 
-----------------------------------------------------------------------
2965
 
CREATEFUNCTION DropGeometryTable(varchar, varchar,varchar)
2966
 
        RETURNS text
2967
 
        AS 
2968
 
'
2969
 
DECLARE
2970
 
        catalog_name alias for $1; 
2971
 
        schema_name alias for $2;
2972
 
        table_name alias for $3;
2973
 
        real_schema name;
2974
 
 
2975
 
BEGIN
2976
 
 
2977
 
#if USE_VERSION >= 73
2978
 
        IF ( schema_name = '''' ) THEN
2979
 
                SELECT current_schema() into real_schema;
2980
 
        ELSE
2981
 
                real_schema = schema_name;
2982
 
        END IF;
2983
 
#endif
2984
 
 
2985
 
        -- Remove refs from geometry_columns table
2986
 
        EXECUTE ''DELETE FROM geometry_columns WHERE '' ||
2987
 
#if USE_VERSION >= 73
2988
 
                ''f_table_schema = '' || quote_literal(real_schema) ||
2989
 
                '' AND '' ||
2990
 
#endif
2991
 
                '' f_table_name = '' || quote_literal(table_name);
2992
 
        
2993
 
        -- Remove table 
2994
 
        EXECUTE ''DROP TABLE ''
2995
 
#if USE_VERSION >= 73
2996
 
                || quote_ident(real_schema) || ''.'' ||
2997
 
#endif 
2998
 
                quote_ident(table_name);
2999
 
 
3000
 
        RETURN
3001
 
#if USE_VERSION >= 73
3002
 
                real_schema || ''.'' ||
3003
 
#endif 
3004
 
                table_name ||'' dropped.'';
3005
 
        
3006
 
END;
3007
 
'
3008
 
LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
3009
 
 
3010
 
-----------------------------------------------------------------------
3011
 
-----------------------------------------------------------------------
3012
 
--
3013
 
--
3014
 
-----------------------------------------------------------------------
3015
 
CREATEFUNCTION DropGeometryTable(varchar,varchar) RETURNS text AS 
3016
 
'SELECT DropGeometryTable('''',$1,$2)'
3017
 
LANGUAGE 'sql' WITH (isstrict);
3018
 
 
3019
 
-----------------------------------------------------------------------
3020
 
-----------------------------------------------------------------------
3021
 
--
3022
 
--
3023
 
-----------------------------------------------------------------------
3024
 
CREATEFUNCTION DropGeometryTable(varchar) RETURNS text AS 
3025
 
'SELECT DropGeometryTable('''','''',$1)'
3026
 
LANGUAGE 'sql' _VOLATILE_STRICT; -- WITH (isstrict);
3027
 
 
3028
 
-----------------------------------------------------------------------
3029
 
-----------------------------------------------------------------------
3030
 
--
3031
 
--
3032
 
-----------------------------------------------------------------------
3033
 
CREATEFUNCTION UpdateGeometrySRID(varchar,varchar,varchar,varchar,integer)
3034
 
        RETURNS text
3035
 
        AS 
3036
 
'
3037
 
DECLARE
3038
 
        catalog_name alias for $1; 
3039
 
        schema_name alias for $2;
3040
 
        table_name alias for $3;
3041
 
        column_name alias for $4;
3042
 
        new_srid alias for $5;
3043
 
        myrec RECORD;
3044
 
        okay boolean;
3045
 
        cname varchar;
3046
 
        real_schema name;
3047
 
 
3048
 
BEGIN
3049
 
 
3050
 
 
3051
 
#if USE_VERSION >= 73
3052
 
        -- Find, check or fix schema_name
3053
 
        IF ( schema_name != '''' ) THEN
3054
 
                okay = ''f'';
3055
 
 
3056
 
                FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
3057
 
                        okay := ''t'';
3058
 
                END LOOP;
3059
 
 
3060
 
                IF ( okay <> ''t'' ) THEN
3061
 
                        RAISE EXCEPTION ''Invalid schema name'';
3062
 
                ELSE
3063
 
                        real_schema = schema_name;
3064
 
                END IF;
3065
 
        ELSE
3066
 
                SELECT INTO real_schema current_schema()::text;
3067
 
        END IF;
3068
 
#endif
3069
 
 
3070
 
        -- Find out if the column is in the geometry_columns table
3071
 
        okay = ''f'';
3072
 
        FOR myrec IN SELECT * from geometry_columns where f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP
3073
 
                okay := ''t'';
3074
 
        END LOOP; 
3075
 
        IF (okay <> ''t'') THEN 
3076
 
                RAISE EXCEPTION ''column not found in geometry_columns table'';
3077
 
                RETURN ''f'';
3078
 
        END IF;
3079
 
 
3080
 
        -- Update ref from geometry_columns table
3081
 
        EXECUTE ''UPDATE geometry_columns SET SRID = '' || new_srid::text || 
3082
 
                '' where f_table_schema = '' ||
3083
 
                quote_literal(real_schema) || '' and f_table_name = '' ||
3084
 
                quote_literal(table_name)  || '' and f_geometry_column = '' ||
3085
 
                quote_literal(column_name);
3086
 
        
3087
 
        -- Make up constraint name
3088
 
        cname = ''enforce_srid_''  || column_name;
3089
 
 
3090
 
        -- Drop enforce_srid constraint
3091
 
#if USE_VERSION < 73
3092
 
        EXECUTE ''ALTER TABLE '' || quote_ident(table_name) ||
3093
 
#else
3094
 
        EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) ||
3095
 
                ''.'' || quote_ident(table_name) ||
3096
 
#endif
3097
 
                '' DROP constraint '' || quote_ident(cname);
3098
 
 
3099
 
        -- Update geometries SRID
3100
 
#if USE_VERSION < 73
3101
 
        EXECUTE ''UPDATE '' || quote_ident(table_name) ||
3102
 
#else
3103
 
        EXECUTE ''UPDATE '' || quote_ident(real_schema) ||
3104
 
                ''.'' || quote_ident(table_name) ||
3105
 
#endif
3106
 
                '' SET '' || quote_ident(column_name) ||
3107
 
                '' = setSRID('' || quote_ident(column_name) ||
3108
 
                '', '' || new_srid::text || '')'';
3109
 
 
3110
 
        -- Reset enforce_srid constraint
3111
 
#if USE_VERSION < 73
3112
 
        EXECUTE ''ALTER TABLE '' || quote_ident(table_name) ||
3113
 
#else
3114
 
        EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) ||
3115
 
                ''.'' || quote_ident(table_name) ||
3116
 
#endif
3117
 
                '' ADD constraint '' || quote_ident(cname) ||
3118
 
                '' CHECK (srid('' || quote_ident(column_name) ||
3119
 
                '') = '' || new_srid::text || '')'';
3120
 
 
3121
 
        RETURN real_schema || ''.'' || table_name || ''.'' || column_name ||'' SRID changed to '' || new_srid::text;
3122
 
        
3123
 
END;
3124
 
'
3125
 
LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
3126
 
 
3127
 
-----------------------------------------------------------------------
3128
 
-----------------------------------------------------------------------
3129
 
CREATEFUNCTION UpdateGeometrySRID(varchar,varchar,varchar,integer)
3130
 
        RETURNS text
3131
 
        AS '
3132
 
DECLARE
3133
 
        ret  text;
3134
 
BEGIN
3135
 
        SELECT UpdateGeometrySRID('''',$1,$2,$3,$4) into ret;
3136
 
        RETURN ret;
3137
 
END;
3138
 
'
3139
 
LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
3140
 
 
3141
 
-----------------------------------------------------------------------
3142
 
-----------------------------------------------------------------------
3143
 
CREATEFUNCTION UpdateGeometrySRID(varchar,varchar,integer)
3144
 
        RETURNS text
3145
 
        AS '
3146
 
DECLARE
3147
 
        ret  text;
3148
 
BEGIN
3149
 
        SELECT UpdateGeometrySRID('''','''',$1,$2,$3) into ret;
3150
 
        RETURN ret;
3151
 
END;
3152
 
'
3153
 
LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
3154
 
 
3155
 
-----------------------------------------------------------------------
3156
 
-----------------------------------------------------------------------
3157
 
--
3158
 
--
3159
 
--
3160
 
-----------------------------------------------------------------------
3161
 
#if USE_VERSION >= 80
3162
 
CREATEFUNCTION update_geometry_stats() RETURNS text
3163
 
AS ' SELECT ''update_geometry_stats() has been obsoleted. Statistics are automatically built running the ANALYZE command''::text' LANGUAGE 'sql';
3164
 
#else
3165
 
CREATEFUNCTION update_geometry_stats()
3166
 
RETURNS text
3167
 
AS
3168
 
'
3169
 
DECLARE
3170
 
        result text;
3171
 
        stated integer;
3172
 
BEGIN
3173
 
 
3174
 
        UPDATE geometry_columns SET
3175
 
#if USE_VERSION >= 73
3176
 
                stats = (build_histogram2d(create_histogram2d(
3177
 
                        find_extent(f_table_schema, f_table_name, f_geometry_column), 40), f_table_schema, f_table_name, f_geometry_column))
3178
 
                FROM pg_class c, pg_attribute a, pg_namespace n
3179
 
                WHERE n.nspname = f_table_schema::name
3180
 
                AND c.relname = f_table_name::name
3181
 
                AND c.relnamespace = n.oid
3182
 
#else
3183
 
                stats = (build_histogram2d(create_histogram2d(
3184
 
                        find_extent(f_table_name, f_geometry_column),
3185
 
                        40), f_table_name, f_geometry_column))
3186
 
                FROM pg_class c, pg_attribute a
3187
 
                WHERE c.relname = f_table_name::name
3188
 
#endif
3189
 
                AND a.attname = f_geometry_column::name
3190
 
                AND a.attrelid = c.oid
3191
 
                AND geometry_columns.attrelid is not null;
3192
 
 
3193
 
        GET DIAGNOSTICS stated = ROW_COUNT;
3194
 
 
3195
 
        result = ''stats:'' || stated::text;
3196
 
 
3197
 
        return result;
3198
 
END;
3199
 
'
3200
 
LANGUAGE 'plpgsql' _VOLATILE_STRICT; 
3201
 
#endif
3202
 
 
3203
 
-----------------------------------------------------------------------
3204
 
-----------------------------------------------------------------------
3205
 
--
3206
 
--
3207
 
--
3208
 
-----------------------------------------------------------------------
3209
 
#if USE_VERSION >= 80
3210
 
CREATEFUNCTION update_geometry_stats(varchar,varchar) RETURNS text
3211
 
AS 'SELECT update_geometry_stats();' LANGUAGE 'sql' ;
3212
 
#else
3213
 
CREATEFUNCTION update_geometry_stats(varchar,varchar) RETURNS text
3214
 
AS
3215
 
'
3216
 
DECLARE
3217
 
        tablename aliAS for $1;
3218
 
        columnname aliAS for $2;
3219
 
        stated integer;
3220
 
        result text;
3221
 
BEGIN
3222
 
 
3223
 
        EXECUTE ''UPDATE geometry_columns SET
3224
 
#if USE_VERSION >= 73
3225
 
                        stats = (build_histogram2d(create_histogram2d(
3226
 
                                find_extent(f_table_schema,
3227
 
                                        f_table_name,
3228
 
                                        f_geometry_column), 40),
3229
 
                                        f_table_schema, f_table_name,
3230
 
                                        f_geometry_column))
3231
 
                        FROM pg_class c, pg_attribute a, pg_namespace n
3232
 
                        WHERE n.nspname = f_table_schema::name
3233
 
                        AND c.relname = f_table_name::name
3234
 
                        AND a.attname = f_geometry_column::name
3235
 
                        AND c.relnamespace = n.oid
3236
 
                        AND a.attrelid = c.oid
3237
 
#else
3238
 
                        stats = (build_histogram2d(create_histogram2d(
3239
 
                                find_extent(f_table_name, f_geometry_column),
3240
 
                                40), f_table_name, f_geometry_column))
3241
 
                        FROM pg_class c, pg_attribute a
3242
 
                        WHERE c.relname = f_table_name::name
3243
 
                        AND a.attname = f_geometry_column::name
3244
 
                        AND a.attrelid = c.oid
3245
 
#endif
3246
 
                        AND f_table_name = '' || quote_literal(tablename) || ''
3247
 
                        AND f_geometry_column = '' || quote_literal(columnname)
3248
 
                        || '' AND geometry_columns.attrelid is not null'';
3249
 
 
3250
 
        GET DIAGNOSTICS stated = ROW_COUNT;
3251
 
 
3252
 
        result = ''stats:'' || stated::text;
3253
 
 
3254
 
        return result;
3255
 
END;
3256
 
'
3257
 
LANGUAGE 'plpgsql' _VOLATILE_STRICT;
3258
 
 
3259
 
#endif 
3260
 
 
3261
 
-----------------------------------------------------------------------
3262
 
-----------------------------------------------------------------------
3263
 
CREATEFUNCTION find_srid(varchar,varchar,varchar) RETURNS int4 AS
3264
 
'DECLARE
3265
 
   schem text;
3266
 
   tabl text;
3267
 
   sr int4;
3268
 
BEGIN
3269
 
   IF $1 IS NULL THEN
3270
 
      RAISE EXCEPTION ''find_srid() - schema is NULL!'';
3271
 
   END IF;
3272
 
   IF $2 IS NULL THEN
3273
 
      RAISE EXCEPTION ''find_srid() - table name is NULL!'';
3274
 
   END IF;
3275
 
   IF $3 IS NULL THEN
3276
 
      RAISE EXCEPTION ''find_srid() - column name is NULL!'';
3277
 
   END IF;
3278
 
   schem = $1;
3279
 
   tabl = $2;
3280
 
   IF ( schem = '''' and tabl LIKE ''%.%'' ) THEN
3281
 
     schem = substr(tabl,1,strpos(tabl,''.'')-1);
3282
 
     tabl = substr(tabl,length(schem)+2);
3283
 
   ELSE
3284
 
     schem = schem || ''%'';
3285
 
   END IF;
3286
 
 
3287
 
   select SRID into sr from geometry_columns where f_table_schema like schem and f_table_name = tabl and f_geometry_column = $3;
3288
 
   IF NOT FOUND THEN
3289
 
       RAISE EXCEPTION ''find_srid() - couldnt find the corresponding SRID - is the geometry registered in the GEOMETRY_COLUMNS table?  Is there an uppercase/lowercase missmatch?'';
3290
 
   END IF;
3291
 
  return sr;
3292
 
END;
3293
 
'
3294
 
LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (iscachable); 
3295
 
 
3296
 
 
3297
 
---------------------------------------------------------------
3298
 
---------------------------------------------------------------
3299
 
 
3300
 
CREATEFUNCTION get_proj4_from_srid(integer) RETURNS text AS
3301
 
'
3302
 
BEGIN
3303
 
        RETURN proj4text::text FROM spatial_ref_sys WHERE srid= $1;
3304
 
END;
3305
 
'
3306
 
LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
3307
 
 
3308
 
 
3309
 
 
3310
 
CREATEFUNCTION transform_geometry(geometry,text,text,int)
3311
 
        RETURNS geometry
3312
 
        AS '@MODULE_FILENAME@','transform_geom'
3313
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3314
 
 
3315
 
CREATEFUNCTION transform(geometry,integer)
3316
 
        RETURNS geometry
3317
 
        AS '@MODULE_FILENAME@','transform'
3318
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3319
 
 
3320
 
CREATEFUNCTION ST_Transform(geometry,integer)
3321
 
    RETURNS geometry
3322
 
    AS '@MODULE_FILENAME@','transform'
3323
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3324
 
 
3325
 
 
3326
 
-----------------------------------------------------------------------
3327
 
-----------------------------------------------------------------------
3328
 
 
3329
 
CREATEFUNCTION postgis_version() RETURNS text
3330
 
        AS '@MODULE_FILENAME@'
3331
 
        LANGUAGE 'C' _IMMUTABLE;
3332
 
 
3333
 
CREATEFUNCTION postgis_proj_version() RETURNS text
3334
 
        AS '@MODULE_FILENAME@'
3335
 
        LANGUAGE 'C' _IMMUTABLE;
3336
 
 
3337
 
--
3338
 
--
3339
 
CREATEFUNCTION postgis_scripts_installed() RETURNS text
3340
 
        AS 'SELECT ''@POSTGIS_SCRIPTS_VERSION@''::text AS version'
3341
 
        LANGUAGE 'sql' _IMMUTABLE;
3342
 
 
3343
 
CREATEFUNCTION postgis_lib_version() RETURNS text
3344
 
        AS '@MODULE_FILENAME@'
3345
 
        LANGUAGE 'C' _IMMUTABLE; -- a new lib will require a new session
3346
 
 
3347
 
CREATEFUNCTION postgis_scripts_released() RETURNS text
3348
 
        AS '@MODULE_FILENAME@'
3349
 
        LANGUAGE 'C' _IMMUTABLE;
3350
 
 
3351
 
CREATEFUNCTION postgis_uses_stats() RETURNS bool
3352
 
        AS '@MODULE_FILENAME@'
3353
 
        LANGUAGE 'C' _IMMUTABLE;
3354
 
 
3355
 
CREATEFUNCTION postgis_geos_version() RETURNS text
3356
 
        AS '@MODULE_FILENAME@'
3357
 
        LANGUAGE 'C' _IMMUTABLE;
3358
 
 
3359
 
CREATEFUNCTION postgis_jts_version() RETURNS text
3360
 
        AS '@MODULE_FILENAME@'
3361
 
        LANGUAGE 'C' _IMMUTABLE;
3362
 
 
3363
 
CREATEFUNCTION postgis_scripts_build_date() RETURNS text
3364
 
        AS 'SELECT ''@POSTGIS_BUILD_DATE@''::text AS version'
3365
 
        LANGUAGE 'sql' _IMMUTABLE;
3366
 
 
3367
 
CREATEFUNCTION postgis_lib_build_date() RETURNS text
3368
 
        AS '@MODULE_FILENAME@'
3369
 
        LANGUAGE 'C' _IMMUTABLE;
3370
 
 
3371
 
 
3372
 
 
3373
 
CREATEFUNCTION postgis_full_version() RETURNS text
3374
 
AS '
3375
 
DECLARE
3376
 
        libver text;
3377
 
        projver text;
3378
 
        geosver text;
3379
 
        jtsver text;
3380
 
        usestats bool;
3381
 
        dbproc text;
3382
 
        relproc text;
3383
 
        fullver text;
3384
 
BEGIN
3385
 
        SELECT postgis_lib_version() INTO libver;
3386
 
        SELECT postgis_proj_version() INTO projver;
3387
 
        SELECT postgis_geos_version() INTO geosver;
3388
 
        SELECT postgis_jts_version() INTO jtsver;
3389
 
        SELECT postgis_uses_stats() INTO usestats;
3390
 
        SELECT postgis_scripts_installed() INTO dbproc;
3391
 
        SELECT postgis_scripts_released() INTO relproc;
3392
 
 
3393
 
        fullver = ''POSTGIS="'' || libver || ''"'';
3394
 
 
3395
 
        IF  geosver IS NOT NULL THEN
3396
 
                fullver = fullver || '' GEOS="'' || geosver || ''"'';
3397
 
        END IF;
3398
 
 
3399
 
        IF  jtsver IS NOT NULL THEN
3400
 
                fullver = fullver || '' JTS="'' || jtsver || ''"'';
3401
 
        END IF;
3402
 
 
3403
 
        IF  projver IS NOT NULL THEN
3404
 
                fullver = fullver || '' PROJ="'' || projver || ''"'';
3405
 
        END IF;
3406
 
 
3407
 
        IF usestats THEN
3408
 
                fullver = fullver || '' USE_STATS'';
3409
 
        END IF;
3410
 
 
3411
 
        -- fullver = fullver || '' DBPROC="'' || dbproc || ''"'';
3412
 
        -- fullver = fullver || '' RELPROC="'' || relproc || ''"'';
3413
 
 
3414
 
        IF dbproc != relproc THEN
3415
 
                fullver = fullver || '' (procs from '' || dbproc || '' need upgrade)'';
3416
 
        END IF;
3417
 
 
3418
 
        RETURN fullver;
3419
 
END
3420
 
'
3421
 
LANGUAGE 'plpgsql' _IMMUTABLE;
3422
 
 
3423
 
---------------------------------------------------------------
3424
 
---------------------------------------------------------------
3425
 
 
3426
 
CREATEFUNCTION box2d(geometry)
3427
 
        RETURNS box2d
3428
 
        AS '@MODULE_FILENAME@','LWGEOM_to_BOX2DFLOAT4'
3429
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3430
 
 
3431
 
CREATEFUNCTION ST_box2d(geometry)
3432
 
        RETURNS box2d
3433
 
        AS '@MODULE_FILENAME@','LWGEOM_to_BOX2DFLOAT4'
3434
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3435
 
 
3436
 
CREATEFUNCTION box3d(geometry)
3437
 
        RETURNS box3d
3438
 
        AS '@MODULE_FILENAME@','LWGEOM_to_BOX3D'
3439
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3440
 
 
3441
 
CREATEFUNCTION ST_box3d(geometry)
3442
 
        RETURNS box3d
3443
 
        AS '@MODULE_FILENAME@','LWGEOM_to_BOX3D'
3444
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3445
 
 
3446
 
CREATEFUNCTION box(geometry)
3447
 
        RETURNS box
3448
 
        AS '@MODULE_FILENAME@','LWGEOM_to_BOX'
3449
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3450
 
 
3451
 
CREATEFUNCTION ST_box(geometry)
3452
 
        RETURNS box
3453
 
        AS '@MODULE_FILENAME@','LWGEOM_to_BOX'
3454
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3455
 
 
3456
 
CREATEFUNCTION box2d(box3d)
3457
 
        RETURNS box2d
3458
 
        AS '@MODULE_FILENAME@','BOX3D_to_BOX2DFLOAT4'
3459
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3460
 
 
3461
 
CREATEFUNCTION ST_box2d(box3d)
3462
 
        RETURNS box2d
3463
 
        AS '@MODULE_FILENAME@','BOX3D_to_BOX2DFLOAT4'
3464
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3465
 
 
3466
 
CREATEFUNCTION box3d(box2d)
3467
 
        RETURNS box3d
3468
 
        AS '@MODULE_FILENAME@','BOX2DFLOAT4_to_BOX3D'
3469
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3470
 
 
3471
 
CREATEFUNCTION ST_box3d(box2d)
3472
 
        RETURNS box3d
3473
 
        AS '@MODULE_FILENAME@','BOX2DFLOAT4_to_BOX3D'
3474
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3475
 
 
3476
 
CREATEFUNCTION box(box3d)
3477
 
        RETURNS box
3478
 
        AS '@MODULE_FILENAME@','BOX3D_to_BOX'
3479
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3480
 
 
3481
 
CREATEFUNCTION ST_box(box3d)
3482
 
        RETURNS box
3483
 
        AS '@MODULE_FILENAME@','BOX3D_to_BOX'
3484
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3485
 
 
3486
 
CREATEFUNCTION text(geometry)
3487
 
        RETURNS text
3488
 
        AS '@MODULE_FILENAME@','LWGEOM_to_text'
3489
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3490
 
 
3491
 
CREATEFUNCTION ST_text(geometry)
3492
 
        RETURNS text
3493
 
        AS '@MODULE_FILENAME@','LWGEOM_to_text'
3494
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3495
 
 
3496
 
CREATEFUNCTION box3dtobox(box3d)
3497
 
        RETURNS box
3498
 
        AS 'SELECT box($1)'
3499
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3500
 
 
3501
 
CREATEFUNCTION geometry(box2d)
3502
 
        RETURNS geometry
3503
 
        AS '@MODULE_FILENAME@','BOX2DFLOAT4_to_LWGEOM'
3504
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3505
 
 
3506
 
CREATEFUNCTION ST_geometry(box2d)
3507
 
        RETURNS geometry
3508
 
        AS '@MODULE_FILENAME@','BOX2DFLOAT4_to_LWGEOM'
3509
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3510
 
 
3511
 
CREATEFUNCTION geometry(box3d)
3512
 
        RETURNS geometry
3513
 
        AS '@MODULE_FILENAME@','BOX3D_to_LWGEOM'
3514
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3515
 
 
3516
 
CREATEFUNCTION ST_geometry(box3d)
3517
 
        RETURNS geometry
3518
 
        AS '@MODULE_FILENAME@','BOX3D_to_LWGEOM'
3519
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3520
 
 
3521
 
CREATEFUNCTION geometry(text)
3522
 
        RETURNS geometry
3523
 
        AS '@MODULE_FILENAME@','parse_WKT_lwgeom'
3524
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3525
 
 
3526
 
CREATEFUNCTION ST_geometry(text)
3527
 
        RETURNS geometry
3528
 
        AS '@MODULE_FILENAME@','parse_WKT_lwgeom'
3529
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3530
 
 
3531
 
CREATEFUNCTION geometry(chip)
3532
 
        RETURNS geometry
3533
 
        AS '@MODULE_FILENAME@','CHIP_to_LWGEOM'
3534
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3535
 
 
3536
 
CREATEFUNCTION ST_geometry(chip)
3537
 
        RETURNS geometry
3538
 
        AS '@MODULE_FILENAME@','CHIP_to_LWGEOM'
3539
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3540
 
 
3541
 
CREATEFUNCTION geometry(bytea)
3542
 
        RETURNS geometry
3543
 
        AS '@MODULE_FILENAME@','LWGEOM_from_bytea'
3544
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3545
 
 
3546
 
CREATEFUNCTION ST_geometry(bytea)
3547
 
        RETURNS geometry
3548
 
        AS '@MODULE_FILENAME@','LWGEOM_from_bytea'
3549
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3550
 
 
3551
 
CREATEFUNCTION bytea(geometry)
3552
 
        RETURNS bytea
3553
 
        AS '@MODULE_FILENAME@','LWGEOM_to_bytea'
3554
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3555
 
 
3556
 
CREATEFUNCTION ST_bytea(geometry)
3557
 
        RETURNS bytea
3558
 
        AS '@MODULE_FILENAME@','LWGEOM_to_bytea'
3559
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3560
 
 
3561
 
CREATEFUNCTION text(bool)
3562
 
        RETURNS text
3563
 
        AS '@MODULE_FILENAME@','BOOL_to_text'
3564
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3565
 
 
3566
 
CREATEFUNCTION ST_text(bool)
3567
 
        RETURNS text
3568
 
        AS '@MODULE_FILENAME@','BOOL_to_text'
3569
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3570
 
 
3571
 
#if USE_VERSION >= 73
3572
 
CREATE CAST (geometry AS box2d) WITH FUNCTION ST_box2d(geometry) AS IMPLICIT;
3573
 
CREATE CAST (geometry AS box3d) WITH FUNCTION ST_box3d(geometry) AS IMPLICIT;
3574
 
CREATE CAST (geometry AS box) WITH FUNCTION ST_box(geometry) AS IMPLICIT;
3575
 
CREATE CAST (box3d AS box2d) WITH FUNCTION ST_box2d(box3d) AS IMPLICIT;
3576
 
CREATE CAST (box2d AS box3d) WITH FUNCTION ST_box3d(box2d) AS IMPLICIT;
3577
 
CREATE CAST (box2d AS geometry) WITH FUNCTION ST_geometry(box2d) AS IMPLICIT;
3578
 
CREATE CAST (box3d AS box) WITH FUNCTION ST_box(box3d) AS IMPLICIT;
3579
 
CREATE CAST (box3d AS geometry) WITH FUNCTION ST_geometry(box3d) AS IMPLICIT;
3580
 
CREATE CAST (text AS geometry) WITH FUNCTION ST_geometry(text) AS IMPLICIT;
3581
 
CREATE CAST (geometry AS text) WITH FUNCTION ST_text(geometry) AS IMPLICIT;
3582
 
CREATE CAST (chip AS geometry) WITH FUNCTION ST_geometry(chip) AS IMPLICIT;
3583
 
CREATE CAST (bytea AS geometry) WITH FUNCTION ST_geometry(bytea) AS IMPLICIT;
3584
 
CREATE CAST (geometry AS bytea) WITH FUNCTION ST_bytea(geometry) AS IMPLICIT;
3585
 
#endif
3586
 
 
3587
 
---------------------------------------------------------------
3588
 
---------------------------------------------------------------
3589
 
 
3590
 
CREATEFUNCTION Simplify(geometry, float8)
3591
 
   RETURNS geometry
3592
 
   AS '@MODULE_FILENAME@', 'LWGEOM_simplify2d'
3593
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3594
 
 
3595
 
CREATEFUNCTION ST_Simplify(geometry, float8)
3596
 
   RETURNS geometry
3597
 
   AS '@MODULE_FILENAME@', 'LWGEOM_simplify2d'
3598
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3599
 
 
3600
 
CREATEFUNCTION SnapToGrid(geometry, float8, float8, float8, float8)
3601
 
   RETURNS geometry
3602
 
   AS '@MODULE_FILENAME@', 'LWGEOM_snaptogrid'
3603
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3604
 
 
3605
 
CREATEFUNCTION ST_SnapToGrid(geometry, float8, float8, float8, float8)
3606
 
   RETURNS geometry
3607
 
   AS '@MODULE_FILENAME@', 'LWGEOM_snaptogrid'
3608
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3609
 
 
3610
 
CREATEFUNCTION SnapToGrid(geometry, float8, float8)
3611
 
   RETURNS geometry
3612
 
   AS 'SELECT SnapToGrid($1, 0, 0, $2, $3)'
3613
 
   LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3614
 
 
3615
 
CREATEFUNCTION ST_SnapToGrid(geometry, float8, float8)
3616
 
   RETURNS geometry
3617
 
   AS 'SELECT SnapToGrid($1, 0, 0, $2, $3)'
3618
 
   LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3619
 
 
3620
 
CREATEFUNCTION SnapToGrid(geometry, float8)
3621
 
   RETURNS geometry
3622
 
   AS 'SELECT SnapToGrid($1, 0, 0, $2, $2)'
3623
 
   LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3624
 
 
3625
 
CREATEFUNCTION ST_SnapToGrid(geometry, float8)
3626
 
   RETURNS geometry
3627
 
   AS 'SELECT SnapToGrid($1, 0, 0, $2, $2)'
3628
 
   LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3629
 
 
3630
 
CREATEFUNCTION SnapToGrid(geometry, geometry, float8, float8, float8, float8)
3631
 
   RETURNS geometry
3632
 
   AS '@MODULE_FILENAME@', 'LWGEOM_snaptogrid_pointoff'
3633
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3634
 
 
3635
 
CREATEFUNCTION ST_SnapToGrid(geometry, geometry, float8, float8, float8, float8)
3636
 
   RETURNS geometry
3637
 
   AS '@MODULE_FILENAME@', 'LWGEOM_snaptogrid_pointoff'
3638
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3639
 
 
3640
 
CREATEFUNCTION Segmentize(geometry, float8)
3641
 
        RETURNS geometry
3642
 
        AS '@MODULE_FILENAME@', 'LWGEOM_segmentize2d'
3643
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3644
 
 
3645
 
CREATEFUNCTION ST_Segmentize(geometry, float8)
3646
 
        RETURNS geometry
3647
 
        AS '@MODULE_FILENAME@', 'LWGEOM_segmentize2d'
3648
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3649
 
 
3650
 
---------------------------------------------------------------
3651
 
---------------------------------------------------------------
3652
 
 
3653
 
CREATEFUNCTION line_interpolate_point(geometry, float8)
3654
 
   RETURNS geometry
3655
 
   AS '@MODULE_FILENAME@', 'LWGEOM_line_interpolate_point'
3656
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3657
 
 
3658
 
CREATEFUNCTION ST_line_interpolate_point(geometry, float8)
3659
 
   RETURNS geometry
3660
 
   AS '@MODULE_FILENAME@', 'LWGEOM_line_interpolate_point'
3661
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3662
 
 
3663
 
CREATEFUNCTION line_substring(geometry, float8, float8)
3664
 
   RETURNS geometry
3665
 
   AS '@MODULE_FILENAME@', 'LWGEOM_line_substring'
3666
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3667
 
 
3668
 
CREATEFUNCTION ST_line_substring(geometry, float8, float8)
3669
 
   RETURNS geometry
3670
 
   AS '@MODULE_FILENAME@', 'LWGEOM_line_substring'
3671
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3672
 
 
3673
 
CREATEFUNCTION line_locate_point(geometry, geometry)
3674
 
   RETURNS float8
3675
 
   AS '@MODULE_FILENAME@', 'LWGEOM_line_locate_point'
3676
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3677
 
 
3678
 
CREATEFUNCTION ST_line_locate_point(geometry, geometry)
3679
 
   RETURNS float8
3680
 
   AS '@MODULE_FILENAME@', 'LWGEOM_line_locate_point'
3681
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3682
 
 
3683
 
CREATEFUNCTION locate_between_measures(geometry, float8, float8)
3684
 
        RETURNS geometry
3685
 
        AS '@MODULE_FILENAME@', 'LWGEOM_locate_between_m'
3686
 
        LANGUAGE 'C' _IMMUTABLE_STRICT;
3687
 
 
3688
 
CREATEFUNCTION ST_locate_between_measures(geometry, float8, float8)
3689
 
        RETURNS geometry
3690
 
        AS '@MODULE_FILENAME@', 'LWGEOM_locate_between_m'
3691
 
        LANGUAGE 'C' _IMMUTABLE_STRICT;
3692
 
 
3693
 
CREATEFUNCTION locate_along_measure(geometry, float8)
3694
 
        RETURNS geometry
3695
 
        AS 'SELECT locate_between_measures($1, $2, $2)'
3696
 
        LANGUAGE 'sql' _IMMUTABLE_STRICT;
3697
 
 
3698
 
CREATEFUNCTION ST_locate_along_measure(geometry, float8)
3699
 
        RETURNS geometry
3700
 
        AS 'SELECT locate_between_measures($1, $2, $2)'
3701
 
        LANGUAGE 'sql' _IMMUTABLE_STRICT;
3702
 
 
3703
 
---------------------------------------------------------------
3704
 
---------------------------------------------------------------
3705
 
 
3706
 
CREATEFUNCTION intersection(geometry,geometry)
3707
 
   RETURNS geometry
3708
 
   AS '@MODULE_FILENAME@','intersection'
3709
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3710
 
 
3711
 
CREATEFUNCTION ST_Intersection(geometry,geometry)
3712
 
    RETURNS geometry
3713
 
    AS '@MODULE_FILENAME@','intersection'
3714
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3715
 
 
3716
 
CREATEFUNCTION buffer(geometry,float8)
3717
 
   RETURNS geometry
3718
 
   AS '@MODULE_FILENAME@','buffer'
3719
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3720
 
 
3721
 
CREATEFUNCTION ST_Buffer(geometry,float8)
3722
 
    RETURNS geometry
3723
 
    AS '@MODULE_FILENAME@','buffer'
3724
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3725
 
 
3726
 
CREATEFUNCTION buffer(geometry,float8,integer)
3727
 
   RETURNS geometry
3728
 
   AS '@MODULE_FILENAME@','buffer'
3729
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3730
 
 
3731
 
CREATEFUNCTION ST_buffer(geometry,float8,integer)
3732
 
   RETURNS geometry
3733
 
   AS '@MODULE_FILENAME@','buffer'
3734
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3735
 
   
3736
 
CREATEFUNCTION convexhull(geometry)
3737
 
        RETURNS geometry
3738
 
        AS '@MODULE_FILENAME@','convexhull'
3739
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3740
 
 
3741
 
CREATEFUNCTION ST_ConvexHull(geometry)
3742
 
    RETURNS geometry
3743
 
    AS '@MODULE_FILENAME@','convexhull'
3744
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3745
 
 
3746
 
#if GEOS_VERNUM >= 30
3747
 
CREATEFUNCTION ST_SimplifyPreserveTopology(geometry, float8)
3748
 
    RETURNS geometry
3749
 
    AS '@MODULE_FILENAME@','topologypreservesimplify'
3750
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3751
 
#endif
3752
 
 
3753
 
CREATEFUNCTION difference(geometry,geometry)
3754
 
        RETURNS geometry
3755
 
        AS '@MODULE_FILENAME@','difference'
3756
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3757
 
 
3758
 
CREATEFUNCTION ST_Difference(geometry,geometry)
3759
 
    RETURNS geometry
3760
 
    AS '@MODULE_FILENAME@','difference'
3761
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3762
 
 
3763
 
CREATEFUNCTION boundary(geometry)
3764
 
        RETURNS geometry
3765
 
        AS '@MODULE_FILENAME@','boundary'
3766
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3767
 
 
3768
 
CREATEFUNCTION ST_Boundary(geometry)
3769
 
        RETURNS geometry
3770
 
        AS '@MODULE_FILENAME@','boundary'
3771
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3772
 
 
3773
 
CREATEFUNCTION symdifference(geometry,geometry)
3774
 
        RETURNS geometry
3775
 
        AS '@MODULE_FILENAME@','symdifference'
3776
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3777
 
 
3778
 
CREATEFUNCTION ST_SymDifference(geometry,geometry)
3779
 
    RETURNS geometry
3780
 
    AS '@MODULE_FILENAME@','symdifference'
3781
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3782
 
 
3783
 
CREATEFUNCTION symmetricdifference(geometry,geometry)
3784
 
        RETURNS geometry
3785
 
        AS '@MODULE_FILENAME@','symdifference'
3786
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3787
 
 
3788
 
CREATEFUNCTION ST_symmetricdifference(geometry,geometry)
3789
 
        RETURNS geometry
3790
 
        AS '@MODULE_FILENAME@','symdifference'
3791
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3792
 
 
3793
 
CREATEFUNCTION GeomUnion(geometry,geometry)
3794
 
        RETURNS geometry
3795
 
        AS '@MODULE_FILENAME@','geomunion'
3796
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3797
 
 
3798
 
CREATEFUNCTION ST_Union(geometry,geometry)
3799
 
    RETURNS geometry
3800
 
    AS '@MODULE_FILENAME@','geomunion'
3801
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3802
 
 
3803
 
CREATE AGGREGATE MemGeomUnion (
3804
 
        basetype = geometry,
3805
 
        sfunc = geomunion,
3806
 
        stype = geometry
3807
 
        );
3808
 
 
3809
 
CREATE AGGREGATE ST_MemUnion (
3810
 
        basetype = geometry,
3811
 
        sfunc = ST_union,
3812
 
        stype = geometry
3813
 
        );
3814
 
 
3815
 
CREATEFUNCTION unite_garray (geometry[])
3816
 
        RETURNS geometry
3817
 
        AS '@MODULE_FILENAME@'
3818
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable); 
3819
 
 
3820
 
CREATEFUNCTION ST_unite_garray (geometry[])
3821
 
        RETURNS geometry
3822
 
        AS '@MODULE_FILENAME@','unite_garray'
3823
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable); 
3824
 
 
3825
 
CREATE AGGREGATE GeomUnion (
3826
 
        sfunc = geom_accum,
3827
 
        basetype = geometry,
3828
 
        stype = geometry[],
3829
 
        finalfunc = ST_unite_garray
3830
 
        );
3831
 
 
3832
 
CREATE AGGREGATE ST_Union (
3833
 
        sfunc = ST_geom_accum,
3834
 
        basetype = geometry,
3835
 
        stype = geometry[],
3836
 
        finalfunc = ST_unite_garray
3837
 
        );
3838
 
 
3839
 
CREATEFUNCTION relate(geometry,geometry)
3840
 
   RETURNS text
3841
 
   AS '@MODULE_FILENAME@','relate_full'
3842
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3843
 
 
3844
 
CREATEFUNCTION ST_relate(geometry,geometry)
3845
 
   RETURNS text
3846
 
   AS '@MODULE_FILENAME@','relate_full'
3847
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3848
 
 
3849
 
CREATEFUNCTION relate(geometry,geometry,text)
3850
 
   RETURNS boolean
3851
 
   AS '@MODULE_FILENAME@','relate_pattern'
3852
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3853
 
 
3854
 
CREATEFUNCTION ST_Relate(geometry,geometry,text)
3855
 
    RETURNS boolean
3856
 
    AS '@MODULE_FILENAME@','relate_pattern'
3857
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3858
 
 
3859
 
CREATEFUNCTION disjoint(geometry,geometry)
3860
 
   RETURNS boolean
3861
 
   AS '@MODULE_FILENAME@'
3862
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3863
 
   
3864
 
CREATEFUNCTION ST_Disjoint(geometry,geometry)
3865
 
    RETURNS boolean
3866
 
    AS '@MODULE_FILENAME@','disjoint'
3867
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3868
 
 
3869
 
CREATEFUNCTION touches(geometry,geometry)
3870
 
   RETURNS boolean
3871
 
   AS '@MODULE_FILENAME@'
3872
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3873
 
 
3874
 
CREATEFUNCTION _ST_Touches(geometry,geometry)
3875
 
    RETURNS boolean
3876
 
    AS '@MODULE_FILENAME@','touches'
3877
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3878
 
 
3879
 
CREATEFUNCTION ST_Touches(geometry,geometry)
3880
 
    RETURNS boolean
3881
 
    AS 'SELECT $1 && $2 AND _ST_Touches($1,$2)'
3882
 
    LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
3883
 
 
3884
 
CREATEFUNCTION _ST_DWithin(geometry,geometry,float8)
3885
 
    RETURNS boolean
3886
 
    AS '@MODULE_FILENAME@', 'LWGEOM_dwithin'
3887
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3888
 
 
3889
 
CREATEFUNCTION ST_DWithin(geometry, geometry, float8)
3890
 
    RETURNS boolean
3891
 
    AS 'SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_DWithin($1, $2, $3)'
3892
 
    LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
3893
 
 
3894
 
CREATEFUNCTION intersects(geometry,geometry)
3895
 
   RETURNS boolean
3896
 
   AS '@MODULE_FILENAME@'
3897
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3898
 
 
3899
 
CREATEFUNCTION _ST_Intersects(geometry,geometry)
3900
 
    RETURNS boolean
3901
 
    AS '@MODULE_FILENAME@','intersects'
3902
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3903
 
 
3904
 
CREATEFUNCTION ST_Intersects(geometry,geometry)
3905
 
    RETURNS boolean
3906
 
    AS 'SELECT $1 && $2 AND _ST_Intersects($1,$2)'
3907
 
    LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
3908
 
CREATEFUNCTION crosses(geometry,geometry)
3909
 
   RETURNS boolean
3910
 
   AS '@MODULE_FILENAME@'
3911
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3912
 
 
3913
 
CREATEFUNCTION _ST_Crosses(geometry,geometry)
3914
 
    RETURNS boolean
3915
 
    AS '@MODULE_FILENAME@','crosses'
3916
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3917
 
 
3918
 
CREATEFUNCTION ST_Crosses(geometry,geometry)
3919
 
    RETURNS boolean
3920
 
    AS 'SELECT $1 && $2 AND _ST_Crosses($1,$2)'
3921
 
    LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
3922
 
 
3923
 
CREATEFUNCTION within(geometry,geometry)
3924
 
   RETURNS boolean
3925
 
   AS '@MODULE_FILENAME@'
3926
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3927
 
 
3928
 
CREATEFUNCTION _ST_Within(geometry,geometry)
3929
 
    RETURNS boolean
3930
 
    AS '@MODULE_FILENAME@','within'
3931
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3932
 
 
3933
 
CREATEFUNCTION ST_Within(geometry,geometry)
3934
 
    RETURNS boolean
3935
 
    AS 'SELECT $1 && $2 AND _ST_Within($1,$2)'
3936
 
    LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
3937
 
 
3938
 
CREATEFUNCTION Contains(geometry,geometry)
3939
 
   RETURNS boolean
3940
 
   AS '@MODULE_FILENAME@'
3941
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3942
 
 
3943
 
CREATEFUNCTION _ST_Contains(geometry,geometry)
3944
 
    RETURNS boolean
3945
 
    AS '@MODULE_FILENAME@','contains'
3946
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3947
 
 
3948
 
CREATEFUNCTION ST_Contains(geometry,geometry)
3949
 
    RETURNS boolean
3950
 
    AS 'SELECT $1 && $2 AND _ST_Contains($1,$2)'
3951
 
    LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
3952
 
 
3953
 
#if GEOS_VERNUM >= 30
3954
 
CREATEFUNCTION _ST_CoveredBy(geometry,geometry)
3955
 
   RETURNS boolean
3956
 
   AS '@MODULE_FILENAME@', 'coveredby'
3957
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3958
 
 
3959
 
CREATEFUNCTION ST_CoveredBy(geometry,geometry)
3960
 
   RETURNS boolean
3961
 
   AS 'SELECT $1 && $2 AND _ST_CoveredBy($1,$2)'
3962
 
   LANGUAGE 'SQL' _IMMUTABLE; -- WITH(iscachable);
3963
 
 
3964
 
CREATEFUNCTION _ST_Covers(geometry,geometry)
3965
 
   RETURNS boolean
3966
 
   AS '@MODULE_FILENAME@', 'covers'
3967
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3968
 
 
3969
 
CREATEFUNCTION ST_Covers(geometry,geometry)
3970
 
   RETURNS boolean
3971
 
   AS 'SELECT $1 && $2 AND _ST_Covers($1,$2)'
3972
 
   LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
3973
 
#endif
3974
 
 
3975
 
#if GEOS_VERNUM >= 31
3976
 
CREATEFUNCTION _ST_ContainsProperly(geometry,geometry)
3977
 
    RETURNS boolean
3978
 
    AS '@MODULE_FILENAME@','containsproperly'
3979
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3980
 
 
3981
 
CREATEFUNCTION ST_ContainsProperly(geometry,geometry)
3982
 
    RETURNS boolean
3983
 
    AS 'SELECT $1 && $2 AND _ST_ContainsProperly($1,$2)'
3984
 
    LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
3985
 
#endif
3986
 
 
3987
 
CREATEFUNCTION overlaps(geometry,geometry)
3988
 
   RETURNS boolean
3989
 
   AS '@MODULE_FILENAME@'
3990
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3991
 
 
3992
 
CREATEFUNCTION _ST_Overlaps(geometry,geometry)
3993
 
    RETURNS boolean
3994
 
    AS '@MODULE_FILENAME@','overlaps'
3995
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
3996
 
 
3997
 
CREATEFUNCTION ST_Overlaps(geometry,geometry)
3998
 
    RETURNS boolean
3999
 
    AS 'SELECT $1 && $2 AND _ST_Overlaps($1,$2)'
4000
 
    LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
4001
 
 
4002
 
CREATEFUNCTION IsValid(geometry)
4003
 
   RETURNS boolean
4004
 
   AS '@MODULE_FILENAME@', 'isvalid'
4005
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4006
 
 
4007
 
CREATEFUNCTION ST_IsValid(geometry)
4008
 
    RETURNS boolean
4009
 
    AS '@MODULE_FILENAME@', 'isvalid'
4010
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4011
 
 
4012
 
CREATEFUNCTION GEOSnoop(geometry)
4013
 
   RETURNS geometry
4014
 
   AS '@MODULE_FILENAME@', 'GEOSnoop'
4015
 
   LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (isstrict,iscachable);
4016
 
 
4017
 
CREATEFUNCTION JTSnoop(geometry)
4018
 
   RETURNS geometry
4019
 
   AS '@MODULE_FILENAME@', 'JTSnoop'
4020
 
   LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (isstrict,iscachable);
4021
 
 
4022
 
CREATEFUNCTION Centroid(geometry)
4023
 
        RETURNS geometry
4024
 
        AS '@MODULE_FILENAME@'
4025
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4026
 
 
4027
 
CREATEFUNCTION ST_Centroid(geometry)
4028
 
        RETURNS geometry
4029
 
        AS '@MODULE_FILENAME@', 'centroid'
4030
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4031
 
 
4032
 
CREATEFUNCTION IsRing(geometry)
4033
 
        RETURNS boolean
4034
 
        AS '@MODULE_FILENAME@'
4035
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4036
 
 
4037
 
CREATEFUNCTION ST_IsRing(geometry)
4038
 
        RETURNS boolean
4039
 
        AS '@MODULE_FILENAME@', 'isring'
4040
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4041
 
 
4042
 
CREATEFUNCTION PointOnSurface(geometry)
4043
 
        RETURNS geometry
4044
 
        AS '@MODULE_FILENAME@'
4045
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4046
 
 
4047
 
CREATEFUNCTION ST_PointOnSurface(geometry)
4048
 
        RETURNS geometry
4049
 
        AS '@MODULE_FILENAME@', 'pointonsurface'
4050
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4051
 
 
4052
 
CREATEFUNCTION IsSimple(geometry)
4053
 
        RETURNS boolean
4054
 
        AS '@MODULE_FILENAME@', 'issimple'
4055
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4056
 
 
4057
 
CREATEFUNCTION ST_IsSimple(geometry)
4058
 
        RETURNS boolean
4059
 
        AS '@MODULE_FILENAME@', 'issimple'
4060
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4061
 
 
4062
 
CREATEFUNCTION Equals(geometry,geometry)
4063
 
        RETURNS boolean
4064
 
        AS '@MODULE_FILENAME@','geomequals'
4065
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4066
 
 
4067
 
CREATEFUNCTION ST_Equals(geometry,geometry)
4068
 
    RETURNS boolean
4069
 
    AS '@MODULE_FILENAME@','geomequals'
4070
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4071
 
 
4072
 
 
4073
 
-----------------------------------------------------------------------
4074
 
-----------------------------------------------------------------------
4075
 
CREATEFUNCTION AsSVG(geometry,int4,int4)
4076
 
        RETURNS TEXT
4077
 
        AS '@MODULE_FILENAME@','assvg_geometry'
4078
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4079
 
 
4080
 
CREATEFUNCTION ST_AsSVG(geometry,int4,int4)
4081
 
        RETURNS TEXT
4082
 
        AS '@MODULE_FILENAME@','assvg_geometry'
4083
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4084
 
 
4085
 
CREATEFUNCTION AsSVG(geometry,int4)
4086
 
        RETURNS TEXT
4087
 
        AS '@MODULE_FILENAME@','assvg_geometry'
4088
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4089
 
 
4090
 
CREATEFUNCTION ST_AsSVG(geometry,int4)
4091
 
        RETURNS TEXT
4092
 
        AS '@MODULE_FILENAME@','assvg_geometry'
4093
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4094
 
 
4095
 
CREATEFUNCTION AsSVG(geometry)
4096
 
        RETURNS TEXT
4097
 
        AS '@MODULE_FILENAME@','assvg_geometry'
4098
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4099
 
 
4100
 
CREATEFUNCTION ST_AsSVG(geometry)
4101
 
        RETURNS TEXT
4102
 
        AS '@MODULE_FILENAME@','assvg_geometry'
4103
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4104
 
 
4105
 
-----------------------------------------------------------------------
4106
 
-----------------------------------------------------------------------
4107
 
CREATEFUNCTION _ST_AsGML(int4, geometry, int4)
4108
 
        RETURNS TEXT
4109
 
        AS '@MODULE_FILENAME@','LWGEOM_asGML'
4110
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4111
 
 
4112
 
CREATEFUNCTION AsGML(geometry, int4)
4113
 
        RETURNS TEXT
4114
 
        AS 'SELECT _ST_AsGML(2, $1, $2)'
4115
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4116
 
 
4117
 
CREATEFUNCTION ST_AsGML(geometry, int4)
4118
 
        RETURNS TEXT
4119
 
        AS 'SELECT _ST_AsGML(2, $1, $2)'
4120
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4121
 
 
4122
 
CREATEFUNCTION AsGML(geometry)
4123
 
        RETURNS TEXT
4124
 
        AS 'SELECT _ST_AsGML(2, $1, 15)'
4125
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4126
 
 
4127
 
CREATEFUNCTION ST_AsGML(geometry)
4128
 
        RETURNS TEXT
4129
 
        AS 'SELECT _ST_AsGML(2, $1, 15)'
4130
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4131
 
 
4132
 
CREATEFUNCTION ST_AsGML(int4, geometry)
4133
 
        RETURNS TEXT
4134
 
        AS 'SELECT _ST_AsGML($1, $2, 15)'
4135
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4136
 
 
4137
 
CREATEFUNCTION ST_AsGML(int4, geometry, int4)
4138
 
        RETURNS TEXT
4139
 
        AS 'SELECT _ST_AsGML($1, $2, $3)'
4140
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4141
 
 
4142
 
-----------------------------------------------------------------------
4143
 
-----------------------------------------------------------------------
4144
 
 
4145
 
#ifdef USE_PROJ
4146
 
CREATEFUNCTION _ST_AsKML(int4, geometry, int4)
4147
 
        RETURNS TEXT
4148
 
        AS '@MODULE_FILENAME@','LWGEOM_asKML'
4149
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4150
 
 
4151
 
CREATEFUNCTION AsKML(geometry, int4)
4152
 
        RETURNS TEXT
4153
 
        AS 'SELECT _ST_AsKML(2, transform($1,4326), $2)' 
4154
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4155
 
 
4156
 
CREATEFUNCTION ST_AsKML(geometry, int4)
4157
 
        RETURNS TEXT
4158
 
        AS 'SELECT _ST_AsKML(2, ST_Transform($1,4326), $2)' 
4159
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4160
 
 
4161
 
CREATEFUNCTION AsKML(geometry) 
4162
 
        RETURNS TEXT
4163
 
        AS 'SELECT _ST_AsKML(2, transform($1,4326), 15)' 
4164
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4165
 
 
4166
 
CREATEFUNCTION AsKML(int4, geometry, int4) 
4167
 
        RETURNS TEXT
4168
 
        AS 'SELECT _ST_AsKML($1, transform($2,4326), $3)' 
4169
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4170
 
 
4171
 
CREATEFUNCTION ST_AsKML(geometry)
4172
 
        RETURNS TEXT
4173
 
        AS 'SELECT _ST_AsKML(2, ST_Transform($1,4326), 15)'
4174
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4175
 
 
4176
 
CREATEFUNCTION ST_AsKML(int4, geometry)
4177
 
        RETURNS TEXT
4178
 
        AS 'SELECT _ST_AsKML($1, ST_Transform($2,4326), 15)'
4179
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4180
 
 
4181
 
CREATEFUNCTION ST_AsKML(int4, geometry, int4) 
4182
 
        RETURNS TEXT
4183
 
        AS 'SELECT _ST_AsKML($1, ST_Transform($2,4326), $3)' 
4184
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4185
 
#endif
4186
 
 
4187
 
-----------------------------------------------------------------------
4188
 
-----------------------------------------------------------------------
4189
 
CREATEFUNCTION _ST_AsGeoJson(int4, geometry, int4, int4)
4190
 
        RETURNS TEXT
4191
 
        AS '@MODULE_FILENAME@','LWGEOM_asGeoJson'
4192
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4193
 
 
4194
 
CREATEFUNCTION ST_AsGeoJson(geometry, int4)
4195
 
        RETURNS TEXT
4196
 
        AS 'SELECT _ST_AsGeoJson(1, $1, $2, 0)'
4197
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4198
 
 
4199
 
CREATEFUNCTION ST_AsGeoJson(geometry)
4200
 
        RETURNS TEXT
4201
 
        AS 'SELECT _ST_AsGeoJson(1, $1, 15, 0)'
4202
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4203
 
 
4204
 
CREATEFUNCTION ST_AsGeoJson(int4, geometry)
4205
 
        RETURNS TEXT
4206
 
        AS 'SELECT _ST_AsGeoJson($1, $2, 15, 0)'
4207
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4208
 
 
4209
 
CREATEFUNCTION ST_AsGeoJson(int4, geometry, int4)
4210
 
        RETURNS TEXT
4211
 
        AS 'SELECT _ST_AsGeoJson($1, $2, $3, 0)'
4212
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4213
 
 
4214
 
CREATEFUNCTION ST_AsGeoJson(geometry, int4, int4)
4215
 
        RETURNS TEXT
4216
 
        AS 'SELECT _ST_AsGeoJson(1, $1, $2, $3)'
4217
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4218
 
 
4219
 
CREATEFUNCTION ST_AsGeoJson(int4, geometry, int4, int4)
4220
 
        RETURNS TEXT
4221
 
        AS 'SELECT _ST_AsGeoJson($1, $2, $3, $4)'
4222
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4223
 
 
4224
 
 
4225
 
------------------------------------------------------------------------
4226
 
------------------------------------------------------------------------
4227
 
 
4228
 
CREATEFUNCTION NumPoints(geometry)
4229
 
        RETURNS int4
4230
 
        AS '@MODULE_FILENAME@', 'LWGEOM_numpoints_linestring'
4231
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4232
 
 
4233
 
CREATEFUNCTION ST_NumPoints(geometry)
4234
 
        RETURNS int4
4235
 
        AS '@MODULE_FILENAME@', 'LWGEOM_numpoints_linestring'
4236
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4237
 
 
4238
 
CREATEFUNCTION NumGeometries(geometry)
4239
 
        RETURNS int4
4240
 
        AS '@MODULE_FILENAME@', 'LWGEOM_numgeometries_collection'
4241
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4242
 
 
4243
 
CREATEFUNCTION ST_NumGeometries(geometry)
4244
 
        RETURNS int4
4245
 
        AS '@MODULE_FILENAME@', 'LWGEOM_numgeometries_collection'
4246
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4247
 
 
4248
 
CREATEFUNCTION GeometryN(geometry,integer)
4249
 
        RETURNS geometry
4250
 
        AS '@MODULE_FILENAME@', 'LWGEOM_geometryn_collection'
4251
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4252
 
 
4253
 
CREATEFUNCTION ST_GeometryN(geometry,integer)
4254
 
        RETURNS geometry
4255
 
        AS '@MODULE_FILENAME@', 'LWGEOM_geometryn_collection'
4256
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4257
 
 
4258
 
CREATEFUNCTION Dimension(geometry)
4259
 
        RETURNS int4
4260
 
        AS '@MODULE_FILENAME@', 'LWGEOM_dimension'
4261
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4262
 
 
4263
 
CREATEFUNCTION ST_Dimension(geometry)
4264
 
    RETURNS int4
4265
 
    AS '@MODULE_FILENAME@', 'LWGEOM_dimension'
4266
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4267
 
 
4268
 
CREATEFUNCTION ExteriorRing(geometry)
4269
 
        RETURNS geometry
4270
 
        AS '@MODULE_FILENAME@','LWGEOM_exteriorring_polygon'
4271
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4272
 
 
4273
 
CREATEFUNCTION ST_ExteriorRing(geometry)
4274
 
        RETURNS geometry
4275
 
        AS '@MODULE_FILENAME@','LWGEOM_exteriorring_polygon'
4276
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4277
 
 
4278
 
CREATEFUNCTION NumInteriorRings(geometry)
4279
 
        RETURNS integer
4280
 
        AS '@MODULE_FILENAME@','LWGEOM_numinteriorrings_polygon'
4281
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4282
 
 
4283
 
CREATEFUNCTION ST_NumInteriorRings(geometry)
4284
 
        RETURNS integer
4285
 
        AS '@MODULE_FILENAME@','LWGEOM_numinteriorrings_polygon'
4286
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4287
 
 
4288
 
CREATEFUNCTION NumInteriorRing(geometry)
4289
 
        RETURNS integer
4290
 
        AS '@MODULE_FILENAME@','LWGEOM_numinteriorrings_polygon'
4291
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4292
 
 
4293
 
CREATEFUNCTION ST_NumInteriorRing(geometry)
4294
 
        RETURNS integer
4295
 
        AS '@MODULE_FILENAME@','LWGEOM_numinteriorrings_polygon'
4296
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4297
 
 
4298
 
CREATEFUNCTION InteriorRingN(geometry,integer)
4299
 
        RETURNS geometry
4300
 
        AS '@MODULE_FILENAME@','LWGEOM_interiorringn_polygon'
4301
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4302
 
 
4303
 
CREATEFUNCTION ST_InteriorRingN(geometry,integer)
4304
 
        RETURNS geometry
4305
 
        AS '@MODULE_FILENAME@','LWGEOM_interiorringn_polygon'
4306
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4307
 
 
4308
 
CREATEFUNCTION GeometryType(geometry)
4309
 
        RETURNS text
4310
 
        AS '@MODULE_FILENAME@', 'LWGEOM_getTYPE'
4311
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4312
 
 
4313
 
CREATEFUNCTION ST_GeometryType(geometry)
4314
 
    RETURNS text
4315
 
    AS '
4316
 
    DECLARE
4317
 
        gtype text := geometrytype($1);
4318
 
    BEGIN
4319
 
        IF (gtype IN (''POINT'', ''POINTM'')) THEN
4320
 
            gtype := ''Point'';
4321
 
        ELSIF (gtype IN (''LINESTRING'', ''LINESTRINGM'')) THEN
4322
 
            gtype := ''LineString'';
4323
 
        ELSIF (gtype IN (''POLYGON'', ''POLYGONM'')) THEN
4324
 
            gtype := ''Polygon'';
4325
 
        ELSIF (gtype IN (''MULTIPOINT'', ''MULTIPOINTM'')) THEN
4326
 
            gtype := ''MultiPoint'';
4327
 
        ELSIF (gtype IN (''MULTILINESTRING'', ''MULTILINESTRINGM'')) THEN
4328
 
            gtype := ''MultiLineString'';
4329
 
        ELSIF (gtype IN (''MULTIPOLYGON'', ''MULTIPOLYGONM'')) THEN
4330
 
            gtype := ''MultiPolygon'';
4331
 
        ELSE
4332
 
            gtype := ''Geometry'';
4333
 
        END IF;
4334
 
        RETURN ''ST_'' || gtype;
4335
 
    END
4336
 
        '
4337
 
        LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4338
 
 
4339
 
CREATEFUNCTION PointN(geometry,integer)
4340
 
        RETURNS geometry
4341
 
        AS '@MODULE_FILENAME@','LWGEOM_pointn_linestring'
4342
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4343
 
 
4344
 
CREATEFUNCTION ST_PointN(geometry,integer)
4345
 
        RETURNS geometry
4346
 
        AS '@MODULE_FILENAME@','LWGEOM_pointn_linestring'
4347
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4348
 
 
4349
 
CREATEFUNCTION X(geometry)
4350
 
        RETURNS float8
4351
 
        AS '@MODULE_FILENAME@','LWGEOM_x_point'
4352
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4353
 
 
4354
 
CREATEFUNCTION ST_X(geometry)
4355
 
        RETURNS float8
4356
 
        AS '@MODULE_FILENAME@','LWGEOM_x_point'
4357
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4358
 
 
4359
 
CREATEFUNCTION Y(geometry)
4360
 
        RETURNS float8
4361
 
        AS '@MODULE_FILENAME@','LWGEOM_y_point'
4362
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4363
 
        
4364
 
CREATEFUNCTION ST_Y(geometry)
4365
 
        RETURNS float8
4366
 
        AS '@MODULE_FILENAME@','LWGEOM_y_point'
4367
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4368
 
 
4369
 
CREATEFUNCTION Z(geometry)
4370
 
        RETURNS float8
4371
 
        AS '@MODULE_FILENAME@','LWGEOM_z_point'
4372
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4373
 
 
4374
 
CREATEFUNCTION SE_Z(geometry)
4375
 
        RETURNS float8
4376
 
        AS '@MODULE_FILENAME@','LWGEOM_z_point'
4377
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4378
 
 
4379
 
CREATEFUNCTION ST_Z(geometry)
4380
 
        RETURNS float8
4381
 
        AS '@MODULE_FILENAME@','LWGEOM_z_point'
4382
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4383
 
 
4384
 
CREATEFUNCTION M(geometry)
4385
 
        RETURNS float8
4386
 
        AS '@MODULE_FILENAME@','LWGEOM_m_point'
4387
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4388
 
 
4389
 
CREATEFUNCTION ST_M(geometry)
4390
 
        RETURNS float8
4391
 
        AS '@MODULE_FILENAME@','LWGEOM_m_point'
4392
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4393
 
 
4394
 
CREATEFUNCTION StartPoint(geometry)
4395
 
        RETURNS geometry
4396
 
        AS '@MODULE_FILENAME@', 'LWGEOM_startpoint_linestring'
4397
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4398
 
 
4399
 
CREATEFUNCTION ST_StartPoint(geometry)
4400
 
        RETURNS geometry
4401
 
        AS '@MODULE_FILENAME@', 'LWGEOM_startpoint_linestring'
4402
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4403
 
 
4404
 
CREATEFUNCTION EndPoint(geometry)
4405
 
        RETURNS geometry
4406
 
        AS '@MODULE_FILENAME@', 'LWGEOM_endpoint_linestring'
4407
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4408
 
 
4409
 
CREATEFUNCTION ST_EndPoint(geometry)
4410
 
        RETURNS geometry
4411
 
        AS '@MODULE_FILENAME@', 'LWGEOM_endpoint_linestring'
4412
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4413
 
 
4414
 
CREATEFUNCTION IsClosed(geometry)
4415
 
        RETURNS boolean
4416
 
        AS '@MODULE_FILENAME@', 'LWGEOM_isclosed_linestring'
4417
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4418
 
 
4419
 
CREATEFUNCTION ST_IsClosed(geometry)
4420
 
        RETURNS boolean
4421
 
        AS '@MODULE_FILENAME@', 'LWGEOM_isclosed_linestring'
4422
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4423
 
 
4424
 
CREATEFUNCTION IsEmpty(geometry)
4425
 
        RETURNS boolean
4426
 
        AS '@MODULE_FILENAME@', 'LWGEOM_isempty'
4427
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4428
 
 
4429
 
CREATEFUNCTION ST_IsEmpty(geometry)
4430
 
    RETURNS boolean
4431
 
    AS '@MODULE_FILENAME@', 'LWGEOM_isempty'
4432
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
4433
 
 
4434
 
CREATEFUNCTION SRID(geometry) 
4435
 
        RETURNS int4
4436
 
        AS '@MODULE_FILENAME@','LWGEOM_getSRID'
4437
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4438
 
 
4439
 
CREATEFUNCTION ST_SRID(geometry) 
4440
 
    RETURNS int4
4441
 
    AS '@MODULE_FILENAME@','LWGEOM_getSRID'
4442
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4443
 
 
4444
 
CREATEFUNCTION SetSRID(geometry,int4) 
4445
 
        RETURNS geometry
4446
 
        AS '@MODULE_FILENAME@','LWGEOM_setSRID'
4447
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);  
4448
 
 
4449
 
CREATEFUNCTION ST_SetSRID(geometry,int4) 
4450
 
        RETURNS geometry
4451
 
        AS '@MODULE_FILENAME@','LWGEOM_setSRID'
4452
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);  
4453
 
        
4454
 
CREATEFUNCTION AsBinary(geometry)
4455
 
        RETURNS bytea
4456
 
        AS '@MODULE_FILENAME@','LWGEOM_asBinary'
4457
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4458
 
 
4459
 
CREATEFUNCTION ST_AsBinary(geometry)
4460
 
    RETURNS bytea
4461
 
    AS '@MODULE_FILENAME@','LWGEOM_asBinary'
4462
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4463
 
 
4464
 
CREATEFUNCTION AsBinary(geometry,text)
4465
 
        RETURNS bytea
4466
 
        AS '@MODULE_FILENAME@','LWGEOM_asBinary'
4467
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4468
 
 
4469
 
CREATEFUNCTION ST_AsBinary(geometry,text)
4470
 
        RETURNS bytea
4471
 
        AS '@MODULE_FILENAME@','LWGEOM_asBinary'
4472
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4473
 
 
4474
 
CREATEFUNCTION AsText(geometry)
4475
 
        RETURNS TEXT
4476
 
        AS '@MODULE_FILENAME@','LWGEOM_asText'
4477
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4478
 
 
4479
 
CREATEFUNCTION ST_AsText(geometry)
4480
 
    RETURNS TEXT
4481
 
    AS '@MODULE_FILENAME@','LWGEOM_asText'
4482
 
    LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4483
 
 
4484
 
CREATEFUNCTION GeometryFromText(text)
4485
 
        RETURNS geometry
4486
 
        AS '@MODULE_FILENAME@','LWGEOM_from_text'
4487
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4488
 
 
4489
 
CREATEFUNCTION ST_GeometryFromText(text)
4490
 
        RETURNS geometry
4491
 
        AS '@MODULE_FILENAME@','LWGEOM_from_text'
4492
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4493
 
 
4494
 
CREATEFUNCTION GeometryFromText(text, int4)
4495
 
        RETURNS geometry
4496
 
        AS '@MODULE_FILENAME@','LWGEOM_from_text'
4497
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4498
 
 
4499
 
CREATEFUNCTION ST_GeometryFromText(text, int4)
4500
 
        RETURNS geometry
4501
 
        AS '@MODULE_FILENAME@','LWGEOM_from_text'
4502
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4503
 
 
4504
 
CREATEFUNCTION GeomFromText(text)
4505
 
        RETURNS geometry AS 'SELECT geometryfromtext($1)'
4506
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4507
 
 
4508
 
CREATEFUNCTION ST_GeomFromText(text)
4509
 
        RETURNS geometry AS 'SELECT geometryfromtext($1)'
4510
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4511
 
 
4512
 
CREATEFUNCTION GeomFromText(text, int4)
4513
 
        RETURNS geometry AS 'SELECT geometryfromtext($1, $2)'
4514
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4515
 
 
4516
 
CREATEFUNCTION ST_GeomFromText(text, int4)
4517
 
        RETURNS geometry AS 'SELECT geometryfromtext($1, $2)'
4518
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4519
 
 
4520
 
CREATEFUNCTION PointFromText(text)
4521
 
        RETURNS geometry
4522
 
        AS '
4523
 
        SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''POINT''
4524
 
        THEN GeomFromText($1)
4525
 
        ELSE NULL END
4526
 
        '
4527
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4528
 
 
4529
 
CREATEFUNCTION ST_PointFromText(text)
4530
 
        RETURNS geometry
4531
 
        AS '
4532
 
        SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''POINT''
4533
 
        THEN GeomFromText($1)
4534
 
        ELSE NULL END
4535
 
        '
4536
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4537
 
 
4538
 
CREATEFUNCTION PointFromText(text, int4)
4539
 
        RETURNS geometry
4540
 
        AS '
4541
 
        SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''POINT''
4542
 
        THEN GeomFromText($1,$2)
4543
 
        ELSE NULL END
4544
 
        '
4545
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4546
 
 
4547
 
CREATEFUNCTION ST_PointFromText(text, int4)
4548
 
        RETURNS geometry
4549
 
        AS '
4550
 
        SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''POINT''
4551
 
        THEN GeomFromText($1, $2)
4552
 
        ELSE NULL END
4553
 
        '
4554
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4555
 
 
4556
 
CREATEFUNCTION LineFromText(text)
4557
 
        RETURNS geometry
4558
 
        AS '
4559
 
        SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''LINESTRING''
4560
 
        THEN GeomFromText($1)
4561
 
        ELSE NULL END
4562
 
        '
4563
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4564
 
 
4565
 
CREATEFUNCTION ST_LineFromText(text)
4566
 
        RETURNS geometry
4567
 
        AS '
4568
 
        SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''LINESTRING''
4569
 
        THEN GeomFromText($1)
4570
 
        ELSE NULL END
4571
 
        '
4572
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4573
 
 
4574
 
CREATEFUNCTION LineFromText(text, int4)
4575
 
        RETURNS geometry
4576
 
        AS '
4577
 
        SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''LINESTRING''
4578
 
        THEN GeomFromText($1,$2)
4579
 
        ELSE NULL END
4580
 
        '
4581
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4582
 
 
4583
 
CREATEFUNCTION ST_LineFromText(text, int4)
4584
 
        RETURNS geometry
4585
 
        AS '
4586
 
        SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''LINESTRING''
4587
 
        THEN GeomFromText($1,$2)
4588
 
        ELSE NULL END
4589
 
        '
4590
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4591
 
 
4592
 
CREATEFUNCTION LineStringFromText(text)
4593
 
        RETURNS geometry
4594
 
        AS 'SELECT LineFromText($1)'
4595
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4596
 
 
4597
 
CREATEFUNCTION LineStringFromText(text, int4)
4598
 
        RETURNS geometry
4599
 
        AS 'SELECT LineFromText($1, $2)'
4600
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4601
 
 
4602
 
CREATEFUNCTION PolyFromText(text)
4603
 
        RETURNS geometry
4604
 
        AS '
4605
 
        SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''POLYGON''
4606
 
        THEN GeomFromText($1)
4607
 
        ELSE NULL END
4608
 
        '
4609
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4610
 
 
4611
 
CREATEFUNCTION ST_PolyFromText(text)
4612
 
        RETURNS geometry
4613
 
        AS '
4614
 
        SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''POLYGON''
4615
 
        THEN GeomFromText($1)
4616
 
        ELSE NULL END
4617
 
        '
4618
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4619
 
 
4620
 
CREATEFUNCTION PolyFromText(text, int4)
4621
 
        RETURNS geometry
4622
 
        AS '
4623
 
        SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''POLYGON''
4624
 
        THEN GeomFromText($1,$2)
4625
 
        ELSE NULL END
4626
 
        '
4627
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4628
 
        
4629
 
CREATEFUNCTION ST_PolyFromText(text, int4)
4630
 
        RETURNS geometry
4631
 
        AS '
4632
 
        SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''POLYGON''
4633
 
        THEN GeomFromText($1, $2)
4634
 
        ELSE NULL END
4635
 
        '
4636
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4637
 
 
4638
 
CREATEFUNCTION PolygonFromText(text, int4)
4639
 
        RETURNS geometry
4640
 
        AS 'SELECT PolyFromText($1, $2)'
4641
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4642
 
 
4643
 
CREATEFUNCTION ST_PolygonFromText(text, int4)
4644
 
        RETURNS geometry
4645
 
        AS 'SELECT PolyFromText($1, $2)'
4646
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4647
 
 
4648
 
CREATEFUNCTION PolygonFromText(text)
4649
 
        RETURNS geometry
4650
 
        AS 'SELECT PolyFromText($1)'
4651
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4652
 
 
4653
 
CREATEFUNCTION ST_PolygonFromText(text)
4654
 
        RETURNS geometry
4655
 
        AS 'SELECT PolyFromText($1)'
4656
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4657
 
 
4658
 
CREATEFUNCTION MLineFromText(text, int4)
4659
 
        RETURNS geometry
4660
 
        AS '
4661
 
        SELECT CASE
4662
 
        WHEN geometrytype(GeomFromText($1, $2)) = ''MULTILINESTRING''
4663
 
        THEN GeomFromText($1,$2)
4664
 
        ELSE NULL END
4665
 
        '
4666
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4667
 
 
4668
 
CREATEFUNCTION ST_MLineFromText(text, int4)
4669
 
        RETURNS geometry
4670
 
        AS '
4671
 
        SELECT CASE
4672
 
        WHEN geometrytype(GeomFromText($1, $2)) = ''MULTILINESTRING''
4673
 
        THEN GeomFromText($1,$2)
4674
 
        ELSE NULL END
4675
 
        '
4676
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4677
 
 
4678
 
CREATEFUNCTION MLineFromText(text)
4679
 
        RETURNS geometry
4680
 
        AS '
4681
 
        SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTILINESTRING''
4682
 
        THEN GeomFromText($1)
4683
 
        ELSE NULL END
4684
 
        '
4685
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4686
 
 
4687
 
CREATEFUNCTION ST_MLineFromText(text)
4688
 
        RETURNS geometry
4689
 
        AS '
4690
 
        SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTILINESTRING''
4691
 
        THEN GeomFromText($1)
4692
 
        ELSE NULL END
4693
 
        '
4694
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4695
 
 
4696
 
CREATEFUNCTION MultiLineStringFromText(text)
4697
 
        RETURNS geometry
4698
 
        AS 'SELECT MLineFromText($1)'
4699
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4700
 
 
4701
 
CREATEFUNCTION ST_MultiLineStringFromText(text)
4702
 
        RETURNS geometry
4703
 
        AS 'SELECT MLineFromText($1)'
4704
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4705
 
 
4706
 
CREATEFUNCTION MultiLineStringFromText(text, int4)
4707
 
        RETURNS geometry
4708
 
        AS 'SELECT MLineFromText($1, $2)'
4709
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4710
 
 
4711
 
CREATEFUNCTION ST_MultiLineStringFromText(text, int4)
4712
 
        RETURNS geometry
4713
 
        AS 'SELECT MLineFromText($1, $2)'
4714
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4715
 
 
4716
 
CREATEFUNCTION MPointFromText(text, int4)
4717
 
        RETURNS geometry
4718
 
        AS '
4719
 
        SELECT CASE WHEN geometrytype(GeomFromText($1,$2)) = ''MULTIPOINT''
4720
 
        THEN GeomFromText($1,$2)
4721
 
        ELSE NULL END
4722
 
        '
4723
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4724
 
 
4725
 
CREATEFUNCTION ST_MPointFromText(text, int4)
4726
 
        RETURNS geometry
4727
 
        AS '
4728
 
        SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''MULTIPOINT''
4729
 
        THEN GeomFromText($1, $2)
4730
 
        ELSE NULL END
4731
 
        '
4732
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4733
 
 
4734
 
CREATEFUNCTION MPointFromText(text)
4735
 
        RETURNS geometry
4736
 
        AS '
4737
 
        SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTIPOINT''
4738
 
        THEN GeomFromText($1)
4739
 
        ELSE NULL END
4740
 
        '
4741
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4742
 
 
4743
 
CREATEFUNCTION ST_MPointFromText(text)
4744
 
        RETURNS geometry
4745
 
        AS '
4746
 
        SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTIPOINT''
4747
 
        THEN GeomFromText($1)
4748
 
        ELSE NULL END
4749
 
        '
4750
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4751
 
 
4752
 
CREATEFUNCTION MultiPointFromText(text, int4)
4753
 
        RETURNS geometry
4754
 
        AS 'SELECT MPointFromText($1, $2)'
4755
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4756
 
 
4757
 
CREATEFUNCTION MultiPointFromText(text)
4758
 
        RETURNS geometry
4759
 
        AS 'SELECT MPointFromText($1)'
4760
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4761
 
 
4762
 
CREATEFUNCTION ST_MultiPointFromText(text)
4763
 
        RETURNS geometry
4764
 
        AS 'SELECT MPointFromText($1)'
4765
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4766
 
 
4767
 
CREATEFUNCTION MultiPointFromText(text)
4768
 
        RETURNS geometry
4769
 
        AS 'SELECT MPointFromText($1)'
4770
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4771
 
 
4772
 
CREATEFUNCTION ST_MultiPointFromText(text)
4773
 
        RETURNS geometry
4774
 
        AS 'SELECT MPointFromText($1)'
4775
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4776
 
 
4777
 
CREATEFUNCTION MPolyFromText(text, int4)
4778
 
        RETURNS geometry
4779
 
        AS '
4780
 
        SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''MULTIPOLYGON''
4781
 
        THEN GeomFromText($1,$2)
4782
 
        ELSE NULL END
4783
 
        '
4784
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4785
 
 
4786
 
CREATEFUNCTION ST_MPolyFromText(text, int4)
4787
 
        RETURNS geometry
4788
 
        AS '
4789
 
        SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''MULTIPOLYGON''
4790
 
        THEN GeomFromText($1,$2)
4791
 
        ELSE NULL END
4792
 
        '
4793
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4794
 
 
4795
 
CREATEFUNCTION MPolyFromText(text)
4796
 
        RETURNS geometry
4797
 
        AS '
4798
 
        SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTIPOLYGON''
4799
 
        THEN GeomFromText($1)
4800
 
        ELSE NULL END
4801
 
        '
4802
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4803
 
 
4804
 
--Availability: 1.2.2
4805
 
CREATEFUNCTION ST_MPolyFromText(text)
4806
 
        RETURNS geometry
4807
 
        AS '
4808
 
        SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTIPOLYGON''
4809
 
        THEN GeomFromText($1)
4810
 
        ELSE NULL END
4811
 
        '
4812
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4813
 
 
4814
 
CREATEFUNCTION MultiPolygonFromText(text, int4)
4815
 
        RETURNS geometry
4816
 
        AS 'SELECT MPolyFromText($1, $2)'
4817
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4818
 
 
4819
 
CREATEFUNCTION ST_MultiPolygonFromText(text, int4)
4820
 
        RETURNS geometry
4821
 
        AS 'SELECT MPolyFromText($1, $2)'
4822
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4823
 
 
4824
 
CREATEFUNCTION MultiPolygonFromText(text)
4825
 
        RETURNS geometry
4826
 
        AS 'SELECT MPolyFromText($1)'
4827
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4828
 
 
4829
 
CREATEFUNCTION ST_MultiPolygonFromText(text)
4830
 
        RETURNS geometry
4831
 
        AS 'SELECT MPolyFromText($1)'
4832
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4833
 
 
4834
 
CREATEFUNCTION GeomCollFromText(text, int4)
4835
 
        RETURNS geometry
4836
 
        AS '
4837
 
        SELECT CASE
4838
 
        WHEN geometrytype(GeomFromText($1, $2)) = ''GEOMETRYCOLLECTION''
4839
 
        THEN GeomFromText($1,$2)
4840
 
        ELSE NULL END
4841
 
        '
4842
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4843
 
 
4844
 
CREATEFUNCTION ST_GeomCollFromText(text, int4)
4845
 
        RETURNS geometry
4846
 
        AS '
4847
 
        SELECT CASE
4848
 
        WHEN geometrytype(GeomFromText($1, $2)) = ''GEOMETRYCOLLECTION''
4849
 
        THEN GeomFromText($1,$2)
4850
 
        ELSE NULL END
4851
 
        '
4852
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4853
 
 
4854
 
CREATEFUNCTION GeomCollFromText(text)
4855
 
        RETURNS geometry
4856
 
        AS '
4857
 
        SELECT CASE
4858
 
        WHEN geometrytype(GeomFromText($1)) = ''GEOMETRYCOLLECTION''
4859
 
        THEN GeomFromText($1)
4860
 
        ELSE NULL END
4861
 
        '
4862
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4863
 
 
4864
 
CREATEFUNCTION ST_GeomCollFromText(text)
4865
 
        RETURNS geometry
4866
 
        AS '
4867
 
        SELECT CASE
4868
 
        WHEN geometrytype(GeomFromText($1)) = ''GEOMETRYCOLLECTION''
4869
 
        THEN GeomFromText($1)
4870
 
        ELSE NULL END
4871
 
        '
4872
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4873
 
 
4874
 
CREATEFUNCTION GeomFromWKB(bytea)
4875
 
        RETURNS geometry
4876
 
        AS '@MODULE_FILENAME@','LWGEOM_from_WKB'
4877
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4878
 
 
4879
 
CREATEFUNCTION ST_GeomFromWKB(bytea)
4880
 
        RETURNS geometry
4881
 
        AS '@MODULE_FILENAME@','LWGEOM_from_WKB'
4882
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4883
 
 
4884
 
CREATEFUNCTION GeomFromWKB(bytea, int)
4885
 
        RETURNS geometry
4886
 
        AS 'SELECT setSRID(GeomFromWKB($1), $2)'
4887
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4888
 
 
4889
 
CREATEFUNCTION ST_GeomFromWKB(bytea, int)
4890
 
        RETURNS geometry
4891
 
        AS 'SELECT setSRID(GeomFromWKB($1), $2)'
4892
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4893
 
 
4894
 
CREATEFUNCTION PointFromWKB(bytea, int)
4895
 
        RETURNS geometry
4896
 
        AS '
4897
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''POINT''
4898
 
        THEN GeomFromWKB($1, $2)
4899
 
        ELSE NULL END
4900
 
        '
4901
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4902
 
 
4903
 
CREATEFUNCTION ST_PointFromWKB(bytea, int)
4904
 
        RETURNS geometry
4905
 
        AS '
4906
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''POINT''
4907
 
        THEN GeomFromWKB($1, $2)
4908
 
        ELSE NULL END
4909
 
        '
4910
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4911
 
 
4912
 
CREATEFUNCTION PointFromWKB(bytea)
4913
 
        RETURNS geometry
4914
 
        AS '
4915
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POINT''
4916
 
        THEN GeomFromWKB($1)
4917
 
        ELSE NULL END
4918
 
        '
4919
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4920
 
 
4921
 
CREATEFUNCTION ST_PointFromWKB(bytea)
4922
 
        RETURNS geometry
4923
 
        AS '
4924
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POINT''
4925
 
        THEN GeomFromWKB($1)
4926
 
        ELSE NULL END
4927
 
        '
4928
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4929
 
 
4930
 
CREATEFUNCTION LineFromWKB(bytea, int)
4931
 
        RETURNS geometry
4932
 
        AS '
4933
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''LINESTRING''
4934
 
        THEN GeomFromWKB($1, $2)
4935
 
        ELSE NULL END
4936
 
        '
4937
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4938
 
 
4939
 
CREATEFUNCTION ST_LineFromWKB(bytea, int)
4940
 
        RETURNS geometry
4941
 
        AS '
4942
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''LINESTRING''
4943
 
        THEN GeomFromWKB($1, $2)
4944
 
        ELSE NULL END
4945
 
        '
4946
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4947
 
 
4948
 
CREATEFUNCTION LineFromWKB(bytea)
4949
 
        RETURNS geometry
4950
 
        AS '
4951
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''LINESTRING''
4952
 
        THEN GeomFromWKB($1)
4953
 
        ELSE NULL END
4954
 
        '
4955
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4956
 
 
4957
 
CREATEFUNCTION ST_LineFromWKB(bytea)
4958
 
        RETURNS geometry
4959
 
        AS '
4960
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''LINESTRING''
4961
 
        THEN GeomFromWKB($1)
4962
 
        ELSE NULL END
4963
 
        '
4964
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4965
 
 
4966
 
CREATEFUNCTION LinestringFromWKB(bytea, int)
4967
 
        RETURNS geometry
4968
 
        AS '
4969
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''LINESTRING''
4970
 
        THEN GeomFromWKB($1, $2)
4971
 
        ELSE NULL END
4972
 
        '
4973
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4974
 
 
4975
 
CREATEFUNCTION ST_LinestringFromWKB(bytea, int)
4976
 
        RETURNS geometry
4977
 
        AS '
4978
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''LINESTRING''
4979
 
        THEN GeomFromWKB($1, $2)
4980
 
        ELSE NULL END
4981
 
        '
4982
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4983
 
 
4984
 
CREATEFUNCTION LinestringFromWKB(bytea)
4985
 
        RETURNS geometry
4986
 
        AS '
4987
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''LINESTRING''
4988
 
        THEN GeomFromWKB($1)
4989
 
        ELSE NULL END
4990
 
        '
4991
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
4992
 
 
4993
 
CREATEFUNCTION ST_LinestringFromWKB(bytea)
4994
 
        RETURNS geometry
4995
 
        AS '
4996
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''LINESTRING''
4997
 
        THEN GeomFromWKB($1)
4998
 
        ELSE NULL END
4999
 
        '
5000
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5001
 
 
5002
 
CREATEFUNCTION PolyFromWKB(bytea, int)
5003
 
        RETURNS geometry
5004
 
        AS '
5005
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''POLYGON''
5006
 
        THEN GeomFromWKB($1, $2)
5007
 
        ELSE NULL END
5008
 
        '
5009
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5010
 
 
5011
 
CREATEFUNCTION ST_PolyFromWKB(bytea, int)
5012
 
        RETURNS geometry
5013
 
        AS '
5014
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''POLYGON''
5015
 
        THEN GeomFromWKB($1, $2)
5016
 
        ELSE NULL END
5017
 
        '
5018
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5019
 
 
5020
 
CREATEFUNCTION PolyFromWKB(bytea)
5021
 
        RETURNS geometry
5022
 
        AS '
5023
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POLYGON''
5024
 
        THEN GeomFromWKB($1)
5025
 
        ELSE NULL END
5026
 
        '
5027
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5028
 
 
5029
 
CREATEFUNCTION ST_PolyFromWKB(bytea)
5030
 
        RETURNS geometry
5031
 
        AS '
5032
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POLYGON''
5033
 
        THEN GeomFromWKB($1)
5034
 
        ELSE NULL END
5035
 
        '
5036
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5037
 
 
5038
 
CREATEFUNCTION PolygonFromWKB(bytea, int)
5039
 
        RETURNS geometry
5040
 
        AS '
5041
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''POLYGON''
5042
 
        THEN GeomFromWKB($1, $2)
5043
 
        ELSE NULL END
5044
 
        '
5045
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5046
 
 
5047
 
CREATEFUNCTION ST_PolygonFromWKB(bytea, int)
5048
 
        RETURNS geometry
5049
 
        AS '
5050
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''POLYGON''
5051
 
        THEN GeomFromWKB($1, $2)
5052
 
        ELSE NULL END
5053
 
        '
5054
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5055
 
 
5056
 
CREATEFUNCTION PolygonFromWKB(bytea)
5057
 
        RETURNS geometry
5058
 
        AS '
5059
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POLYGON''
5060
 
        THEN GeomFromWKB($1)
5061
 
        ELSE NULL END
5062
 
        '
5063
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5064
 
 
5065
 
CREATEFUNCTION ST_PolygonFromWKB(bytea)
5066
 
        RETURNS geometry
5067
 
        AS '
5068
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POLYGON''
5069
 
        THEN GeomFromWKB($1)
5070
 
        ELSE NULL END
5071
 
        '
5072
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5073
 
 
5074
 
CREATEFUNCTION MPointFromWKB(bytea, int)
5075
 
        RETURNS geometry
5076
 
        AS '
5077
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''MULTIPOINT''
5078
 
        THEN GeomFromWKB($1, $2)
5079
 
        ELSE NULL END
5080
 
        '
5081
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5082
 
 
5083
 
CREATEFUNCTION ST_MPointFromWKB(bytea, int)
5084
 
        RETURNS geometry
5085
 
        AS '
5086
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOINT''
5087
 
        THEN GeomFromWKB($1, $2)
5088
 
        ELSE NULL END
5089
 
        '
5090
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5091
 
 
5092
 
CREATEFUNCTION MPointFromWKB(bytea)
5093
 
        RETURNS geometry
5094
 
        AS '
5095
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOINT''
5096
 
        THEN GeomFromWKB($1)
5097
 
        ELSE NULL END
5098
 
        '
5099
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5100
 
 
5101
 
CREATEFUNCTION ST_MPointFromWKB(bytea)
5102
 
        RETURNS geometry
5103
 
        AS '
5104
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOINT''
5105
 
        THEN GeomFromWKB($1)
5106
 
        ELSE NULL END
5107
 
        '
5108
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5109
 
 
5110
 
CREATEFUNCTION MultiPointFromWKB(bytea, int)
5111
 
        RETURNS geometry
5112
 
        AS '
5113
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''MULTIPOINT''
5114
 
        THEN GeomFromWKB($1, $2)
5115
 
        ELSE NULL END
5116
 
        '
5117
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5118
 
 
5119
 
CREATEFUNCTION ST_MultiPointFromWKB(bytea, int)
5120
 
        RETURNS geometry
5121
 
        AS '
5122
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''MULTIPOINT''
5123
 
        THEN GeomFromWKB($1, $2)
5124
 
        ELSE NULL END
5125
 
        '
5126
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5127
 
 
5128
 
CREATEFUNCTION MultiPointFromWKB(bytea)
5129
 
        RETURNS geometry
5130
 
        AS '
5131
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOINT''
5132
 
        THEN GeomFromWKB($1)
5133
 
        ELSE NULL END
5134
 
        '
5135
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5136
 
 
5137
 
CREATEFUNCTION ST_MultiPointFromWKB(bytea)
5138
 
        RETURNS geometry
5139
 
        AS '
5140
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOINT''
5141
 
        THEN GeomFromWKB($1)
5142
 
        ELSE NULL END
5143
 
        '
5144
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5145
 
 
5146
 
CREATEFUNCTION MultiLineFromWKB(bytea, int)
5147
 
        RETURNS geometry
5148
 
        AS '
5149
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
5150
 
        THEN GeomFromWKB($1, $2)
5151
 
        ELSE NULL END
5152
 
        '
5153
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5154
 
 
5155
 
CREATEFUNCTION MultiLineFromWKB(bytea, int)
5156
 
        RETURNS geometry
5157
 
        AS '
5158
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
5159
 
        THEN GeomFromWKB($1, $2)
5160
 
        ELSE NULL END
5161
 
        '
5162
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5163
 
 
5164
 
CREATEFUNCTION MultiLineFromWKB(bytea)
5165
 
        RETURNS geometry
5166
 
        AS '
5167
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTILINESTRING''
5168
 
        THEN GeomFromWKB($1)
5169
 
        ELSE NULL END
5170
 
        '
5171
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5172
 
 
5173
 
CREATEFUNCTION ST_MultiLineFromWKB(bytea)
5174
 
        RETURNS geometry
5175
 
        AS '
5176
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTILINESTRING''
5177
 
        THEN GeomFromWKB($1)
5178
 
        ELSE NULL END
5179
 
        '
5180
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5181
 
 
5182
 
CREATEFUNCTION MLineFromWKB(bytea, int)
5183
 
        RETURNS geometry
5184
 
        AS '
5185
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
5186
 
        THEN GeomFromWKB($1, $2)
5187
 
        ELSE NULL END
5188
 
        '
5189
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5190
 
 
5191
 
CREATEFUNCTION ST_MLineFromWKB(bytea, int)
5192
 
        RETURNS geometry
5193
 
        AS '
5194
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
5195
 
        THEN GeomFromWKB($1, $2)
5196
 
        ELSE NULL END
5197
 
        '
5198
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5199
 
 
5200
 
CREATEFUNCTION MLineFromWKB(bytea)
5201
 
        RETURNS geometry
5202
 
        AS '
5203
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTILINESTRING''
5204
 
        THEN GeomFromWKB($1)
5205
 
        ELSE NULL END
5206
 
        '
5207
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5208
 
 
5209
 
CREATEFUNCTION ST_MLineFromWKB(bytea)
5210
 
        RETURNS geometry
5211
 
        AS '
5212
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTILINESTRING''
5213
 
        THEN GeomFromWKB($1)
5214
 
        ELSE NULL END
5215
 
        '
5216
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5217
 
 
5218
 
CREATEFUNCTION MPolyFromWKB(bytea, int)
5219
 
        RETURNS geometry
5220
 
        AS '
5221
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
5222
 
        THEN GeomFromWKB($1, $2)
5223
 
        ELSE NULL END
5224
 
        '
5225
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5226
 
 
5227
 
CREATEFUNCTION ST_MPolyFromWKB(bytea, int)
5228
 
        RETURNS geometry
5229
 
        AS '
5230
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
5231
 
        THEN GeomFromWKB($1, $2)
5232
 
        ELSE NULL END
5233
 
        '
5234
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5235
 
 
5236
 
CREATEFUNCTION MPolyFromWKB(bytea)
5237
 
        RETURNS geometry
5238
 
        AS '
5239
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOLYGON''
5240
 
        THEN GeomFromWKB($1)
5241
 
        ELSE NULL END
5242
 
        '
5243
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5244
 
 
5245
 
CREATEFUNCTION ST_MPolyFromWKB(bytea)
5246
 
        RETURNS geometry
5247
 
        AS '
5248
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOLYGON''
5249
 
        THEN GeomFromWKB($1)
5250
 
        ELSE NULL END
5251
 
        '
5252
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5253
 
 
5254
 
CREATEFUNCTION MultiPolyFromWKB(bytea, int)
5255
 
        RETURNS geometry
5256
 
        AS '
5257
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
5258
 
        THEN GeomFromWKB($1, $2)
5259
 
        ELSE NULL END
5260
 
        '
5261
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5262
 
 
5263
 
CREATEFUNCTION ST_MultiPolyFromWKB(bytea, int)
5264
 
        RETURNS geometry
5265
 
        AS '
5266
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
5267
 
        THEN GeomFromWKB($1, $2)
5268
 
        ELSE NULL END
5269
 
        '
5270
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5271
 
 
5272
 
CREATEFUNCTION MultiPolyFromWKB(bytea)
5273
 
        RETURNS geometry
5274
 
        AS '
5275
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOLYGON''
5276
 
        THEN GeomFromWKB($1)
5277
 
        ELSE NULL END
5278
 
        '
5279
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5280
 
 
5281
 
CREATEFUNCTION ST_MultiPolyFromWKB(bytea)
5282
 
        RETURNS geometry
5283
 
        AS '
5284
 
        SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOLYGON''
5285
 
        THEN GeomFromWKB($1)
5286
 
        ELSE NULL END
5287
 
        '
5288
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5289
 
 
5290
 
CREATEFUNCTION GeomCollFromWKB(bytea, int)
5291
 
        RETURNS geometry
5292
 
        AS '
5293
 
        SELECT CASE
5294
 
        WHEN geometrytype(GeomFromWKB($1, $2)) = ''GEOMETRYCOLLECTION''
5295
 
        THEN GeomFromWKB($1, $2)
5296
 
        ELSE NULL END
5297
 
        '
5298
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5299
 
 
5300
 
CREATEFUNCTION ST_GeomCollFromWKB(bytea, int)
5301
 
        RETURNS geometry
5302
 
        AS '
5303
 
        SELECT CASE
5304
 
        WHEN geometrytype(GeomFromWKB($1, $2)) = ''GEOMETRYCOLLECTION''
5305
 
        THEN GeomFromWKB($1, $2)
5306
 
        ELSE NULL END
5307
 
        '
5308
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5309
 
 
5310
 
CREATEFUNCTION GeomCollFromWKB(bytea)
5311
 
        RETURNS geometry
5312
 
        AS '
5313
 
        SELECT CASE
5314
 
        WHEN geometrytype(GeomFromWKB($1)) = ''GEOMETRYCOLLECTION''
5315
 
        THEN GeomFromWKB($1)
5316
 
        ELSE NULL END
5317
 
        '
5318
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5319
 
 
5320
 
CREATEFUNCTION ST_GeomCollFromWKB(bytea)
5321
 
        RETURNS geometry
5322
 
        AS '
5323
 
        SELECT CASE
5324
 
        WHEN geometrytype(GeomFromWKB($1)) = ''GEOMETRYCOLLECTION''
5325
 
        THEN GeomFromWKB($1)
5326
 
        ELSE NULL END
5327
 
        '
5328
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5329
 
 
5330
 
--
5331
 
--
5332
 
--
5333
 
--
5334
 
--
5335
 
CREATE OR REPLACE FUNCTION BdPolyFromText(text, integer)
5336
 
RETURNS geometry
5337
 
AS '
5338
 
DECLARE
5339
 
        geomtext alias for $1;
5340
 
        srid alias for $2;
5341
 
        mline geometry;
5342
 
        geom geometry;
5343
 
BEGIN
5344
 
        mline := MultiLineStringFromText(geomtext, srid);
5345
 
 
5346
 
        IF mline IS NULL
5347
 
        THEN
5348
 
                RAISE EXCEPTION ''Input is not a MultiLinestring'';
5349
 
        END IF;
5350
 
 
5351
 
        geom := BuildArea(mline);
5352
 
 
5353
 
        IF GeometryType(geom) != ''POLYGON''
5354
 
        THEN
5355
 
                RAISE EXCEPTION ''Input returns more then a single polygon, try using BdMPolyFromText instead'';
5356
 
        END IF;
5357
 
 
5358
 
        RETURN geom;
5359
 
END;
5360
 
'
5361
 
LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; 
5362
 
 
5363
 
CREATE OR REPLACE FUNCTION ST_BdPolyFromText(text, integer)
5364
 
RETURNS geometry
5365
 
AS '
5366
 
DECLARE
5367
 
        geomtext alias for $1;
5368
 
        srid alias for $2;
5369
 
        mline geometry;
5370
 
        geom geometry;
5371
 
BEGIN
5372
 
        mline := MultiLineStringFromText(geomtext, srid);
5373
 
 
5374
 
        IF mline IS NULL
5375
 
        THEN
5376
 
                RAISE EXCEPTION ''Input is not a MultiLinestring'';
5377
 
        END IF;
5378
 
 
5379
 
        geom := BuildArea(mline);
5380
 
 
5381
 
        IF GeometryType(geom) != ''POLYGON''
5382
 
        THEN
5383
 
                RAISE EXCEPTION ''Input returns more then a single polygon, try using BdMPolyFromText instead'';
5384
 
        END IF;
5385
 
 
5386
 
        RETURN geom;
5387
 
END;
5388
 
'
5389
 
LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; 
5390
 
 
5391
 
--
5392
 
--
5393
 
--
5394
 
--
5395
 
--
5396
 
CREATEFUNCTION BdMPolyFromText(text, integer)
5397
 
RETURNS geometry
5398
 
AS '
5399
 
DECLARE
5400
 
        geomtext alias for $1;
5401
 
        srid alias for $2;
5402
 
        mline geometry;
5403
 
        geom geometry;
5404
 
BEGIN
5405
 
        mline := MultiLineStringFromText(geomtext, srid);
5406
 
 
5407
 
        IF mline IS NULL
5408
 
        THEN
5409
 
                RAISE EXCEPTION ''Input is not a MultiLinestring'';
5410
 
        END IF;
5411
 
 
5412
 
        geom := multi(BuildArea(mline));
5413
 
 
5414
 
        RETURN geom;
5415
 
END;
5416
 
'
5417
 
LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; 
5418
 
 
5419
 
CREATEFUNCTION ST_BdMPolyFromText(text, integer)
5420
 
RETURNS geometry
5421
 
AS '
5422
 
DECLARE
5423
 
        geomtext alias for $1;
5424
 
        srid alias for $2;
5425
 
        mline geometry;
5426
 
        geom geometry;
5427
 
BEGIN
5428
 
        mline := MultiLineStringFromText(geomtext, srid);
5429
 
 
5430
 
        IF mline IS NULL
5431
 
        THEN
5432
 
                RAISE EXCEPTION ''Input is not a MultiLinestring'';
5433
 
        END IF;
5434
 
 
5435
 
        geom := multi(BuildArea(mline));
5436
 
 
5437
 
        RETURN geom;
5438
 
END;
5439
 
'
5440
 
LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; 
5441
 
 
5442
 
#include "long_xact.sql.in"
5443
 
#include "sqlmm.sql.in"
5444
 
 
5445
 
---------------------------------------------------------------
5446
 
---------------------------------------------------------------
5447
 
 
5448
 
--
5449
 
--
5450
 
--
5451
 
CREATEFUNCTION ST_CurveToLine(geometry, integer)
5452
 
   RETURNS geometry
5453
 
   AS '@MODULE_FILENAME@', 'LWGEOM_curve_segmentize'
5454
 
   LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5455
 
--
5456
 
--
5457
 
--
5458
 
CREATEFUNCTION ST_CurveToLine(geometry)
5459
 
        RETURNS geometry AS 'SELECT ST_CurveToLine($1, 32)'
5460
 
        LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
5461
 
 
5462
 
CREATEFUNCTION ST_HasArc(geometry)
5463
 
        RETURNS boolean
5464
 
        AS '@MODULE_FILENAME@', 'LWGEOM_has_arc'
5465
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
5466
 
 
5467
 
CREATEFUNCTION ST_LineToCurve(geometry)
5468
 
        RETURNS geometry
5469
 
        AS '@MODULE_FILENAME@', 'LWGEOM_line_desegmentize'
5470
 
        LANGUAGE 'C' _IMMUTABLE_STRICT; 
5471
 
---------------------------------------------------------------
5472
 
---------------------------------------------------------------
5473
 
 
5474
 
COMMIT;
5475