[GRASS-user] Trouble with v.db.join and sqlite

Moritz Lennert mlennert at club.worldonline.be
Sun Jun 1 05:05:24 EDT 2008


On 30/05/08 22:03, Glynn Clements wrote:
> Moritz Lennert wrote:
> 
>>>>> can you replicate this with Spearfish or the NC data set?
>>>>> Then we could easier test things...
>>>>>
>>>>> Markus
>>>>>
>>>>>
>>>> Hi Markus,
>>>>
>>>> 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.
>>>>
>>>> Thanks for your help
>>> 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.

Moritz


More information about the grass-user mailing list