try: RETURN QUERY SELECT 1,1,1,1;
The error message means the cast failed between ttt.fake_topogeometry and the topology_id (i.e. first) field of the return type of the function, which isn't what you wanted to do. Pls. don't cross-post between lists. On 23 October 2013 01:21, Rémi Cura <remi.c...@gmail.com> wrote: > > > Hey dear lists, > > Here is a self contained example showing strange behavior from a real life > example concerning the use of postgis_topology topogeometry type. > > > The problem is : > when trying to return setof topogeometry, > the "return query" gives an error of type where there is none, and the > return next is working fine. > > The precise error message is ERROR 42804 > > "ERROR: structure of query does not match function result type > DETAIL: Returned type ttt.fake_topogeometry does not match expected type > integer in column 1. > CONTEXT: PL/pgSQL function ttt.testtopogeom(ttt.fake_topogeometry) line 9 > at RETURN QUERY > " > > > Is it ok, postres bug, postgis bug? > What are the possible corrections? > > > Here is the self contained code stored in the "ttt" schema. > > > DROP SCHEMA IF EXISTS ttt CASCADE; > CREATE SCHEMA ttt; > > DROP TYPE IF EXISTS ttt.fake_topogeometry CASCADE; > CREATE TYPE ttt.fake_topogeometry AS > (topology_id integer, > layer_id integer, > id integer, > a_type integer); > > DROP FUNCTION IF EXISTS ttt.testTopogeom(test_topom ttt.fake_topogeometry); > CREATE FUNCTION ttt.testTopogeom(test_topom ttt.fake_topogeometry) > RETURNS SETOF ttt.fake_topogeometry AS > $BODY$ > -- this function is an empty function to test return of multiple topogeom > DECLARE > the_topo ttt.fake_topogeometry; > BEGIN > RETURN NEXT (1,1,1,1)::ttt.fake_topogeometry; > --RETURN NEXT (3,3,3,3)::ttt.fake_topogeometry; > > RETURN QUERY SELECT (1,1,1,1)::ttt.fake_topogeometry as foo; > -- UNION > --SELECT (3,3,3,3)::ttt.fake_topogeometry as foo > RETURN ; > END ; > $BODY$ > LANGUAGE plpgsql IMMUTABLE; > > SELECT * > FROM ttt.testTopogeom((2,2,2,2)::ttt.fake_topogeometry); > > > > _______________________________________________ > postgis-users mailing list > postgis-us...@lists.osgeo.org > http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users >