[Gfoss] Spatialite e limite di parametri in una singola query

a.furieri a lqt.it a.furieri a lqt.it
Lun 22 Set 2014 19:07:16 CEST


On Sun, 14 Sep 2014 11:03:11 +0200, Luca Mandolesi wrote:
> Unica problema รจ proprio lato SQlite che mi pone un limite di 999
> parametri ricercabili contemporaneamente.
>

dalla doc ufficiale di SQLite [1]

SQLite allocates space to hold all host parameters between 1 and the
largest host parameter number used. Hence, an SQL statement that 
contains
a host parameter like ?1000000000 would require gigabytes of storage.
This could easily overwhelm the resources of the host machine.
To prevent excessive memory allocations, the maximum value of a host
parameter number is SQLITE_MAX_VARIABLE_NUMBER, which defaults to 999.

[1] http://www.sqlite.org/limits.html

> Non uso il metodo interno delle QT ma passo per SQLalchemy che mi
> permette di dialogare con postgres e sqlite senza cambiare nulla.
>

evidentemente SQLalchemy macina il tutto internamente in modo
tale da utilizzare i parametri posizionali, e quindi va a sbattere
sul limite duro dei 999 max.

se tu avessi usato direttamente le API standard di SQLite senza
ulteriori intermediari suppongo che il problema non si presenterebbe
affatto, visto che nei tuoi snippets SQL non riesco a vedere
traccia di parametri posizionali.
ed in questo caso il limite max. di SQLite e' che uno statement
SELECT non puo' essere piu' lungo di 1 milione di bytes

ad ogni buon conto: SQLite e' estremamente configurabile.
se ti ricompili "a manina" libsqlite3 puoi modificarti tutte queste
impostazioni come meglio preferisci.

ciao Sandro


Maggiori informazioni sulla lista Gfoss