[Gfoss] QspatiaLite 5.0.3

a.furieri a lqt.it a.furieri a lqt.it
Gio 26 Gen 2012 15:32:25 CET


On Thu, 26 Jan 2012 14:21:09 +0100, Luca Sigfrido Percich wrote
> Se dopo aver caricato la vista regioni in QGIS ... visualizzi le 
> proprietà del layer, noterai che la colonna nro_prov ha Type vuoto.
> 

e questa e' una delle anomalie / specificita' tipiche
di SQLite :-D
in questo DBMS le colonne non hanno nessun data-type;
le dichiarazioni di data-type hanno solo un mero
valore "cosmetico", ma non hanno nessuna conseguenza
funzionale (tranne che nel caso delle Primary Keys).

quindi l'unico criterio solido ed affidabile per 
determinare il data-type di una colonna e' quello 
di farsi una bella query esplorativa basata sui
valori reali, non sulle dichiarazioni.
e.g. (sempre tornando al solito esempio di prima):

SELECT DISTINCT TypeOf(cod_reg),
  TypeOf(nome_reg), TypeOf(nro_prov)
FROM regioni;

... e ti lascio immaginare la velocita' quando
la tavola contiene svariati milioni di righe :-P

il data-provider SpatiaLite per QGIS prova semplicemente
a determinare il data-type in via speditiva, cioe' 
analizzando la dichiarazione formale della table/view:

PRAGMA table_info(regioni);

ma come puoi facilmente verificare con spatialite_gui,
in questo caso la colonna "nro_prov" non ha nessun
data-type, proprio in quanto corrisponde al risultato
di una funzione di aggregazione.
in altre parole: SQLite e' in grado di andare a
ripescarsi la definizione iniziale della colonna che
appare in una View se la colonna appartiene ad una tavola.
ma se una colonna deriva da un calcolo/espressione e/o 
funzione, allora il data-type resta graziosamente 
indefinito.

e con questo spero di avere soddisfatto almeno alcune
delle tue piu' morbose curiosita' ;-)

ciao Sandro



Maggiori informazioni sulla lista Gfoss