Конкретный пример: 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;