[GRASS-user] Trouble with v.db.join and sqlite
Glynn Clements
glynn at gclements.plus.com
Sun Jun 1 13:56:52 EDT 2008
Moritz Lennert wrote:
> >>>> those are the steps to replicate the problem with NC dataset ( all is done
> >>>> in a new mapset called sqlite):
> >>>>
> >>>> db.connect driver=sqlite
> >>>> database='$GISDBASE/$LOCATION_NAME/$MAPSET/sqlite.db'
> >>>> g.copy vect=urbanarea at PERMANENT,urbanarea
> >>>> v.extract -t input=urbanarea output=urban_point type=point,centroid
> >>>> v.db.addtable urban_point
> >>>>
> >>>> v.db.join map=urbanarea column=cat otable=urban_point ocolumn=cat
> >>>> ..
> >>>> DBMI-SQLite driver error:
> >>>> Error in sqlite3_prepare():
> >>>> duplicate column name: cat
> >>>>
> >>>> ERROR: Error while executing: 'ALTER TABLE urban_point ADD COLUMN cat
> >>>> INTEGER
> >>>> '
> >>>> ERROR: Cannot continue (problem adding column).
> >>>> ERROR: Cannot continue.
> >>>>
> >>> Like this it was easy to replicated.
> >>> (Hopefully) fixed in 6.4.develbranch and 7.trunk.
> >> Do I understand correctly that the patch ignores the column if the name
> >> already exists ? Wouldn't it be more "user-friendly" to rename it ?
> >
> > I don't know about "user-friendly", but it would be safer to just
> > abort with an error if the column already exists.
> >
> > If you're going to replace the contents of an existing column, you
> > should only do so if --overwrite is given.
>
> I'm not speaking about replacing any content. I'm proposing that if you
> have a column cat in each table, then the second is renamed to something
> like cat2, so that you can have both in the resulting table.
I think that it would be better to just force the user to pick another
name for the ocolumn= option. That way, the user will know what the
column is named.
Also, in a script, silently renaming the output column may result in
the script silently producing bogus results.
More generally, if there's a problem, you tell the user that there's a
problem, not pretend that there isn't a problem.
AFAICT, the only real flaw with the original script is that the
"duplicate column name: cat" error wasn't especially visible.
Other than that, everything happened as it should have done.
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-user
mailing list