[postgis-devel] Status of shp2pgsql-core/shp2pgsql?

Mark Cave-Ayland mark.cave-ayland at siriusit.co.uk
Sun Apr 12 14:32:32 PDT 2009

Paul Ramsey wrote:

> Just guts. I didn't have the guts to ditch the old one when I put in
> the new ones. Mostly because the workflow of the new ones is slightly
> more complicated, to allow for the GUI to keep it's display thread in
> place as work runs.
> I can flip over to the new core and re-name shp2pgsql-cli to shp2pgsql.

Righto, I've had a look at this and I think that the API needs some work 
  before we can implement the switch.

Firstly, we should change the shp2pgsql core so that instead of using 
#ifdef PGUI... #endif to determine whether not to return a string or 
output to stdout, we should always return a string. Then it is up to the 
CLI or GUI application to use the string and free it when appropriate.

Secondly, the LoadData() function is not setup in a way which is helpful 
for clients making use of the API. I'm thinking perhaps it should be 
re-factored along the following lines so that the main loop of the 
command line and the GUI look something like this:

count = LoadDataFirst();
while ( i < count )
	string = LoadDataNext();

So LoadDataFirst() would output any relevant headers and return a count 
of the total number of rows in the shapefile, while LoadDataNext() would 
return a string containing the output row. If the main loop of the 
command line and GUI tool can be refactored in this way, then it should 
be possible to add an event handler somewhere in there so that the GUI 
can process events and hence prevent the freezing Paul has mentioned 
before. Does this sound reasonable to everyone?



Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
t: +44 870 608 0063

More information about the postgis-devel mailing list