1-- Legacy functions without chip functions --
2-- This is the full list including the legacy_minimal.sql (minimal)
3-- so no need to install both legacy and the minimal
4#include "legacy_minimal.sql.in"
5--- start functions that in theory should never have been used or internal like stuff deprecated
6
7-- these were superseded by PostGIS_AddBBOX , PostGIS_DropBBOX, PostGIS_HasBBOX in 1.5 --
8CREATE OR REPLACE FUNCTION addbbox(geometry)
9	RETURNS geometry
10	AS 'MODULE_PATHNAME','LWGEOM_addBBOX'
11	LANGUAGE 'c' IMMUTABLE STRICT;
12
13CREATE OR REPLACE FUNCTION dropbbox(geometry)
14	RETURNS geometry
15	AS 'MODULE_PATHNAME','LWGEOM_dropBBOX'
16	LANGUAGE 'c' IMMUTABLE STRICT;
17
18-- Deprecation in 1.2.3
19CREATE OR REPLACE FUNCTION hasbbox(geometry)
20	RETURNS bool
21	AS 'MODULE_PATHNAME', 'LWGEOM_hasBBOX'
22	LANGUAGE 'c' IMMUTABLE STRICT;
23
24-- Availability: 1.2.2 -- never deprecated but don't think anyone uses it
25CREATE OR REPLACE FUNCTION getsrid(geometry)
26	RETURNS int4
27	AS 'MODULE_PATHNAME','LWGEOM_get_srid'
28	LANGUAGE 'c' IMMUTABLE STRICT;
29
30-- Deprecation in 1.2.3
31CREATE OR REPLACE FUNCTION GeometryFromText(text, int4)
32	RETURNS geometry
33	AS 'MODULE_PATHNAME','LWGEOM_from_text'
34	LANGUAGE 'c' IMMUTABLE STRICT;
35
36-- Deprecation in 1.2.3
37CREATE OR REPLACE FUNCTION GeometryFromText(text)
38	RETURNS geometry
39	AS 'MODULE_PATHNAME','LWGEOM_from_text'
40	LANGUAGE 'c' IMMUTABLE STRICT;
41
42-- Deprecation in 1.2.3
43CREATE OR REPLACE FUNCTION GeomFromWKB(bytea)
44	RETURNS geometry
45	AS 'MODULE_PATHNAME','LWGEOM_from_WKB'
46	LANGUAGE 'c' IMMUTABLE STRICT;
47
48-- Deprecation in 1.2.3
49CREATE OR REPLACE FUNCTION GeomFromWKB(bytea, int)
50	RETURNS geometry
51	AS 'SELECT ST_SetSRID(ST_GeomFromWKB($1), $2)'
52	LANGUAGE 'sql' IMMUTABLE STRICT;
53
54-- Deprecation in 1.2.3
55CREATE OR REPLACE FUNCTION noop(geometry)
56	RETURNS geometry
57	AS 'MODULE_PATHNAME', 'LWGEOM_noop'
58	LANGUAGE 'c' VOLATILE STRICT;
59
60-- ESRI ArcSDE compatibility functions --
61-- We are remiving these because we don't
62-- think ESRI relies on them
63-- so their existence is pointless
64-- Availability: 1.5.0
65-- PostGIS equivalent function: none
66CREATE OR REPLACE FUNCTION SE_EnvelopesIntersect(geometry,geometry)
67	RETURNS boolean
68	AS $$
69	SELECT $1 && $2
70	$$
71	LANGUAGE 'sql' IMMUTABLE STRICT;
72
73CREATE OR REPLACE FUNCTION SE_Is3D(geometry)
74	RETURNS bool
75	AS 'MODULE_PATHNAME', 'LWGEOM_hasz'
76	LANGUAGE 'c' IMMUTABLE STRICT;
77
78-- Availability: 1.5.0
79CREATE OR REPLACE FUNCTION SE_IsMeasured(geometry)
80	RETURNS bool
81	AS 'MODULE_PATHNAME', 'LWGEOM_hasm'
82	LANGUAGE 'c' IMMUTABLE STRICT;
83
84-- PostGIS equivalent function: Z(geometry)
85CREATE OR REPLACE FUNCTION SE_Z(geometry)
86	RETURNS float8
87	AS 'MODULE_PATHNAME','LWGEOM_z_point'
88	LANGUAGE 'c' IMMUTABLE STRICT;
89
90-- PostGIS equivalent function: M(geometry)
91CREATE OR REPLACE FUNCTION SE_M(geometry)
92	RETURNS float8
93	AS 'MODULE_PATHNAME','LWGEOM_m_point'
94	LANGUAGE 'c' IMMUTABLE STRICT;
95
96-- PostGIS equivalent function: locate_between_measures(geometry, float8, float8)
97CREATE OR REPLACE FUNCTION SE_LocateBetween(geometry, float8, float8)
98	RETURNS geometry
99	AS 'MODULE_PATHNAME', 'LWGEOM_locate_between_m'
100	LANGUAGE 'c' IMMUTABLE STRICT;
101
102-- PostGIS equivalent function: locate_along_measure(geometry, float8)
103CREATE OR REPLACE FUNCTION SE_LocateAlong(geometry, float8)
104	RETURNS geometry
105	AS $$ SELECT SE_LocateBetween($1, $2, $2) $$
106	LANGUAGE 'sql' IMMUTABLE STRICT;
107
108--- Deprecation in 1.5.0
109CREATE OR REPLACE FUNCTION st_box2d(geometry)
110	RETURNS box2d
111	AS 'MODULE_PATHNAME','LWGEOM_to_BOX2D'
112	LANGUAGE 'c' IMMUTABLE STRICT;
113
114--- Deprecation in 1.5.0
115CREATE OR REPLACE FUNCTION st_box3d(geometry)
116	RETURNS box3d
117	AS 'MODULE_PATHNAME','LWGEOM_to_BOX3D'
118	LANGUAGE 'c' IMMUTABLE STRICT;
119
120--- Deprecation in 1.5.0
121CREATE OR REPLACE FUNCTION st_box(geometry)
122	RETURNS box
123	AS 'MODULE_PATHNAME','LWGEOM_to_BOX'
124	LANGUAGE 'c' IMMUTABLE STRICT;
125
126--- Deprecation in 1.5.0
127CREATE OR REPLACE FUNCTION st_box2d(box3d)
128	RETURNS box2d
129	AS 'MODULE_PATHNAME','BOX3D_to_BOX2D'
130	LANGUAGE 'c' IMMUTABLE STRICT;
131
132--- Deprecation in 1.5.0
133CREATE OR REPLACE FUNCTION st_box3d(box2d)
134	RETURNS box3d
135	AS 'MODULE_PATHNAME','BOX2D_to_BOX3D'
136	LANGUAGE 'c' IMMUTABLE STRICT;
137
138--- Deprecation in 1.5.0
139CREATE OR REPLACE FUNCTION st_box(box3d)
140	RETURNS box
141	AS 'MODULE_PATHNAME','BOX3D_to_BOX'
142	LANGUAGE 'c' IMMUTABLE STRICT;
143
144--- Deprecation in 1.5.0
145CREATE OR REPLACE FUNCTION st_text(geometry)
146	RETURNS text
147	AS 'MODULE_PATHNAME','LWGEOM_to_text'
148	LANGUAGE 'c' IMMUTABLE STRICT;
149
150--- Deprecation in 1.5.0
151CREATE OR REPLACE FUNCTION st_geometry(box2d)
152	RETURNS geometry
153	AS 'MODULE_PATHNAME','BOX2D_to_LWGEOM'
154	LANGUAGE 'c' IMMUTABLE STRICT;
155
156--- Deprecation in 1.5.0
157CREATE OR REPLACE FUNCTION st_geometry(box3d)
158	RETURNS geometry
159	AS 'MODULE_PATHNAME','BOX3D_to_LWGEOM'
160	LANGUAGE 'c' IMMUTABLE STRICT;
161
162--- Deprecation in 1.5.0
163CREATE OR REPLACE FUNCTION st_geometry(text)
164	RETURNS geometry
165	AS 'MODULE_PATHNAME','parse_WKT_lwgeom'
166	LANGUAGE 'c' IMMUTABLE STRICT;
167
168--- Deprecation in 1.5.0
169CREATE OR REPLACE FUNCTION st_geometry(bytea)
170	RETURNS geometry
171	AS 'MODULE_PATHNAME','LWGEOM_from_bytea'
172	LANGUAGE 'c' IMMUTABLE STRICT;
173
174--- Deprecation in 1.5.0
175CREATE OR REPLACE FUNCTION st_bytea(geometry)
176	RETURNS bytea
177	AS 'MODULE_PATHNAME','LWGEOM_to_bytea'
178	LANGUAGE 'c' IMMUTABLE STRICT;
179
180-- Deprecation in 1.5.0
181CREATE OR REPLACE FUNCTION st_box3d_in(cstring)
182	RETURNS box3d
183	AS 'MODULE_PATHNAME', 'BOX3D_in'
184	LANGUAGE 'c' IMMUTABLE STRICT;
185
186-- Deprecation in 1.5.0
187CREATE OR REPLACE FUNCTION st_box3d_out(box3d)
188	RETURNS cstring
189	AS 'MODULE_PATHNAME', 'BOX3D_out'
190	LANGUAGE 'c' IMMUTABLE STRICT;
191
192-- START MANAGEMENT FUNCTIONS
193-- These are legacy management functions with no place in our 2.0 world
194-----------------------------------------------------------------------
195-- RENAME_GEOMETRY_TABLE_CONSTRAINTS()
196-----------------------------------------------------------------------
197-- This function has been obsoleted for the difficulty in
198-- finding attribute on which the constraint is applied.
199-- AddGeometryColumn will name the constraints in a meaningful
200-- way, but nobody can rely on it since old postgis versions did
201-- not do that.
202-----------------------------------------------------------------------
203CREATE OR REPLACE FUNCTION rename_geometry_table_constraints() RETURNS text
204AS
205$$
206SELECT 'rename_geometry_table_constraint() is obsoleted'::text
207$$
208LANGUAGE 'sql' IMMUTABLE;
209
210-----------------------------------------------------------------------
211-- FIX_GEOMETRY_COLUMNS()
212-----------------------------------------------------------------------
213-- This function will:
214--
215--	o try to fix the schema of records with an integer one
216--		(for PG>=73)
217--
218--	o link records to system tables through attrelid and varattnum
219--		(for PG<75)
220--
221--	o delete all records for which no linking was possible
222--		(for PG<75)
223--
224--
225-----------------------------------------------------------------------
226CREATE OR REPLACE FUNCTION fix_geometry_columns() RETURNS text
227AS
228$$
229DECLARE
230	mislinked record;
231	result text;
232	linked integer;
233	deleted integer;
234	foundschema integer;
235BEGIN
236
237	-- Since 7.3 schema support has been added.
238	-- Previous postgis versions used to put the database name in
239	-- the schema column. This needs to be fixed, so we try to
240	-- set the correct schema for each geometry_colums record
241	-- looking at table, column, type and srid.
242	/** UPDATE geometry_columns SET f_table_schema = n.nspname
243		FROM pg_namespace n, pg_class c, pg_attribute a,
244			pg_constraint sridcheck, pg_constraint typecheck
245			WHERE ( f_table_schema is NULL
246		OR f_table_schema = ''
247			OR f_table_schema NOT IN (
248					SELECT nspname::varchar
249					FROM pg_namespace nn, pg_class cc, pg_attribute aa
250					WHERE cc.relnamespace = nn.oid
251					AND cc.relname = f_table_name::name
252					AND aa.attrelid = cc.oid
253					AND aa.attname = f_geometry_column::name))
254			AND f_table_name::name = c.relname
255			AND c.oid = a.attrelid
256			AND c.relnamespace = n.oid
257			AND f_geometry_column::name = a.attname
258
259			AND sridcheck.conrelid = c.oid
260		AND sridcheck.consrc LIKE '(%srid(% = %)'
261			AND sridcheck.consrc ~ textcat(' = ', srid::text)
262
263			AND typecheck.conrelid = c.oid
264		AND typecheck.consrc LIKE
265		'((geometrytype(%) = ''%''::text) OR (% IS NULL))'
266			AND typecheck.consrc ~ textcat(' = ''', type::text)
267
268			AND NOT EXISTS (
269					SELECT oid FROM geometry_columns gc
270					WHERE c.relname::varchar = gc.f_table_name
271					AND n.nspname::varchar = gc.f_table_schema
272					AND a.attname::varchar = gc.f_geometry_column
273			);
274
275	GET DIAGNOSTICS foundschema = ROW_COUNT;
276
277	-- no linkage to system table needed
278	return 'fixed:'||foundschema::text; **/
279	return 'This function is obsolete now that geometry_columns is a view';
280
281END;
282$$
283LANGUAGE 'plpgsql' VOLATILE;
284
285-----------------------------------------------------------------------
286-- PROBE_GEOMETRY_COLUMNS()
287-----------------------------------------------------------------------
288-- Fill the geometry_columns table with values probed from the system
289-- catalogues. This is done by simply looking up constraints previously
290-- added to a geometry column. If geometry constraints are missing, no
291-- attempt is made to add the necessary constraints to the geometry
292-- column, nor is it recorded in the geometry_columns table.
293-- 3d flag cannot be probed, it defaults to 2
294--
295-- Note that bogus records already in geometry_columns are not
296-- overridden (a check for schema.table.column is performed), so
297-- to have a fresh probe backup your geometry_columns, delete from
298-- it and probe.
299-----------------------------------------------------------------------
300CREATE OR REPLACE FUNCTION probe_geometry_columns() RETURNS text AS
301$$
302DECLARE
303	inserted integer;
304	oldcount integer;
305	probed integer;
306	stale integer;
307BEGIN
308
309/*	SELECT count(*) INTO oldcount FROM geometry_columns;
310
311	SELECT count(*) INTO probed
312		FROM pg_class c, pg_attribute a, pg_type t,
313			pg_namespace n,
314			pg_constraint sridcheck, pg_constraint typecheck
315
316		WHERE t.typname = 'geometry'
317		AND a.atttypid = t.oid
318		AND a.attrelid = c.oid
319		AND c.relnamespace = n.oid
320		AND sridcheck.connamespace = n.oid
321		AND typecheck.connamespace = n.oid
322		AND sridcheck.conrelid = c.oid
323		AND sridcheck.consrc LIKE '(%srid('||a.attname||') = %)'
324		AND typecheck.conrelid = c.oid
325		AND typecheck.consrc LIKE
326		'((geometrytype('||a.attname||') = ''%''::text) OR (% IS NULL))'
327		;
328
329	INSERT INTO geometry_columns SELECT
330		''::varchar as f_table_catalogue,
331		n.nspname::varchar as f_table_schema,
332		c.relname::varchar as f_table_name,
333		a.attname::varchar as f_geometry_column,
334		2 as coord_dimension,
335		trim(both  ' =)' from
336			replace(replace(split_part(
337				sridcheck.consrc, ' = ', 2), ')', ''), '(', ''))::integer AS srid,
338		trim(both ' =)''' from substr(typecheck.consrc,
339			strpos(typecheck.consrc, '='),
340			strpos(typecheck.consrc, '::')-
341			strpos(typecheck.consrc, '=')
342			))::varchar as type
343		FROM pg_class c, pg_attribute a, pg_type t,
344			pg_namespace n,
345			pg_constraint sridcheck, pg_constraint typecheck
346		WHERE t.typname = 'geometry'
347		AND a.atttypid = t.oid
348		AND a.attrelid = c.oid
349		AND c.relnamespace = n.oid
350		AND sridcheck.connamespace = n.oid
351		AND typecheck.connamespace = n.oid
352		AND sridcheck.conrelid = c.oid
353		AND sridcheck.consrc LIKE '(%srid('||a.attname||') = %)'
354		AND typecheck.conrelid = c.oid
355		AND typecheck.consrc LIKE
356		'((geometrytype('||a.attname||') = ''%''::text) OR (% IS NULL))'
357
358			AND NOT EXISTS (
359					SELECT oid FROM geometry_columns gc
360					WHERE c.relname::varchar = gc.f_table_name
361					AND n.nspname::varchar = gc.f_table_schema
362					AND a.attname::varchar = gc.f_geometry_column
363			);
364
365	GET DIAGNOSTICS inserted = ROW_COUNT;
366
367	IF oldcount > probed THEN
368		stale = oldcount-probed;
369	ELSE
370		stale = 0;
371	END IF;
372
373	RETURN 'probed:'||probed::text||
374		' inserted:'||inserted::text||
375		' conflicts:'||(probed-inserted)::text||
376		' stale:'||stale::text;*/
377	RETURN 'This function is obsolete now that geometry_columns is a view';
378END
379
380$$
381LANGUAGE 'plpgsql' VOLATILE;
382
383-- END MANAGEMENT FUNCTIONS --
384
385-- Deprecation in 1.5.0
386-- these remarked out functions cause problems and no one uses them directly
387-- They should not be installed
388/** CREATE OR REPLACE FUNCTION st_geometry_analyze(internal)
389	RETURNS bool
390	AS 'MODULE_PATHNAME', 'geometry_analyze'
391	LANGUAGE 'c' VOLATILE STRICT;
392
393-- Deprecation in 1.5.0
394CREATE OR REPLACE FUNCTION st_geometry_in(cstring)
395	RETURNS geometry
396	AS 'MODULE_PATHNAME','LWGEOM_in'
397	LANGUAGE 'c' IMMUTABLE STRICT;
398
399-- Deprecation in 1.5.0
400CREATE OR REPLACE FUNCTION st_geometry_out(geometry)
401	RETURNS cstring
402	AS 'MODULE_PATHNAME','LWGEOM_out'
403	LANGUAGE 'c' IMMUTABLE STRICT;
404
405-- Deprecation in 1.5.0
406CREATE OR REPLACE FUNCTION st_geometry_recv(internal)
407	RETURNS geometry
408	AS 'MODULE_PATHNAME','LWGEOM_recv'
409	LANGUAGE 'c' IMMUTABLE STRICT;
410
411-- Deprecation in 1.5.0
412CREATE OR REPLACE FUNCTION st_geometry_send(geometry)
413	RETURNS bytea
414	AS 'MODULE_PATHNAME','LWGEOM_send'
415	LANGUAGE 'c' IMMUTABLE STRICT;
416
417-- Deprecation in 1.5.0
418CREATE OR REPLACE FUNCTION st_spheroid_in(cstring)
419	RETURNS spheroid
420	AS 'MODULE_PATHNAME','ellipsoid_in'
421	LANGUAGE 'c' IMMUTABLE STRICT;
422
423-- Deprecation in 1.5.0
424CREATE OR REPLACE FUNCTION st_spheroid_out(spheroid)
425	RETURNS cstring
426	AS 'MODULE_PATHNAME','ellipsoid_out'
427	LANGUAGE 'c' IMMUTABLE STRICT;
428
429**/
430-- Deprecation in 1.5.0
431CREATE OR REPLACE FUNCTION st_geometry_lt(geometry, geometry)
432	RETURNS bool
433	AS 'MODULE_PATHNAME', 'lwgeom_lt'
434	LANGUAGE 'c' IMMUTABLE STRICT;
435
436-- Deprecation in 1.5.0
437CREATE OR REPLACE FUNCTION st_geometry_le(geometry, geometry)
438	RETURNS bool
439	AS 'MODULE_PATHNAME', 'lwgeom_le'
440	LANGUAGE 'c' IMMUTABLE STRICT;
441
442-- Deprecation in 1.5.0
443CREATE OR REPLACE FUNCTION st_geometry_gt(geometry, geometry)
444	RETURNS bool
445	AS 'MODULE_PATHNAME', 'lwgeom_gt'
446	LANGUAGE 'c' IMMUTABLE STRICT;
447
448-- Deprecation in 1.5.0
449CREATE OR REPLACE FUNCTION st_geometry_ge(geometry, geometry)
450	RETURNS bool
451	AS 'MODULE_PATHNAME', 'lwgeom_ge'
452	LANGUAGE 'c' IMMUTABLE STRICT;
453
454-- Deprecation in 1.5.0
455CREATE OR REPLACE FUNCTION st_geometry_eq(geometry, geometry)
456	RETURNS bool
457	AS 'MODULE_PATHNAME', 'lwgeom_eq'
458	LANGUAGE 'c' IMMUTABLE STRICT;
459
460-- Deprecation in 1.5.0
461CREATE OR REPLACE FUNCTION st_geometry_cmp(geometry, geometry)
462	RETURNS integer
463	AS 'MODULE_PATHNAME', 'lwgeom_cmp'
464	LANGUAGE 'c' IMMUTABLE STRICT;
465
466--- end functions that in theory should never have been used
467
468-- begin old ogc (and non-ST) names that have been replaced with new SQL-MM and SQL ST_ Like names --
469-- AFFINE Functions --
470-- Availability: 1.1.2
471-- Deprecation in 1.2.3
472CREATE OR REPLACE FUNCTION Affine(geometry,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8)
473	RETURNS geometry
474	AS 'MODULE_PATHNAME', 'LWGEOM_affine'
475	LANGUAGE 'c' IMMUTABLE STRICT;
476
477-- Availability: 1.1.2
478-- Deprecation in 1.2.3
479CREATE OR REPLACE FUNCTION Affine(geometry,float8,float8,float8,float8,float8,float8)
480	RETURNS geometry
481	AS 'SELECT st_affine($1,  $2, $3, 0,  $4, $5, 0,  0, 0, 1,  $6, $7, 0)'
482	LANGUAGE 'sql' IMMUTABLE STRICT;
483
484-- Availability: 1.1.2
485-- Deprecation in 1.2.3
486CREATE OR REPLACE FUNCTION RotateZ(geometry,float8)
487	RETURNS geometry
488	AS 'SELECT st_affine($1,  cos($2), -sin($2), 0,  sin($2), cos($2), 0,  0, 0, 1,  0, 0, 0)'
489	LANGUAGE 'sql' IMMUTABLE STRICT;
490
491-- Availability: 1.1.2
492-- Deprecation in 1.2.3
493CREATE OR REPLACE FUNCTION Rotate(geometry,float8)
494	RETURNS geometry
495	AS 'SELECT st_rotateZ($1, $2)'
496	LANGUAGE 'sql' IMMUTABLE STRICT;
497
498-- Availability: 1.1.2
499-- Deprecation in 1.2.3
500CREATE OR REPLACE FUNCTION RotateX(geometry,float8)
501	RETURNS geometry
502	AS 'SELECT st_affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)'
503	LANGUAGE 'sql' IMMUTABLE STRICT;
504
505-- Availability: 1.1.2
506-- Deprecation in 1.2.3
507CREATE OR REPLACE FUNCTION RotateY(geometry,float8)
508	RETURNS geometry
509	AS 'SELECT st_affine($1,  cos($2), 0, sin($2),  0, 1, 0,  -sin($2), 0, cos($2), 0,  0, 0)'
510	LANGUAGE 'sql' IMMUTABLE STRICT;
511
512-- Availability: 1.1.0
513-- Deprecation in 1.2.3
514CREATE OR REPLACE FUNCTION Scale(geometry,float8,float8,float8)
515	RETURNS geometry
516	AS 'SELECT st_affine($1,  $2, 0, 0,  0, $3, 0,  0, 0, $4,  0, 0, 0)'
517	LANGUAGE 'sql' IMMUTABLE STRICT;
518
519-- Availability: 1.1.0
520-- Deprecation in 1.2.3
521CREATE OR REPLACE FUNCTION Scale(geometry,float8,float8)
522	RETURNS geometry
523	AS 'SELECT st_scale($1, $2, $3, 1)'
524	LANGUAGE 'sql' IMMUTABLE STRICT;
525
526-- Deprecation in 1.2.3
527CREATE OR REPLACE FUNCTION Translate(geometry,float8,float8,float8)
528	RETURNS geometry
529	AS 'SELECT st_affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)'
530	LANGUAGE 'sql' IMMUTABLE STRICT;
531
532-- Deprecation in 1.2.3
533CREATE OR REPLACE FUNCTION Translate(geometry,float8,float8)
534	RETURNS geometry
535	AS 'SELECT st_translate($1, $2, $3, 0)'
536	LANGUAGE 'sql' IMMUTABLE STRICT;
537
538-- Availability: 1.1.0
539-- Deprecation in 1.2.3
540CREATE OR REPLACE FUNCTION TransScale(geometry,float8,float8,float8,float8)
541	RETURNS geometry
542	AS 'SELECT st_affine($1,  $4, 0, 0,  0, $5, 0,
543		0, 0, 1,  $2 * $4, $3 * $5, 0)'
544	LANGUAGE 'sql' IMMUTABLE STRICT;
545
546-- END Affine functions
547
548-- Deprecation in 1.2.3
549CREATE OR REPLACE FUNCTION AddPoint(geometry, geometry)
550	RETURNS geometry
551	AS 'MODULE_PATHNAME', 'LWGEOM_addpoint'
552	LANGUAGE 'c' IMMUTABLE STRICT;
553
554-- Deprecation in 1.2.3
555CREATE OR REPLACE FUNCTION AddPoint(geometry, geometry, integer)
556	RETURNS geometry
557	AS 'MODULE_PATHNAME', 'LWGEOM_addpoint'
558	LANGUAGE 'c' IMMUTABLE STRICT;
559
560-- Deprecation in 1.2.3
561CREATE OR REPLACE FUNCTION Area(geometry)
562	RETURNS FLOAT8
563	AS 'MODULE_PATHNAME','LWGEOM_area_polygon'
564	LANGUAGE 'c' IMMUTABLE STRICT;
565
566-- this is an alias for 'area(geometry)'
567-- there is nothing such an 'area3d'...
568-- Deprecation in 1.2.3
569CREATE OR REPLACE FUNCTION Area2D(geometry)
570	RETURNS FLOAT8
571	AS 'MODULE_PATHNAME', 'LWGEOM_area_polygon'
572	LANGUAGE 'c' IMMUTABLE STRICT;
573
574-- Deprecation in 1.2.3
575CREATE OR REPLACE FUNCTION AsEWKB(geometry)
576	RETURNS BYTEA
577	AS 'MODULE_PATHNAME','WKBFromLWGEOM'
578	LANGUAGE 'c' IMMUTABLE STRICT;
579
580-- Deprecation in 1.2.3
581CREATE OR REPLACE FUNCTION AsEWKB(geometry,text)
582	RETURNS bytea
583	AS 'MODULE_PATHNAME','WKBFromLWGEOM'
584	LANGUAGE 'c' IMMUTABLE STRICT;
585
586-- Deprecation in 1.2.3
587CREATE OR REPLACE FUNCTION AsEWKT(geometry)
588	RETURNS TEXT
589	AS 'MODULE_PATHNAME','LWGEOM_asEWKT'
590	LANGUAGE 'c' IMMUTABLE STRICT;
591
592-- AsGML(geom) / precision=15 version=2
593-- Deprecation in 1.2.3
594CREATE OR REPLACE FUNCTION AsGML(geometry)
595	RETURNS TEXT
596	AS 'SELECT _ST_AsGML(2, $1, 15, 0, null, null)'
597	LANGUAGE 'sql' IMMUTABLE STRICT;
598
599-- Deprecation in 1.2.3
600CREATE OR REPLACE FUNCTION AsGML(geometry, int4)
601	RETURNS TEXT
602	AS 'SELECT _ST_AsGML(2, $1, $2, 0, null, null)'
603	LANGUAGE 'sql' IMMUTABLE STRICT;
604
605-- AsKML(geom, precision) / version=2
606-- Deprecation in 1.2.3
607CREATE OR REPLACE FUNCTION AsKML(geometry, int4)
608	RETURNS TEXT
609	AS 'SELECT _ST_AsKML(2, ST_transform($1,4326), $2, null)'
610	LANGUAGE 'sql' IMMUTABLE STRICT;
611
612-- AsKML(geom) / precision=15 version=2
613-- Deprecation in 1.2.3
614CREATE OR REPLACE FUNCTION AsKML(geometry)
615	RETURNS TEXT
616	AS 'SELECT _ST_AsKML(2, ST_Transform($1,4326), 15, null)'
617	LANGUAGE 'sql' IMMUTABLE STRICT;
618
619-- AsKML(version, geom, precision)
620-- Deprecation in 1.2.3
621CREATE OR REPLACE FUNCTION AsKML(int4, geometry, int4)
622	RETURNS TEXT
623	AS 'SELECT _ST_AsKML($1, ST_Transform($2,4326), $3, null)'
624	LANGUAGE 'sql' IMMUTABLE STRICT;
625
626-- Deprecation in 1.2.3
627CREATE OR REPLACE FUNCTION AsHEXEWKB(geometry)
628	RETURNS TEXT
629	AS 'MODULE_PATHNAME','LWGEOM_asHEXEWKB'
630	LANGUAGE 'c' IMMUTABLE STRICT;
631
632-- Deprecation in 1.2.3
633CREATE OR REPLACE FUNCTION AsHEXEWKB(geometry, text)
634	RETURNS TEXT
635	AS 'MODULE_PATHNAME','LWGEOM_asHEXEWKB'
636	LANGUAGE 'c' IMMUTABLE STRICT;
637
638-- Deprecation in 1.2.3
639CREATE OR REPLACE FUNCTION AsSVG(geometry)
640	RETURNS TEXT
641	AS 'MODULE_PATHNAME','LWGEOM_asSVG'
642	LANGUAGE 'c' IMMUTABLE STRICT;
643
644-- Deprecation in 1.2.3
645CREATE OR REPLACE FUNCTION AsSVG(geometry,int4)
646	RETURNS TEXT
647	AS 'MODULE_PATHNAME','LWGEOM_asSVG'
648	LANGUAGE 'c' IMMUTABLE STRICT;
649
650-- Deprecation in 1.2.3
651CREATE OR REPLACE FUNCTION AsSVG(geometry,int4,int4)
652	RETURNS TEXT
653	AS 'MODULE_PATHNAME','LWGEOM_asSVG'
654	LANGUAGE 'c' IMMUTABLE STRICT;
655
656-- Deprecation in 1.2.3
657CREATE OR REPLACE FUNCTION azimuth(geometry,geometry)
658	RETURNS float8
659	AS 'MODULE_PATHNAME', 'LWGEOM_azimuth'
660	LANGUAGE 'c' IMMUTABLE STRICT;
661
662-- Deprecation in 1.2.3
663CREATE OR REPLACE FUNCTION BdPolyFromText(text, integer)
664RETURNS geometry
665AS $$
666DECLARE
667	geomtext alias for $1;
668	srid alias for $2;
669	mline geometry;
670	geom geometry;
671BEGIN
672	mline := ST_MultiLineStringFromText(geomtext, srid);
673
674	IF mline IS NULL
675	THEN
676		RAISE EXCEPTION 'Input is not a MultiLinestring';
677	END IF;
678
679	geom := ST_BuildArea(mline);
680
681	IF GeometryType(geom) != 'POLYGON'
682	THEN
683		RAISE EXCEPTION 'Input returns more then a single polygon, try using BdMPolyFromText instead';
684	END IF;
685
686	RETURN geom;
687END;
688$$
689LANGUAGE 'plpgsql' IMMUTABLE STRICT;
690
691-- Deprecation in 1.2.3
692CREATE OR REPLACE FUNCTION BdMPolyFromText(text, integer)
693RETURNS geometry
694AS $$
695DECLARE
696	geomtext alias for $1;
697	srid alias for $2;
698	mline geometry;
699	geom geometry;
700BEGIN
701	mline := ST_MultiLineStringFromText(geomtext, srid);
702
703	IF mline IS NULL
704	THEN
705		RAISE EXCEPTION 'Input is not a MultiLinestring';
706	END IF;
707
708	geom := ST_Multi(ST_BuildArea(mline));
709
710	RETURN geom;
711END;
712$$
713LANGUAGE 'plpgsql' IMMUTABLE STRICT;
714
715-- Deprecation in 1.2.3
716CREATE OR REPLACE FUNCTION boundary(geometry)
717	RETURNS geometry
718	AS 'MODULE_PATHNAME','boundary'
719	LANGUAGE 'c' IMMUTABLE STRICT;
720
721-- Deprecation in 1.2.3
722CREATE OR REPLACE FUNCTION buffer(geometry,float8,integer)
723	RETURNS geometry
724	AS 'SELECT ST_Buffer($1, $2, $3)'
725	LANGUAGE 'sql' IMMUTABLE STRICT;
726
727-- Deprecation in 1.2.3
728CREATE OR REPLACE FUNCTION buffer(geometry,float8)
729	RETURNS geometry
730	AS 'MODULE_PATHNAME','buffer'
731	LANGUAGE 'c' IMMUTABLE STRICT
732	COST 100;
733
734-- Deprecation in 1.2.3
735CREATE OR REPLACE FUNCTION BuildArea(geometry)
736	RETURNS geometry
737	AS 'MODULE_PATHNAME', 'ST_BuildArea'
738	LANGUAGE 'c' IMMUTABLE STRICT
739	COST 100;
740
741-- This is also available w/out GEOS
742CREATE OR REPLACE FUNCTION Centroid(geometry)
743	RETURNS geometry
744	AS 'MODULE_PATHNAME'
745	LANGUAGE 'c' IMMUTABLE STRICT;
746
747-- Deprecation in 1.2.3
748CREATE OR REPLACE FUNCTION Contains(geometry,geometry)
749	RETURNS boolean
750	AS 'MODULE_PATHNAME'
751	LANGUAGE 'c' IMMUTABLE STRICT;
752
753-- Deprecation in 1.2.3
754CREATE OR REPLACE FUNCTION convexhull(geometry)
755	RETURNS geometry
756	AS 'MODULE_PATHNAME','convexhull'
757	LANGUAGE 'c' IMMUTABLE STRICT
758	COST 100;
759
760-- Deprecation in 1.2.3
761CREATE OR REPLACE FUNCTION crosses(geometry,geometry)
762	RETURNS boolean
763	AS 'MODULE_PATHNAME'
764	LANGUAGE 'c' IMMUTABLE STRICT;
765
766-- Deprecation in 1.2.3
767CREATE OR REPLACE FUNCTION distance(geometry,geometry)
768	RETURNS float8
769	AS 'MODULE_PATHNAME', 'LWGEOM_mindistance2d'
770	LANGUAGE 'c' IMMUTABLE STRICT
771	COST 100;
772
773-- Deprecation in 1.2.3
774CREATE OR REPLACE FUNCTION difference(geometry,geometry)
775	RETURNS geometry
776	AS 'MODULE_PATHNAME','difference'
777	LANGUAGE 'c' IMMUTABLE STRICT;
778
779-- Deprecation in 1.2.3
780CREATE OR REPLACE FUNCTION Dimension(geometry)
781	RETURNS int4
782	AS 'MODULE_PATHNAME', 'LWGEOM_dimension'
783	LANGUAGE 'c' IMMUTABLE STRICT;
784
785-- Deprecation in 1.2.3
786CREATE OR REPLACE FUNCTION disjoint(geometry,geometry)
787	RETURNS boolean
788	AS 'MODULE_PATHNAME'
789	LANGUAGE 'c' IMMUTABLE STRICT;
790
791-- Deprecation in 1.2.3
792CREATE OR REPLACE FUNCTION distance_sphere(geometry,geometry)
793	RETURNS FLOAT8
794	AS 'MODULE_PATHNAME','LWGEOM_distance_sphere'
795	LANGUAGE 'c' IMMUTABLE STRICT
796	COST 100;
797
798-- Deprecation in 1.2.3
799CREATE OR REPLACE FUNCTION distance_spheroid(geometry,geometry,spheroid)
800	RETURNS FLOAT8
801	AS 'MODULE_PATHNAME','LWGEOM_distance_ellipsoid'
802	LANGUAGE 'c' IMMUTABLE STRICT
803	COST 100;
804
805-- Deprecation in 1.2.3
806CREATE OR REPLACE FUNCTION Dump(geometry)
807	RETURNS SETOF geometry_dump
808	AS 'MODULE_PATHNAME', 'LWGEOM_dump'
809	LANGUAGE 'c' IMMUTABLE STRICT;
810
811-- Deprecation in 1.2.3
812CREATE OR REPLACE FUNCTION DumpRings(geometry)
813	RETURNS SETOF geometry_dump
814	AS 'MODULE_PATHNAME', 'LWGEOM_dump_rings'
815	LANGUAGE 'c' IMMUTABLE STRICT;
816
817-- Deprecation in 1.2.3
818CREATE OR REPLACE FUNCTION Envelope(geometry)
819	RETURNS geometry
820	AS 'MODULE_PATHNAME', 'LWGEOM_envelope'
821	LANGUAGE 'c' IMMUTABLE STRICT;
822
823-- Deprecation in 1.2.3
824CREATE OR REPLACE FUNCTION Expand(box2d,float8)
825	RETURNS box2d
826	AS 'MODULE_PATHNAME', 'BOX2D_expand'
827	LANGUAGE 'c' IMMUTABLE STRICT;
828
829-- Deprecation in 1.2.3
830CREATE OR REPLACE FUNCTION Expand(box3d,float8)
831	RETURNS box3d
832	AS 'MODULE_PATHNAME', 'BOX3D_expand'
833	LANGUAGE 'c' IMMUTABLE STRICT;
834
835-- Deprecation in 1.2.3
836CREATE OR REPLACE FUNCTION Expand(geometry,float8)
837	RETURNS geometry
838	AS 'MODULE_PATHNAME', 'LWGEOM_expand'
839	LANGUAGE 'c' IMMUTABLE STRICT;
840
841CREATE AGGREGATE Extent(
842	sfunc = ST_combine_bbox,
843	basetype = geometry,
844	finalfunc = box2d,
845	stype = box3d
846	);
847
848-- Deprecation in 1.2.3
849CREATE OR REPLACE FUNCTION Find_Extent(text,text) RETURNS box2d AS
850$$
851DECLARE
852	tablename alias for $1;
853	columnname alias for $2;
854	myrec RECORD;
855
856BEGIN
857	FOR myrec IN EXECUTE 'SELECT ST_Extent("' || columnname || '") As extent FROM "' || tablename || '"' LOOP
858		return myrec.extent;
859	END LOOP;
860END;
861$$
862LANGUAGE 'plpgsql' IMMUTABLE STRICT;
863
864-- Deprecation in 1.2.3
865CREATE OR REPLACE FUNCTION Find_Extent(text,text,text) RETURNS box2d AS
866$$
867DECLARE
868	schemaname alias for $1;
869	tablename alias for $2;
870	columnname alias for $3;
871	myrec RECORD;
872
873BEGIN
874	FOR myrec IN EXECUTE 'SELECT ST_Extent("' || columnname || '") FROM "' || schemaname || '"."' || tablename || '" As extent ' LOOP
875		return myrec.extent;
876	END LOOP;
877END;
878$$
879LANGUAGE 'plpgsql' IMMUTABLE STRICT;
880
881-- Deprecation in 1.2.3
882CREATE OR REPLACE FUNCTION EndPoint(geometry)
883	RETURNS geometry
884	AS 'MODULE_PATHNAME', 'LWGEOM_endpoint_linestring'
885	LANGUAGE 'c' IMMUTABLE STRICT;
886
887-- Deprecation in 1.2.3
888CREATE OR REPLACE FUNCTION ExteriorRing(geometry)
889	RETURNS geometry
890	AS 'MODULE_PATHNAME','LWGEOM_exteriorring_polygon'
891	LANGUAGE 'c' IMMUTABLE STRICT;
892
893-- Deprecation in 1.2.3
894CREATE OR REPLACE FUNCTION Force_2d(geometry)
895	RETURNS geometry
896	AS 'MODULE_PATHNAME', 'LWGEOM_force_2d'
897	LANGUAGE 'c' IMMUTABLE STRICT;
898
899-- an alias for force_3dz
900-- Deprecation in 1.2.3
901CREATE OR REPLACE FUNCTION Force_3d(geometry)
902	RETURNS geometry
903	AS 'MODULE_PATHNAME', 'LWGEOM_force_3dz'
904	LANGUAGE 'c' IMMUTABLE STRICT;
905
906-- Deprecation in 1.2.3
907CREATE OR REPLACE FUNCTION Force_3dm(geometry)
908	RETURNS geometry
909	AS 'MODULE_PATHNAME', 'LWGEOM_force_3dm'
910	LANGUAGE 'c' IMMUTABLE STRICT;
911
912-- Deprecation in 1.2.3
913CREATE OR REPLACE FUNCTION Force_3dz(geometry)
914	RETURNS geometry
915	AS 'MODULE_PATHNAME', 'LWGEOM_force_3dz'
916	LANGUAGE 'c' IMMUTABLE STRICT;
917
918-- Deprecation in 1.2.3
919CREATE OR REPLACE FUNCTION Force_4d(geometry)
920	RETURNS geometry
921	AS 'MODULE_PATHNAME', 'LWGEOM_force_4d'
922	LANGUAGE 'c' IMMUTABLE STRICT;
923
924-- Deprecation in 1.2.3
925CREATE OR REPLACE FUNCTION Force_Collection(geometry)
926	RETURNS geometry
927	AS 'MODULE_PATHNAME', 'LWGEOM_force_collection'
928	LANGUAGE 'c' IMMUTABLE STRICT;
929
930-- Deprecation in 1.2.3
931CREATE OR REPLACE FUNCTION ForceRHR(geometry)
932	RETURNS geometry
933	AS 'MODULE_PATHNAME', 'LWGEOM_force_clockwise_poly'
934	LANGUAGE 'c' IMMUTABLE STRICT;
935
936-- Deprecation in 1.2.3
937CREATE OR REPLACE FUNCTION GeomCollFromText(text, int4)
938	RETURNS geometry
939	AS '
940	SELECT CASE
941	WHEN geometrytype(GeomFromText($1, $2)) = ''GEOMETRYCOLLECTION''
942	THEN GeomFromText($1,$2)
943	ELSE NULL END
944	'
945	LANGUAGE 'sql' IMMUTABLE STRICT;
946
947-- Deprecation in 1.2.3
948CREATE OR REPLACE FUNCTION GeomCollFromText(text)
949	RETURNS geometry
950	AS '
951	SELECT CASE
952	WHEN geometrytype(GeomFromText($1)) = ''GEOMETRYCOLLECTION''
953	THEN GeomFromText($1)
954	ELSE NULL END
955	'
956	LANGUAGE 'sql' IMMUTABLE STRICT;
957
958-- Deprecation in 1.2.3
959CREATE OR REPLACE FUNCTION GeomCollFromWKB(bytea, int)
960	RETURNS geometry
961	AS '
962	SELECT CASE
963	WHEN geometrytype(GeomFromWKB($1, $2)) = ''GEOMETRYCOLLECTION''
964	THEN GeomFromWKB($1, $2)
965	ELSE NULL END
966	'
967	LANGUAGE 'sql' IMMUTABLE STRICT;
968
969	-- Deprecation in 1.2.3
970CREATE OR REPLACE FUNCTION GeomCollFromWKB(bytea)
971	RETURNS geometry
972	AS '
973	SELECT CASE
974	WHEN geometrytype(GeomFromWKB($1)) = ''GEOMETRYCOLLECTION''
975	THEN GeomFromWKB($1)
976	ELSE NULL END
977	'
978	LANGUAGE 'sql' IMMUTABLE STRICT;
979
980-- Deprecation in 1.2.3
981CREATE OR REPLACE FUNCTION GeometryN(geometry,integer)
982	RETURNS geometry
983	AS 'MODULE_PATHNAME', 'LWGEOM_geometryn_collection'
984	LANGUAGE 'c' IMMUTABLE STRICT;
985
986-- Deprecation in 1.2.3
987CREATE OR REPLACE FUNCTION GeomUnion(geometry,geometry)
988	RETURNS geometry
989	AS 'MODULE_PATHNAME','geomunion'
990	LANGUAGE 'c' IMMUTABLE STRICT;
991
992-- Availability: 1.5.0  -- replaced with postgis_getbbox
993CREATE OR REPLACE FUNCTION getbbox(geometry)
994	RETURNS box2d
995	AS 'MODULE_PATHNAME','LWGEOM_to_BOX2D'
996	LANGUAGE 'c' IMMUTABLE STRICT;
997
998-- Deprecation in 1.2.3
999CREATE OR REPLACE FUNCTION intersects(geometry,geometry)
1000	RETURNS boolean
1001	AS 'MODULE_PATHNAME'
1002	LANGUAGE 'c' IMMUTABLE STRICT;
1003
1004-- Deprecation in 1.2.3
1005CREATE OR REPLACE FUNCTION IsRing(geometry)
1006	RETURNS boolean
1007	AS 'MODULE_PATHNAME'
1008	LANGUAGE 'c' IMMUTABLE STRICT;
1009
1010-- Deprecation in 1.2.3
1011CREATE OR REPLACE FUNCTION IsSimple(geometry)
1012	RETURNS boolean
1013	AS 'MODULE_PATHNAME', 'issimple'
1014	LANGUAGE 'c' IMMUTABLE STRICT;
1015
1016-- Deprecation in 1.2.3
1017CREATE OR REPLACE FUNCTION length_spheroid(geometry, spheroid)
1018	RETURNS FLOAT8
1019	AS 'MODULE_PATHNAME','LWGEOM_length_ellipsoid_linestring'
1020	LANGUAGE 'c' IMMUTABLE STRICT
1021	COST 100;
1022
1023-- Deprecation in 1.2.3
1024CREATE OR REPLACE FUNCTION length2d_spheroid(geometry, spheroid)
1025	RETURNS FLOAT8
1026	AS 'MODULE_PATHNAME','LWGEOM_length2d_ellipsoid'
1027	LANGUAGE 'c' IMMUTABLE STRICT
1028	COST 100;
1029
1030-- Deprecation in 1.2.3
1031CREATE OR REPLACE FUNCTION length3d_spheroid(geometry, spheroid)
1032	RETURNS FLOAT8
1033	AS 'MODULE_PATHNAME','LWGEOM_length_ellipsoid_linestring'
1034	LANGUAGE 'c' IMMUTABLE STRICT;
1035
1036-- Deprecation in 1.2.3
1037CREATE OR REPLACE FUNCTION LineMerge(geometry)
1038	RETURNS geometry
1039	AS 'MODULE_PATHNAME', 'linemerge'
1040	LANGUAGE 'c' IMMUTABLE STRICT
1041	COST 100;
1042
1043-- Deprecation in 1.2.3
1044CREATE OR REPLACE FUNCTION locate_along_measure(geometry, float8)
1045	RETURNS geometry
1046	AS $$ SELECT ST_locate_between_measures($1, $2, $2) $$
1047	LANGUAGE 'sql' IMMUTABLE STRICT;
1048
1049-- Deprecation in 1.2.3
1050CREATE OR REPLACE FUNCTION MakeBox2d(geometry, geometry)
1051	RETURNS box2d
1052	AS 'MODULE_PATHNAME', 'BOX2D_construct'
1053	LANGUAGE 'c' IMMUTABLE STRICT;
1054
1055-- Deprecation in 1.2.3
1056CREATE OR REPLACE FUNCTION MakePolygon(geometry, geometry[])
1057	RETURNS geometry
1058	AS 'MODULE_PATHNAME', 'LWGEOM_makepoly'
1059	LANGUAGE 'c' IMMUTABLE STRICT;
1060
1061-- Deprecation in 1.2.3
1062CREATE OR REPLACE FUNCTION MakePolygon(geometry)
1063	RETURNS geometry
1064	AS 'MODULE_PATHNAME', 'LWGEOM_makepoly'
1065	LANGUAGE 'c' IMMUTABLE STRICT;
1066
1067-- Deprecation in 1.2.3
1068CREATE OR REPLACE FUNCTION MPolyFromWKB(bytea)
1069	RETURNS geometry
1070	AS '
1071	SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOLYGON''
1072	THEN GeomFromWKB($1)
1073	ELSE NULL END
1074	'
1075	LANGUAGE 'sql' IMMUTABLE STRICT;
1076
1077-- Deprecation in 1.2.3
1078CREATE OR REPLACE FUNCTION multi(geometry)
1079	RETURNS geometry
1080	AS 'MODULE_PATHNAME', 'LWGEOM_force_multi'
1081	LANGUAGE 'c' IMMUTABLE STRICT;
1082
1083-- Deprecation in 1.2.3
1084CREATE OR REPLACE FUNCTION MultiPolyFromWKB(bytea, int)
1085	RETURNS geometry
1086	AS '
1087	SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
1088	THEN GeomFromWKB($1, $2)
1089	ELSE NULL END
1090	'
1091	LANGUAGE 'sql' IMMUTABLE STRICT;
1092
1093-- Deprecation in 1.2.3
1094CREATE OR REPLACE FUNCTION MultiPolyFromWKB(bytea)
1095	RETURNS geometry
1096	AS '
1097	SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOLYGON''
1098	THEN GeomFromWKB($1)
1099	ELSE NULL END
1100	'
1101	LANGUAGE 'sql' IMMUTABLE STRICT;
1102
1103-- Deprecation in 1.2.3
1104CREATE OR REPLACE FUNCTION InteriorRingN(geometry,integer)
1105	RETURNS geometry
1106	AS 'MODULE_PATHNAME','LWGEOM_interiorringn_polygon'
1107	LANGUAGE 'c' IMMUTABLE STRICT;
1108
1109-- Deprecation in 1.2.3
1110CREATE OR REPLACE FUNCTION intersection(geometry,geometry)
1111	RETURNS geometry
1112	AS 'MODULE_PATHNAME','intersection'
1113	LANGUAGE 'c' IMMUTABLE STRICT;
1114
1115	-- Deprecation in 1.2.3
1116CREATE OR REPLACE FUNCTION IsClosed(geometry)
1117	RETURNS boolean
1118	AS 'MODULE_PATHNAME', 'LWGEOM_isclosed'
1119	LANGUAGE 'c' IMMUTABLE STRICT;
1120
1121-- Deprecation in 1.2.3
1122CREATE OR REPLACE FUNCTION IsEmpty(geometry)
1123	RETURNS boolean
1124	AS 'MODULE_PATHNAME', 'LWGEOM_isempty'
1125	LANGUAGE 'c' IMMUTABLE STRICT;
1126
1127-- Deprecation in 1.2.3
1128CREATE OR REPLACE FUNCTION IsValid(geometry)
1129	RETURNS boolean
1130	AS 'MODULE_PATHNAME', 'isvalid'
1131	LANGUAGE 'c' IMMUTABLE STRICT
1132	COST 100;
1133-- this is a fake (for back-compatibility)
1134-- uses 3d if 3d is available, 2d otherwise
1135-- Deprecation in 1.2.3
1136CREATE OR REPLACE FUNCTION length3d(geometry)
1137	RETURNS FLOAT8
1138	AS 'MODULE_PATHNAME', 'LWGEOM_length_linestring'
1139	LANGUAGE 'c' IMMUTABLE STRICT;
1140
1141-- Deprecation in 1.2.3
1142CREATE OR REPLACE FUNCTION length2d(geometry)
1143	RETURNS FLOAT8
1144	AS 'MODULE_PATHNAME', 'LWGEOM_length2d_linestring'
1145	LANGUAGE 'c' IMMUTABLE STRICT;
1146
1147CREATE OR REPLACE FUNCTION length(geometry)
1148	RETURNS FLOAT8
1149	AS 'MODULE_PATHNAME', 'LWGEOM_length_linestring'
1150	LANGUAGE 'c' IMMUTABLE STRICT;
1151
1152-- Deprecation in 1.2.3
1153CREATE OR REPLACE FUNCTION line_interpolate_point(geometry, float8)
1154	RETURNS geometry
1155	AS 'MODULE_PATHNAME', 'LWGEOM_line_interpolate_point'
1156	LANGUAGE 'c' IMMUTABLE STRICT;
1157
1158-- Deprecation in 1.2.3
1159CREATE OR REPLACE FUNCTION line_locate_point(geometry, geometry)
1160	RETURNS float8
1161	AS 'MODULE_PATHNAME', 'LWGEOM_line_locate_point'
1162	LANGUAGE 'c' IMMUTABLE STRICT;
1163
1164-- Deprecation in 1.2.3
1165CREATE OR REPLACE FUNCTION line_substring(geometry, float8, float8)
1166	RETURNS geometry
1167	AS 'MODULE_PATHNAME', 'LWGEOM_line_substring'
1168	LANGUAGE 'c' IMMUTABLE STRICT;
1169
1170-- Deprecation in 1.2.3
1171CREATE OR REPLACE FUNCTION LineFromText(text)
1172	RETURNS geometry
1173	AS '
1174	SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''LINESTRING''
1175	THEN GeomFromText($1)
1176	ELSE NULL END
1177	'
1178	LANGUAGE 'sql' IMMUTABLE STRICT;
1179
1180-- Deprecation in 1.2.3
1181CREATE OR REPLACE FUNCTION LineFromText(text, int4)
1182	RETURNS geometry
1183	AS '
1184	SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''LINESTRING''
1185	THEN GeomFromText($1,$2)
1186	ELSE NULL END
1187	'
1188	LANGUAGE 'sql' IMMUTABLE STRICT;
1189
1190-- Deprecation in 1.2.3
1191CREATE OR REPLACE FUNCTION LineFromMultiPoint(geometry)
1192	RETURNS geometry
1193	AS 'MODULE_PATHNAME', 'LWGEOM_line_from_mpoint'
1194	LANGUAGE 'c' IMMUTABLE STRICT;
1195
1196-- Deprecation in 1.2.3
1197CREATE OR REPLACE FUNCTION LineFromWKB(bytea, int)
1198	RETURNS geometry
1199	AS '
1200	SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''LINESTRING''
1201	THEN GeomFromWKB($1, $2)
1202	ELSE NULL END
1203	'
1204	LANGUAGE 'sql' IMMUTABLE STRICT;
1205
1206-- Deprecation in 1.2.3
1207CREATE OR REPLACE FUNCTION LineFromWKB(bytea)
1208	RETURNS geometry
1209	AS '
1210	SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''LINESTRING''
1211	THEN GeomFromWKB($1)
1212	ELSE NULL END
1213	'
1214	LANGUAGE 'sql' IMMUTABLE STRICT;
1215
1216-- Deprecation in 1.2.3
1217CREATE OR REPLACE FUNCTION LineStringFromText(text)
1218	RETURNS geometry
1219	AS 'SELECT LineFromText($1)'
1220	LANGUAGE 'sql' IMMUTABLE STRICT;
1221
1222-- Deprecation in 1.2.3
1223CREATE OR REPLACE FUNCTION LineStringFromText(text, int4)
1224	RETURNS geometry
1225	AS 'SELECT LineFromText($1, $2)'
1226	LANGUAGE 'sql' IMMUTABLE STRICT;
1227
1228-- Deprecation in 1.2.3
1229CREATE OR REPLACE FUNCTION LinestringFromWKB(bytea, int)
1230	RETURNS geometry
1231	AS '
1232	SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''LINESTRING''
1233	THEN GeomFromWKB($1, $2)
1234	ELSE NULL END
1235	'
1236	LANGUAGE 'sql' IMMUTABLE STRICT;
1237
1238-- Deprecation in 1.2.3
1239CREATE OR REPLACE FUNCTION LinestringFromWKB(bytea)
1240	RETURNS geometry
1241	AS '
1242	SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''LINESTRING''
1243	THEN GeomFromWKB($1)
1244	ELSE NULL END
1245	'
1246	LANGUAGE 'sql' IMMUTABLE STRICT;
1247
1248-- Deprecation in 1.2.3
1249CREATE OR REPLACE FUNCTION locate_between_measures(geometry, float8, float8)
1250	RETURNS geometry
1251	AS 'MODULE_PATHNAME', 'LWGEOM_locate_between_m'
1252	LANGUAGE 'c' IMMUTABLE STRICT;
1253
1254-- Deprecation in 1.2.3
1255CREATE OR REPLACE FUNCTION M(geometry)
1256	RETURNS float8
1257	AS 'MODULE_PATHNAME','LWGEOM_m_point'
1258	LANGUAGE 'c' IMMUTABLE STRICT;
1259
1260-- Deprecation in 1.2.3
1261CREATE OR REPLACE FUNCTION MakeBox3d(geometry, geometry)
1262	RETURNS box3d
1263	AS 'MODULE_PATHNAME', 'BOX3D_construct'
1264	LANGUAGE 'c' IMMUTABLE STRICT;
1265
1266-- Deprecation in 1.2.3
1267CREATE OR REPLACE FUNCTION makeline_garray (geometry[])
1268	RETURNS geometry
1269	AS 'MODULE_PATHNAME', 'LWGEOM_makeline_garray'
1270	LANGUAGE 'c' IMMUTABLE STRICT;
1271
1272-- Deprecation in 1.2.3
1273-- Changed: 2.5.0 use 'internal' stype
1274CREATE AGGREGATE makeline (
1275	BASETYPE = geometry,
1276	SFUNC = pgis_geometry_accum_transfn,
1277	STYPE = internal,
1278	FINALFUNC = pgis_geometry_makeline_finalfn
1279	);
1280
1281-- Deprecation in 1.2.3
1282CREATE OR REPLACE FUNCTION MakeLine(geometry, geometry)
1283	RETURNS geometry
1284	AS 'MODULE_PATHNAME', 'LWGEOM_makeline'
1285	LANGUAGE 'c' IMMUTABLE STRICT;
1286
1287-- Deprecation in 1.2.3
1288CREATE OR REPLACE FUNCTION MakePoint(float8, float8)
1289	RETURNS geometry
1290	AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
1291	LANGUAGE 'c' IMMUTABLE STRICT;
1292
1293-- Deprecation in 1.2.3
1294CREATE OR REPLACE FUNCTION MakePoint(float8, float8, float8)
1295	RETURNS geometry
1296	AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
1297	LANGUAGE 'c' IMMUTABLE STRICT;
1298
1299	-- Deprecation in 1.2.3
1300CREATE OR REPLACE FUNCTION MakePoint(float8, float8, float8, float8)
1301	RETURNS geometry
1302	AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
1303	LANGUAGE 'c' IMMUTABLE STRICT;
1304
1305-- Deprecation in 1.2.3
1306CREATE OR REPLACE FUNCTION MakePointM(float8, float8, float8)
1307	RETURNS geometry
1308	AS 'MODULE_PATHNAME', 'LWGEOM_makepoint3dm'
1309	LANGUAGE 'c' IMMUTABLE STRICT;
1310
1311-- This should really be deprecated -- 2011-01-04 robe
1312CREATE OR REPLACE FUNCTION max_distance(geometry,geometry)
1313	RETURNS float8
1314	AS 'MODULE_PATHNAME', 'LWGEOM_maxdistance2d_linestring'
1315	LANGUAGE 'c' IMMUTABLE STRICT;
1316
1317-- Deprecation in 1.2.3
1318CREATE OR REPLACE FUNCTION mem_size(geometry)
1319	RETURNS int4
1320	AS 'MODULE_PATHNAME', 'LWGEOM_mem_size'
1321	LANGUAGE 'c' IMMUTABLE STRICT;
1322
1323-- Deprecation in 1.2.3
1324CREATE OR REPLACE FUNCTION MLineFromText(text, int4)
1325	RETURNS geometry
1326	AS '
1327	SELECT CASE
1328	WHEN geometrytype(GeomFromText($1, $2)) = ''MULTILINESTRING''
1329	THEN GeomFromText($1,$2)
1330	ELSE NULL END
1331	'
1332	LANGUAGE 'sql' IMMUTABLE STRICT;
1333
1334-- Deprecation in 1.2.3
1335CREATE OR REPLACE FUNCTION MLineFromText(text)
1336	RETURNS geometry
1337	AS '
1338	SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTILINESTRING''
1339	THEN GeomFromText($1)
1340	ELSE NULL END
1341	'
1342	LANGUAGE 'sql' IMMUTABLE STRICT;
1343
1344-- Deprecation in 1.2.3
1345CREATE OR REPLACE FUNCTION MLineFromWKB(bytea, int)
1346	RETURNS geometry
1347	AS '
1348	SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
1349	THEN GeomFromWKB($1, $2)
1350	ELSE NULL END
1351	'
1352	LANGUAGE 'sql' IMMUTABLE STRICT;
1353
1354-- Deprecation in 1.2.3
1355CREATE OR REPLACE FUNCTION MLineFromWKB(bytea)
1356	RETURNS geometry
1357	AS '
1358	SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTILINESTRING''
1359	THEN GeomFromWKB($1)
1360	ELSE NULL END
1361	'
1362	LANGUAGE 'sql' IMMUTABLE STRICT;
1363
1364-- Deprecation in 1.2.3
1365CREATE OR REPLACE FUNCTION MPointFromText(text, int4)
1366	RETURNS geometry
1367	AS '
1368	SELECT CASE WHEN geometrytype(GeomFromText($1,$2)) = ''MULTIPOINT''
1369	THEN GeomFromText($1,$2)
1370	ELSE NULL END
1371	'
1372	LANGUAGE 'sql' IMMUTABLE STRICT;
1373
1374-- Deprecation in 1.2.3
1375CREATE OR REPLACE FUNCTION MPointFromText(text)
1376	RETURNS geometry
1377	AS '
1378	SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTIPOINT''
1379	THEN GeomFromText($1)
1380	ELSE NULL END
1381	'
1382	LANGUAGE 'sql' IMMUTABLE STRICT;
1383
1384-- Deprecation in 1.2.3
1385CREATE OR REPLACE FUNCTION MPointFromWKB(bytea, int)
1386	RETURNS geometry
1387	AS '
1388	SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''MULTIPOINT''
1389	THEN GeomFromWKB($1, $2)
1390	ELSE NULL END
1391	'
1392	LANGUAGE 'sql' IMMUTABLE STRICT;
1393
1394-- Deprecation in 1.2.3
1395CREATE OR REPLACE FUNCTION MPointFromWKB(bytea)
1396	RETURNS geometry
1397	AS '
1398	SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOINT''
1399	THEN GeomFromWKB($1)
1400	ELSE NULL END
1401	'
1402	LANGUAGE 'sql' IMMUTABLE STRICT;
1403
1404-- Deprecation in 1.2.3
1405CREATE OR REPLACE FUNCTION MPolyFromText(text, int4)
1406	RETURNS geometry
1407	AS '
1408	SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''MULTIPOLYGON''
1409	THEN GeomFromText($1,$2)
1410	ELSE NULL END
1411	'
1412	LANGUAGE 'sql' IMMUTABLE STRICT;
1413
1414-- Deprecation in 1.2.3
1415CREATE OR REPLACE FUNCTION MPolyFromText(text)
1416	RETURNS geometry
1417	AS '
1418	SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTIPOLYGON''
1419	THEN GeomFromText($1)
1420	ELSE NULL END
1421	'
1422	LANGUAGE 'sql' IMMUTABLE STRICT;
1423
1424-- Deprecation in 1.2.3
1425CREATE OR REPLACE FUNCTION MPolyFromWKB(bytea, int)
1426	RETURNS geometry
1427	AS '
1428	SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
1429	THEN GeomFromWKB($1, $2)
1430	ELSE NULL END
1431	'
1432	LANGUAGE 'sql' IMMUTABLE STRICT;
1433
1434-- Deprecation in 1.2.3
1435CREATE OR REPLACE FUNCTION MultiLineFromWKB(bytea, int)
1436	RETURNS geometry
1437	AS '
1438	SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
1439	THEN GeomFromWKB($1, $2)
1440	ELSE NULL END
1441	'
1442	LANGUAGE 'sql' IMMUTABLE STRICT;
1443
1444-- Availability: 1.2.2
1445CREATE OR REPLACE FUNCTION MultiLineFromWKB(bytea, int)
1446	RETURNS geometry
1447	AS '
1448	SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
1449	THEN GeomFromWKB($1, $2)
1450	ELSE NULL END
1451	'
1452	LANGUAGE 'sql' IMMUTABLE STRICT;
1453
1454-- Deprecation in 1.2.3
1455CREATE OR REPLACE FUNCTION MultiLineFromWKB(bytea)
1456	RETURNS geometry
1457	AS '
1458	SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTILINESTRING''
1459	THEN GeomFromWKB($1)
1460	ELSE NULL END
1461	'
1462	LANGUAGE 'sql' IMMUTABLE STRICT;
1463
1464-- Deprecation in 1.2.3
1465CREATE OR REPLACE FUNCTION MultiLineStringFromText(text)
1466	RETURNS geometry
1467	AS 'SELECT ST_MLineFromText($1)'
1468	LANGUAGE 'sql' IMMUTABLE STRICT;
1469
1470-- Deprecation in 1.2.3
1471CREATE OR REPLACE FUNCTION MultiLineStringFromText(text, int4)
1472	RETURNS geometry
1473	AS 'SELECT MLineFromText($1, $2)'
1474	LANGUAGE 'sql' IMMUTABLE STRICT;
1475
1476-- Deprecation in 1.2.3
1477CREATE OR REPLACE FUNCTION MultiPointFromText(text)
1478	RETURNS geometry
1479	AS 'SELECT MPointFromText($1)'
1480	LANGUAGE 'sql' IMMUTABLE STRICT;
1481
1482-- Deprecation in 1.2.3
1483CREATE OR REPLACE FUNCTION MultiPointFromText(text)
1484	RETURNS geometry
1485	AS 'SELECT MPointFromText($1)'
1486	LANGUAGE 'sql' IMMUTABLE STRICT;
1487
1488-- Deprecation in 1.2.3
1489CREATE OR REPLACE FUNCTION MultiPointFromText(text, int4)
1490	RETURNS geometry
1491	AS 'SELECT MPointFromText($1, $2)'
1492	LANGUAGE 'sql' IMMUTABLE STRICT;
1493
1494-- Deprecation in 1.2.3
1495CREATE OR REPLACE FUNCTION MultiPointFromWKB(bytea, int)
1496	RETURNS geometry
1497	AS '
1498	SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''MULTIPOINT''
1499	THEN GeomFromWKB($1, $2)
1500	ELSE NULL END
1501	'
1502	LANGUAGE 'sql' IMMUTABLE STRICT;
1503
1504-- Deprecation in 1.2.3
1505CREATE OR REPLACE FUNCTION MultiPointFromWKB(bytea)
1506	RETURNS geometry
1507	AS '
1508	SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOINT''
1509	THEN GeomFromWKB($1)
1510	ELSE NULL END
1511	'
1512	LANGUAGE 'sql' IMMUTABLE STRICT;
1513
1514-- Deprecation in 1.2.3
1515CREATE OR REPLACE FUNCTION MultiPolygonFromText(text, int4)
1516	RETURNS geometry
1517	AS 'SELECT MPolyFromText($1, $2)'
1518	LANGUAGE 'sql' IMMUTABLE STRICT;
1519
1520-- Deprecation in 1.2.3
1521CREATE OR REPLACE FUNCTION MultiPolygonFromText(text)
1522	RETURNS geometry
1523	AS 'SELECT MPolyFromText($1)'
1524	LANGUAGE 'sql' IMMUTABLE STRICT;
1525
1526-- Deprecation in 1.2.3
1527CREATE OR REPLACE FUNCTION NumInteriorRing(geometry)
1528	RETURNS integer
1529	AS 'MODULE_PATHNAME','LWGEOM_numinteriorrings_polygon'
1530	LANGUAGE 'c' IMMUTABLE STRICT;
1531
1532-- Deprecation in 1.2.3
1533CREATE OR REPLACE FUNCTION NumInteriorRings(geometry)
1534	RETURNS integer
1535	AS 'MODULE_PATHNAME','LWGEOM_numinteriorrings_polygon'
1536	LANGUAGE 'c' IMMUTABLE STRICT;
1537
1538-- Deprecation in 1.2.3
1539CREATE OR REPLACE FUNCTION npoints(geometry)
1540	RETURNS int4
1541	AS 'MODULE_PATHNAME', 'LWGEOM_npoints'
1542	LANGUAGE 'c' IMMUTABLE STRICT;
1543
1544-- Deprecation in 1.2.3
1545CREATE OR REPLACE FUNCTION nrings(geometry)
1546	RETURNS int4
1547	AS 'MODULE_PATHNAME', 'LWGEOM_nrings'
1548	LANGUAGE 'c' IMMUTABLE STRICT;
1549
1550-- Deprecation in 1.2.3
1551CREATE OR REPLACE FUNCTION NumGeometries(geometry)
1552	RETURNS int4
1553	AS 'MODULE_PATHNAME', 'LWGEOM_numgeometries_collection'
1554	LANGUAGE 'c' IMMUTABLE STRICT;
1555
1556-- Deprecation in 1.2.3
1557CREATE OR REPLACE FUNCTION NumPoints(geometry)
1558	RETURNS int4
1559	AS 'MODULE_PATHNAME', 'LWGEOM_numpoints_linestring'
1560	LANGUAGE 'c' IMMUTABLE STRICT;
1561
1562-- Deprecation in 1.2.3
1563CREATE OR REPLACE FUNCTION overlaps(geometry,geometry)
1564	RETURNS boolean
1565	AS 'MODULE_PATHNAME'
1566	LANGUAGE 'c' IMMUTABLE STRICT;
1567
1568-- this is a fake (for back-compatibility)
1569-- uses 3d if 3d is available, 2d otherwise
1570-- Deprecation in 1.2.3
1571CREATE OR REPLACE FUNCTION perimeter3d(geometry)
1572	RETURNS FLOAT8
1573	AS 'MODULE_PATHNAME', 'LWGEOM_perimeter_poly'
1574	LANGUAGE 'c' IMMUTABLE STRICT;
1575
1576-- Deprecation in 1.2.3
1577CREATE OR REPLACE FUNCTION perimeter2d(geometry)
1578	RETURNS FLOAT8
1579	AS 'MODULE_PATHNAME', 'LWGEOM_perimeter2d_poly'
1580	LANGUAGE 'c' IMMUTABLE STRICT;
1581
1582-- Deprecation in 1.2.3
1583CREATE OR REPLACE FUNCTION point_inside_circle(geometry,float8,float8,float8)
1584	RETURNS bool
1585	AS 'MODULE_PATHNAME', 'LWGEOM_inside_circle_point'
1586	LANGUAGE 'c' IMMUTABLE STRICT;
1587
1588-- Deprecation in 1.2.3
1589CREATE OR REPLACE FUNCTION PointFromText(text)
1590	RETURNS geometry
1591	AS '
1592	SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''POINT''
1593	THEN GeomFromText($1)
1594	ELSE NULL END
1595	'
1596	LANGUAGE 'sql' IMMUTABLE STRICT;
1597
1598-- Deprecation in 1.2.3
1599CREATE OR REPLACE FUNCTION PointFromText(text, int4)
1600	RETURNS geometry
1601	AS '
1602	SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''POINT''
1603	THEN GeomFromText($1,$2)
1604	ELSE NULL END
1605	'
1606	LANGUAGE 'sql' IMMUTABLE STRICT;
1607
1608-- Deprecation in 1.2.3
1609CREATE OR REPLACE FUNCTION PointFromWKB(bytea)
1610	RETURNS geometry
1611	AS '
1612	SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POINT''
1613	THEN GeomFromWKB($1)
1614	ELSE NULL END
1615	'
1616	LANGUAGE 'sql' IMMUTABLE STRICT;
1617
1618-- Deprecation in 1.2.3
1619CREATE OR REPLACE FUNCTION PointFromWKB(bytea, int)
1620	RETURNS geometry
1621	AS '
1622	SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = ''POINT''
1623	THEN GeomFromWKB($1, $2)
1624	ELSE NULL END
1625	'
1626	LANGUAGE 'sql' IMMUTABLE STRICT;
1627
1628-- Deprecation in 1.2.3
1629CREATE OR REPLACE FUNCTION PointN(geometry,integer)
1630	RETURNS geometry
1631	AS 'MODULE_PATHNAME','LWGEOM_pointn_linestring'
1632	LANGUAGE 'c' IMMUTABLE STRICT;
1633
1634-- Deprecation in 1.2.3
1635CREATE OR REPLACE FUNCTION PointOnSurface(geometry)
1636	RETURNS geometry
1637	AS 'MODULE_PATHNAME'
1638	LANGUAGE 'c' IMMUTABLE STRICT;
1639
1640-- Deprecation in 1.2.3
1641CREATE OR REPLACE FUNCTION PolyFromText(text)
1642	RETURNS geometry
1643	AS '
1644	SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''POLYGON''
1645	THEN GeomFromText($1)
1646	ELSE NULL END
1647	'
1648	LANGUAGE 'sql' IMMUTABLE STRICT;
1649-- Deprecation in 1.2.3
1650CREATE OR REPLACE FUNCTION PolyFromText(text, int4)
1651	RETURNS geometry
1652	AS '
1653	SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''POLYGON''
1654	THEN GeomFromText($1,$2)
1655	ELSE NULL END
1656	'
1657	LANGUAGE 'sql' IMMUTABLE STRICT;
1658
1659-- Deprecation in 1.2.3
1660CREATE OR REPLACE FUNCTION PolyFromWKB(bytea, int)
1661	RETURNS geometry
1662	AS '
1663	SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''POLYGON''
1664	THEN GeomFromWKB($1, $2)
1665	ELSE NULL END
1666	'
1667	LANGUAGE 'sql' IMMUTABLE STRICT;
1668
1669-- Deprecation in 1.2.3
1670CREATE OR REPLACE FUNCTION PolyFromWKB(bytea)
1671	RETURNS geometry
1672	AS '
1673	SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POLYGON''
1674	THEN GeomFromWKB($1)
1675	ELSE NULL END
1676	'
1677	LANGUAGE 'sql' IMMUTABLE STRICT;
1678
1679-- Deprecation in 1.2.3
1680CREATE OR REPLACE FUNCTION PolygonFromText(text, int4)
1681	RETURNS geometry
1682	AS 'SELECT PolyFromText($1, $2)'
1683	LANGUAGE 'sql' IMMUTABLE STRICT;
1684
1685-- Deprecation in 1.2.3
1686CREATE OR REPLACE FUNCTION PolygonFromText(text)
1687	RETURNS geometry
1688	AS 'SELECT PolyFromText($1)'
1689	LANGUAGE 'sql' IMMUTABLE STRICT;
1690
1691-- Deprecation in 1.2.3
1692CREATE OR REPLACE FUNCTION PolygonFromWKB(bytea, int)
1693	RETURNS geometry
1694	AS '
1695	SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''POLYGON''
1696	THEN GeomFromWKB($1, $2)
1697	ELSE NULL END
1698	'
1699	LANGUAGE 'sql' IMMUTABLE STRICT;
1700
1701	-- Deprecation in 1.2.3
1702CREATE OR REPLACE FUNCTION PolygonFromWKB(bytea)
1703	RETURNS geometry
1704	AS '
1705	SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POLYGON''
1706	THEN GeomFromWKB($1)
1707	ELSE NULL END
1708	'
1709	LANGUAGE 'sql' IMMUTABLE STRICT;
1710
1711-- Deprecation in 1.2.3
1712CREATE OR REPLACE FUNCTION Polygonize_GArray (geometry[])
1713	RETURNS geometry
1714	AS 'MODULE_PATHNAME', 'polygonize_garray'
1715	LANGUAGE 'c' IMMUTABLE STRICT
1716	COST 100;
1717
1718-- Deprecation in 1.2.3
1719CREATE OR REPLACE FUNCTION relate(geometry,geometry)
1720	RETURNS text
1721	AS 'MODULE_PATHNAME','relate_full'
1722	LANGUAGE 'c' IMMUTABLE STRICT;
1723
1724-- Deprecation in 1.2.3
1725CREATE OR REPLACE FUNCTION relate(geometry,geometry,text)
1726	RETURNS boolean
1727	AS 'MODULE_PATHNAME','relate_pattern'
1728	LANGUAGE 'c' IMMUTABLE STRICT;
1729
1730-- Deprecation in 1.2.3
1731CREATE OR REPLACE FUNCTION RemovePoint(geometry, integer)
1732	RETURNS geometry
1733	AS 'MODULE_PATHNAME', 'LWGEOM_removepoint'
1734	LANGUAGE 'c' IMMUTABLE STRICT;
1735
1736-- Deprecation in 1.2.3
1737CREATE OR REPLACE FUNCTION reverse(geometry)
1738	RETURNS geometry
1739	AS 'MODULE_PATHNAME', 'LWGEOM_reverse'
1740	LANGUAGE 'c' IMMUTABLE STRICT;
1741
1742-- Deprecation in 1.2.3
1743CREATE OR REPLACE FUNCTION Segmentize(geometry, float8)
1744	RETURNS geometry
1745	AS 'MODULE_PATHNAME', 'LWGEOM_segmentize2d'
1746	LANGUAGE 'c' IMMUTABLE STRICT;
1747
1748-- Deprecation in 1.2.3
1749CREATE OR REPLACE FUNCTION SetPoint(geometry, integer, geometry)
1750	RETURNS geometry
1751	AS 'MODULE_PATHNAME', 'LWGEOM_setpoint_linestring'
1752	LANGUAGE 'c' IMMUTABLE STRICT;
1753
1754-- Availability: 1.1.0
1755-- Deprecation in 1.2.3
1756CREATE OR REPLACE FUNCTION shift_longitude(geometry)
1757	RETURNS geometry
1758	AS 'MODULE_PATHNAME', 'LWGEOM_longitude_shift'
1759	LANGUAGE 'c' IMMUTABLE STRICT;
1760
1761-- Deprecation in 1.2.3
1762CREATE OR REPLACE FUNCTION Simplify(geometry, float8)
1763	RETURNS geometry
1764	AS 'MODULE_PATHNAME', 'LWGEOM_simplify2d'
1765	LANGUAGE 'c' IMMUTABLE STRICT;
1766
1767-- SnapToGrid(input, size) # xsize=ysize=size, offsets=0
1768-- Deprecation in 1.2.3
1769CREATE OR REPLACE FUNCTION SnapToGrid(geometry, float8, float8, float8, float8)
1770	RETURNS geometry
1771	AS 'MODULE_PATHNAME', 'LWGEOM_snaptogrid'
1772	LANGUAGE 'c' IMMUTABLE STRICT;
1773
1774-- Deprecation in 1.2.3
1775CREATE OR REPLACE FUNCTION SnapToGrid(geometry, float8)
1776	RETURNS geometry
1777	AS 'SELECT ST_SnapToGrid($1, 0, 0, $2, $2)'
1778	LANGUAGE 'sql' IMMUTABLE STRICT;
1779
1780-- SnapToGrid(input, point_offsets, xsize, ysize, zsize, msize)
1781-- Deprecation in 1.2.3
1782CREATE OR REPLACE FUNCTION SnapToGrid(geometry, geometry, float8, float8, float8, float8)
1783	RETURNS geometry
1784	AS 'MODULE_PATHNAME', 'LWGEOM_snaptogrid_pointoff'
1785	LANGUAGE 'c' IMMUTABLE STRICT;
1786
1787-- SnapToGrid(input, xsize, ysize) # offsets=0
1788-- Deprecation in 1.2.3
1789CREATE OR REPLACE FUNCTION SnapToGrid(geometry, float8, float8)
1790	RETURNS geometry
1791	AS 'SELECT ST_SnapToGrid($1, 0, 0, $2, $3)'
1792	LANGUAGE 'sql' IMMUTABLE STRICT;
1793
1794-- Availability: 1.2.2 -- this should be deprecated (do not think anyone has ever used it)
1795CREATE OR REPLACE FUNCTION ST_MakeLine_GArray (geometry[])
1796	RETURNS geometry
1797	AS 'MODULE_PATHNAME', 'LWGEOM_makeline_garray'
1798	LANGUAGE 'c' IMMUTABLE STRICT;
1799
1800-- Deprecation in 1.2.3
1801CREATE OR REPLACE FUNCTION StartPoint(geometry)
1802	RETURNS geometry
1803	AS 'MODULE_PATHNAME', 'LWGEOM_startpoint_linestring'
1804	LANGUAGE 'c' IMMUTABLE STRICT;
1805
1806-- Deprecation in 1.2.3
1807CREATE OR REPLACE FUNCTION symdifference(geometry,geometry)
1808	RETURNS geometry
1809	AS 'MODULE_PATHNAME','symdifference'
1810	LANGUAGE 'c' IMMUTABLE STRICT;
1811
1812-- Deprecation in 1.2.3
1813CREATE OR REPLACE FUNCTION symmetricdifference(geometry,geometry)
1814	RETURNS geometry
1815	AS 'MODULE_PATHNAME','symdifference'
1816	LANGUAGE 'c' IMMUTABLE STRICT;
1817
1818-- Deprecation in 1.2.3
1819CREATE OR REPLACE FUNCTION summary(geometry)
1820	RETURNS text
1821	AS 'MODULE_PATHNAME', 'LWGEOM_summary'
1822	LANGUAGE 'c' IMMUTABLE STRICT;
1823
1824CREATE OR REPLACE FUNCTION transform(geometry,integer)
1825	RETURNS geometry
1826	AS 'MODULE_PATHNAME','transform'
1827	LANGUAGE 'c' IMMUTABLE STRICT;
1828
1829-- Deprecation in 1.2.3
1830CREATE OR REPLACE FUNCTION touches(geometry,geometry)
1831	RETURNS boolean
1832	AS 'MODULE_PATHNAME'
1833	LANGUAGE 'c' IMMUTABLE STRICT;
1834
1835-- Deprecation in 1.2.3
1836CREATE OR REPLACE FUNCTION within(geometry,geometry)
1837	RETURNS boolean
1838	AS 'SELECT ST_Within($1, $2)'
1839	LANGUAGE 'sql' IMMUTABLE STRICT;
1840
1841-- Deprecation in 1.2.3
1842CREATE OR REPLACE FUNCTION X(geometry)
1843	RETURNS float8
1844	AS 'MODULE_PATHNAME','LWGEOM_x_point'
1845	LANGUAGE 'c' IMMUTABLE STRICT;
1846
1847-- Deprecation in 1.2.3
1848CREATE OR REPLACE FUNCTION xmax(box3d)
1849	RETURNS FLOAT8
1850	AS 'MODULE_PATHNAME','BOX3D_xmax'
1851	LANGUAGE 'c' IMMUTABLE STRICT;
1852
1853-- Deprecation in 1.2.3
1854CREATE OR REPLACE FUNCTION xmin(box3d)
1855	RETURNS FLOAT8
1856	AS 'MODULE_PATHNAME','BOX3D_xmin'
1857	LANGUAGE 'c' IMMUTABLE STRICT;
1858
1859-- Deprecation in 1.2.3
1860CREATE OR REPLACE FUNCTION Y(geometry)
1861	RETURNS float8
1862	AS 'MODULE_PATHNAME','LWGEOM_y_point'
1863	LANGUAGE 'c' IMMUTABLE STRICT;
1864
1865-- Deprecation in 1.2.3
1866CREATE OR REPLACE FUNCTION ymax(box3d)
1867	RETURNS FLOAT8
1868	AS 'MODULE_PATHNAME','BOX3D_ymax'
1869	LANGUAGE 'c' IMMUTABLE STRICT;
1870
1871-- Deprecation in 1.2.3
1872CREATE OR REPLACE FUNCTION ymin(box3d)
1873	RETURNS FLOAT8
1874	AS 'MODULE_PATHNAME','BOX3D_ymin'
1875	LANGUAGE 'c' IMMUTABLE STRICT;
1876
1877-- Deprecation in 1.2.3
1878CREATE OR REPLACE FUNCTION Z(geometry)
1879	RETURNS float8
1880	AS 'MODULE_PATHNAME','LWGEOM_z_point'
1881	LANGUAGE 'c' IMMUTABLE STRICT;
1882
1883-- Deprecation in 1.2.3
1884CREATE OR REPLACE FUNCTION zmax(box3d)
1885	RETURNS FLOAT8
1886	AS 'MODULE_PATHNAME','BOX3D_zmax'
1887	LANGUAGE 'c' IMMUTABLE STRICT;
1888
1889-- Deprecation in 1.2.3
1890CREATE OR REPLACE FUNCTION zmin(box3d)
1891	RETURNS FLOAT8
1892	AS 'MODULE_PATHNAME','BOX3D_zmin'
1893	LANGUAGE 'c' IMMUTABLE STRICT;
1894
1895-- Deprecation in 1.2.3
1896CREATE OR REPLACE FUNCTION zmflag(geometry)
1897	RETURNS smallint
1898	AS 'MODULE_PATHNAME', 'LWGEOM_zmflag'
1899	LANGUAGE 'c' IMMUTABLE STRICT;
1900
1901-- end old ogc names that have been replaced with new SQL-MM names --
1902
1903--- Start Aggregates and supporting functions --
1904-- Deprecation in: 1.2.3
1905-- Changed: 2.5.0 use 'internal' stype
1906CREATE AGGREGATE accum (
1907	sfunc = pgis_geometry_accum_transfn,
1908	basetype = geometry,
1909	stype = internal,
1910	finalfunc = pgis_geometry_accum_finalfn
1911	);
1912-- Deprecation in 1.2.3
1913CREATE OR REPLACE FUNCTION collect(geometry, geometry)
1914	RETURNS geometry
1915	AS 'MODULE_PATHNAME', 'LWGEOM_collect'
1916	LANGUAGE 'c' IMMUTABLE;
1917
1918-- Deprecation in 1.2.3
1919CREATE OR REPLACE FUNCTION combine_bbox(box2d,geometry)
1920	RETURNS box2d
1921	AS 'MODULE_PATHNAME', 'BOX2D_combine'
1922	LANGUAGE 'c' IMMUTABLE;
1923
1924-- Deprecation in 1.2.3
1925CREATE OR REPLACE FUNCTION combine_bbox(box3d,geometry)
1926	RETURNS box3d
1927	AS 'MODULE_PATHNAME', 'BOX3D_combine'
1928	LANGUAGE 'c' IMMUTABLE;
1929
1930	-- Deprecation in 1.5.0
1931CREATE OR REPLACE FUNCTION ST_Polygonize_GArray (geometry[])
1932	RETURNS geometry
1933	AS 'MODULE_PATHNAME', 'polygonize_garray'
1934	LANGUAGE 'c' IMMUTABLE STRICT
1935	COST 100;
1936
1937-- Deprecation in 1.4.0
1938CREATE OR REPLACE FUNCTION ST_unite_garray (geometry[])
1939	RETURNS geometry
1940	AS 'MODULE_PATHNAME','pgis_union_geometry_array'
1941	LANGUAGE 'c' IMMUTABLE STRICT;
1942
1943-- Deprecation in 1.2.3
1944CREATE OR REPLACE FUNCTION unite_garray (geometry[])
1945	RETURNS geometry
1946	AS 'MODULE_PATHNAME', 'pgis_union_geometry_array'
1947	LANGUAGE 'c' IMMUTABLE STRICT;
1948
1949-- Deprecation in 1.2.3
1950CREATE AGGREGATE Extent3d(
1951	sfunc = combine_bbox,
1952	basetype = geometry,
1953	stype = box3d
1954	);
1955
1956-- Deprecation in 1.2.3
1957CREATE AGGREGATE memcollect(
1958	sfunc = ST_collect,
1959	basetype = geometry,
1960	stype = geometry
1961	);
1962
1963-- Deprecation in 1.2.3
1964CREATE AGGREGATE MemGeomUnion (
1965	basetype = geometry,
1966	sfunc = geomunion,
1967	stype = geometry
1968	);
1969
1970-- End Aggregates and supporting functions --
1971------------------------------------------------
1972--Begin 3D functions --
1973------------------------------------------------
1974
1975-- Renamed in 2.0.0 to ST_3DLength
1976CREATE OR REPLACE FUNCTION ST_Length3D(geometry)
1977	RETURNS FLOAT8
1978	AS 'MODULE_PATHNAME', 'LWGEOM_length_linestring'
1979	LANGUAGE 'c' IMMUTABLE STRICT;
1980
1981-- Renamed in 2.0.0 to ST_3DLength_spheroid
1982CREATE OR REPLACE FUNCTION ST_Length_spheroid3D(geometry, spheroid)
1983	RETURNS FLOAT8
1984	AS 'MODULE_PATHNAME','LWGEOM_length_ellipsoid_linestring'
1985	LANGUAGE 'c' IMMUTABLE STRICT
1986	COST 100;
1987
1988-- Renamed in 2.0.0 to ST_3DPerimeter
1989CREATE OR REPLACE FUNCTION ST_Perimeter3D(geometry)
1990	RETURNS FLOAT8
1991	AS 'MODULE_PATHNAME', 'LWGEOM_perimeter_poly'
1992	LANGUAGE 'c' IMMUTABLE STRICT;
1993
1994-- Renamed in 2.0.0 to ST_3DMakeBox
1995CREATE OR REPLACE FUNCTION ST_MakeBox3D(geometry, geometry)
1996	RETURNS box3d
1997	AS 'MODULE_PATHNAME', 'BOX3D_construct'
1998	LANGUAGE 'c' IMMUTABLE STRICT;
1999
2000-- Renamed in 2.0.0 to ST_3DExtent
2001CREATE AGGREGATE ST_Extent3D(
2002	sfunc = ST_combine_bbox,
2003	basetype = geometry,
2004	stype = box3d
2005	);
2006--END 3D functions--
2007