[GRASS-dev] v.dissolve fails with sqlite driver

Markus Neteler neteler at itc.it
Wed May 16 08:28:34 EDT 2007


It is v.reclass which fails:

...
+ v.reclass input=myquads output=myquads_18985 layer=1 column=name
DBMI-SQLite driver error:
Cannot step:
SQL logic error or missing database

FEHLER: Cannot fetch data
+ v.extract -d input=myquads_18985 output=myquads_diss type=area layer=1
...

Concerning constraint
v.db.select myquads
cat|name
1|hello
2|hello

Doing the same with PG driver, it works (also DBF). So it is a problem
in the SQLite driver.

Markus

PS: In below test procedure, it should be
     g.copy vect=quads at PERMANENT,myquads --o
of course

On Tue, May 15, 2007 at 03:56:46PM -0500, Daniel Calvelo wrote:
> Try to run v.dissolve with a 'set -x' to see whether v.extract or
> v.reclass is to blame. A hunch could be an unique constraint not
> satisfied in the index creation.
> 
> Daniel.
> 
> On 5/15/07, Markus Neteler <neteler at itc.it> wrote:
> >
> >Hi,
> >
> >so far the SQLite driver worked fine for me (after the various fixes) but 
> >it
> >fails
> >for v.dissolve with a problem which I don't understand:
> >
> ># Spearfish, create new "sqlite" mapset:
> >
> >db.connect driver=sqlite
> >database='$GISDBASE/$LOCATION_NAME/$MAPSET/sqlite.db'
> >g.copy vect=quads at neteler,myquads --o
> >v.db.connect -p myquads
> >
> ># add table with char column:
> >v.db.addtable myquads col="name varchar(10)"
> ># populate with something
> >v.db.update myquads col=name val="hello"
> >v.db.select myquads
> >
> ># dissolved based on varchar column:
> >v.dissolve myquads out=myquads_diss col=name
> >...
> >DBMI-SQLite driver error:
> >Cannot step:
> >SQL logic error or missing database
> >
> >ERROR: Cannot fetch dataa
> >...
> >
> >
> >Going into details:
> >
> >g.gisenv set=DEBUG=3
> >D3/3: db_start_driver_open_database():
> >  drvname = sqlite, dbname =
> >/home/neteler/grassdata/spearfish60/sqlite/sqlite.db
> >D2/3: opendir
> >/home/neteler/soft/63grass_cvsexp/dist.i686-pc-linux-gnu/driver/db/
> >
> >D3/3:
> >db_driver_open_database()
> >D3/3: name = '/home/neteler/grassdata/spearfish60/sqlite/sqlite.db'
> >D2/3: name2 = '/home/neteler/grassdata/spearfish60/sqlite/sqlite.db'
> >D3/3:   SQL: SELECT cat, name FROM myquads ORDER BY name
> >D3/3: Escaped SQL: SELECT cat, name FROM myquads ORDER BY name
> >D3/3: describe_table()
> >D3/3: ncols = 2
> >D3/3: litetype = 1
> >D3/3: litetype = 3
> >D3/3: nkcols = 2
> >D3/3: litetype = 1
> >D2/3: col: cat, nkcols 0, litetype : 1, sqltype 3
> >D3/3: litetype = 3
> >D2/3: col: name, nkcols 1, litetype : 3, sqltype 13
> >D3/3:   2 rows selected
> >D3/3:   key type = 15
> >D3/3: execute: create table myquads_9293 (cat integer, name varchar(255))
> >D3/3: db__create_index()
> >D3/3:  SQL: create unique index myquads_9293_cat on myquads_9293 ( cat )
> >D3/3: fetch row = -1
> >DBMI-SQLite driver error:
> >Cannot step:
> >SQL logic error or missing database
> >
> >ERROR: Cannot fetch data
> >D3/3: Mapset = sqlite
> >...
> >
> >The problem is in db/drivers/sqlite/fetch.c
> >Any ideas?
> >thanks,
> >Makus
> >--
> >View this message in context: 
> >http://www.nabble.com/v.dissolve-fails-with-sqlite-driver-tf3760326.html#a10628682
> >Sent from the Grass - Dev mailing list archive at Nabble.com.
> >
> >_______________________________________________
> >grass-dev mailing list
> >grass-dev at grass.itc.it
> >http://grass.itc.it/mailman/listinfo/grass-dev
> >
> 
> 
> -- 
> -- Daniel Calvelo Aros

-- 
Markus Neteler  <neteler itc it>  http://mpa.itc.it/markus/
FBK-irst -  Centro per la Ricerca Scientifica e Tecnologica
MPBA - Predictive Models for Biol. & Environ. Data Analysis
Via Sommarive, 18        -       38050 Povo (Trento), Italy




More information about the grass-dev mailing list