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