[QGIS-it-user] tipo di campi espressione in viste geopackage

francesco marucci francesco.marucci a gmail.com
Lun 9 Dic 2019 08:42:13 PST


gentile lista,
ho un piccolo problema che però non riesco a risolvere:
all'interno di un geopackage ho creato una vista, nella quale ho generato
un campo con una espressione (tipicamente un count(*) as tot_comuni, per
fare un esempio);

il problema è dato dal fatto che questo campo, proveniente da una
espressione, in SQLITE non ha un tipo (pur avendo provato tutti i cast del
mondo), come leggo da qui:
https://www.sqlite.org/datatype3.html

   - 3.2 Affinity Of Expressions: "... Otherwise, an expression has no
   affinity."
   - 3.3 Column Affinity For Views And Subqueries: ... "expressions always
   have no affinity".

infatti un:
pragma table_info([mia_tabella]);

restituisce:

0 gid INTEGER 0 0
1 geom MULTIPOLYGON 0 0
2 nome TEXT(58) 0 0
3 tot_comuni 0 0

(cioè il campo tot_comuni non ha tipologia)

e fin qui sembra un problema di SQLITE: tale problema però si ripercuote in
QGIS in quanto il campo viene visto come un Qstring (pur contenendo
solamente degli interi) e quindi ad esempio non posso costruire una legenda
graduata basata su questo campo (cosa assai spiacevole).
un workaround potrebbe essere quello di riconoscere il tipo di campo,
invece di assegnargli un Qstring se il tipo non è presente nel pragma,
magari leggendo il valore del primo record, come suggerito qui (in ambiente
java però):
https://stackoverflow.com/questions/54480436/how-to-get-sqlite-column-types-from-view-columns

nel caso specifico sono in QGIS 3.4.10 sia deb che win, SQLITE 3.26.0.

che ne pensate?
apro un ticket?

grazie.

saluti,
francesco
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.osgeo.org/pipermail/qgis-it-user/attachments/20191209/c983df75/attachment.html>


Maggiori informazioni sulla lista QGIS-it-user