[pgrouting-users] ultimate solution to assign_vertex_id() bug :-)

realylz realylz at 126.com
Tue Oct 4 19:26:32 EDT 2011


Description:
CREATE TABLE will create implicit sequence "vertices_tmp_id_seq" for serial column "vertices_tmp.id" CONTEXT: SQL statement "CREATE TABLE vertices_tmp (id serial)" PL/pgSQL function "assign_vertex_id" line 21 at EXECUTE statement ERROR: relation "baharestan.roads" does not exist CONTEXT: SQL statement "SELECT count(*) as countids FROM "baharestan.roads"" PL/pgSQL function "assign_vertex_id" line 28 at FOR over EXECUTE statement 

sorry for my poor english:

I read plpgsql program of assign_vertex_id in pgAdminIII and find a bug,there are three lines like followed:
...
FOR _r IN EXECUTE 'SELECT srid FROM geometry_columns WHERE f_table_name='''|| quote_ident(geom_table)||''';' LOOP
 srid := _r.srid;
    END LOOP;
...

there is something wrong with "quote_ident(tablename)",this command will add " around tablename, just like    quote_ident(tablename) <=> "tablename"
However, the above condition, program should modified to:
...
FOR _r IN EXECUTE 'SELECT srid FROM geometry_columns WHERE f_table_name='''|| geom_table||''';' LOOP
 srid := _r.srid;
    END LOOP;
...
 
that's because there are  ' around tablename, there will be error with '"tablename"' instead of 'tablename'.

ok! with above the little modification, there will be no error with assign_vertex_id() :-)

YuLongzhen
266061 Qingdao, China.
realylz at 126.com 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/pgrouting-users/attachments/20111005/065942ad/attachment.html


More information about the Pgrouting-users mailing list