On Thu, 31 Jul 2014 11:01:33 +0200, Luca Mandolesi wrote:
Domanda da 'gnurat: il database che stiamo usando per l'archeologia
(distribuito dentro al plugin pyarchinit per Qgis) fatto in
spatialite, è stato generato ormai 2 anni fa utilizzando spatialite
gui.
Ipotizzando che qualcuno scarichi (speriamo) da Qgis il plugin avrà
il DB "vecchio". Per potergli permettere di usare un DB con
funzionalità nuove devo creare degli update particolari, o
semplicemente aprendo un DB spatialite "vecchio" con una spatialite
GUI recente verranno aggiunte le nuove funzioni?
Ciao Luca,
proviamo a fare un po' di chiarezza:
- il DB-file e' semplicemente un file; dentro ci stanno tutti i
dati, e le relative strutture di supporto.
ma sicuramente non ci sta nessuna funzione; SQLite non e'
PostgreSQL, e pretende che tute le funzioni SQL devono essere
necessariamente implementate in linguaggio C.
- quindi tutte le funzioni SQL con la relativa implementazione
stanno sempre dentro al codice di qualche libreria; per la
precisione tutte quelle "native" (p.es. Max(), Min() etc)
stanno dentro a libsqlite3.
tutte quelle "spatial" (p.es. ST_Intersects(), ST_Area() etc)
invece stanno dentro a mod_spatialite che viene caricato come
ulteriori modulo di estensione dinamica sopra a libsqlite3
conclusione: quando ti connetti ad un qualsiasi DB-file contano
soprattutto le versioni delle librerie che stai usando.
e valgono sempre le seguenti regole, tanto per sqlite quanto
per spatialite:
1) se la versione delle librerie usata in lettura e' successiva
a quella usata per la creazione del DB ci si aspetta che
qualsiasi cambio avvenuto nel frattempo venga sempre gestito
in modo silenzioso e trasparente.
insomma "ha da funziona' comunque"; l'ultimissima 4.2.0
continua ad elaborarti correttamente anche i primissimi
DB di test che accompagnavano la primissima 1.0.0 rilasciata
nell'ormai lontanissimo 2008
2) se invece la versione delle libereria usata in lettura e'
precedente a quella usate per creare iL DB allora puo'
anche acccadere che non funzioni piu' nulla.
ma accade semplicemente perche' nel frattempo e' stata
introdotta qualche nuova caratteristica ignota a tutte
le versioni precedenti.
fortunatamente le versioni che creano ostacoli alla piena
retro-compatibilita' sono abbastanza rare.
p.es. spatialite durante tutta la sua storia ha avuto solo
due episodi di discontinuita':
a) al passaggio tra al 2.3.1 e la 2.4.0 quando vennero finalmente
supportate le geometrie 3D
b) molto piu' recentemente al passaggio tra la 3.1.1. e la
4.0.0 quando e' cambiato il layout delle metatavole per
assicurare una migliore compatibilita' rispetto agli
standard OGC ed ISO/SQL MM
ergo, stai assolutamente tranquillo: se gia' usavi la 4.0
o la 4.1 il passaggio alla 4.2 non ti riservera' nessuna
sorpresa di alcun tipo.
ciao Sandro