Конкретный пример: UMN MapServer 5.6.2. При подключении к БД использует конструкции вида
Код: Выделить всё
encode(AsBinary(force_collection(force_2d("the_geom")),'NDR'),'hex') as geomЧто бы вернуть функции, нужно воспользоваться файлом legacy.sql. Вот здесь приведен его исходный код, компилированная версия заменяет 'MODULE_PATHNAME' на конкретный путь. Как правило, он такой - '$libdir/postgis-2.0'. Можно запустить как весь файл, так и выбрать только нужные функции. Для UMN MapServer:
Код: Выделить всё
CREATE OR REPLACE FUNCTION Force_2d(geometry)
	RETURNS geometry
	AS '$libdir/postgis-2.0', 'LWGEOM_force_2d'
	LANGUAGE 'C' IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION Force_Collection(geometry)
	RETURNS geometry
	AS '$libdir/postgis-2.0', 'LWGEOM_force_collection'
	LANGUAGE 'C' IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION AsBinary(geometry,text)
	RETURNS bytea
	AS '$libdir/postgis-2.0','LWGEOM_asBinary'
	LANGUAGE 'C' IMMUTABLE STRICT;В списке рассылки Paul Ramsey предлагает такую конструкцию:
Код: Выделить всё
CREATE OR REPLACE FUNCTION force_2d(geography)
	RETURNS geometry
	AS 'select force_2d(geometry($1))'
	LANGUAGE 'sql' IMMUTABLE STRICT;
