Benjamin,


Explicit casts like "(CAST(SUM(D.QAI) as INTEGER) as n_qai" did not solve my problem.

Yeah, I recently came across a similar issue, and the finding is that it is related to the SQLite version. Such casts apparently work since SQLite 3.42. So if your QGIS build uses an older SQLite version, they won't be honored.

$ ogr2ogr poly.gpkg autotest/ogr/data/poly.shp
$ ogrinfo poly.gpkg -sql "create view v as select fid as ogc_fid, geom, cast(1 as int) as my_int, cast(1 as real) as my_real from poly"

$ LD_LIBRARY_PATH=/home/even/install-sqlite-3.41.0/lib:$LD_LIBRARY_PATH ogrinfo poly.gpkg -al -so | grep my_
my_int: String (0.0)
my_real: String (0.0)

vs

$ LD_LIBRARY_PATH=/home/even/install-sqlite-3.42.0/lib:$LD_LIBRARY_PATH ogrinfo poly.gpkg -al -so | grep my_
my_int: Integer64 (0.0)
my_real: Real (0.0)


This is really a SQLite3 issue as demonstrated by:

$ ~/install-sqlite-3.41.0/bin/sqlite3 poly.gpkg "pragma table_info(v)"
0|ogc_fid|INTEGER|0||0
1|geom|POLYGON|0||0
2|my_int|NUM|0||0
3|my_real|NUM|0||0

vs

$ ~/install-sqlite-3.42.0/bin/sqlite3 poly.gpkg "pragma table_info(v)"
0|ogc_fid|INTEGER|0||0
1|geom|POLYGON|0||0
2|my_int|INT|0||0
3|my_real|REAL|0||0

*However* this only works for TEXT, INTEGER and REAL. As there is no SQLite native DATETIME "affinity" (cf https://www.sqlite.org/datatype3.html), there's no way currently to force view columns to DATETIME


Interestingly, the OGRDataSource::ExecuteSQL does returns correct integer value for COUNT and SUM results. DATE(...) results are returned as STRINGS as well.

with ds.ExecuteSQL('SELECT * FROM ard_data_byTile') as lyr:

yes, that's because in that mode, the GPKG driver uses the value of the first row to infer the data type, but this isn't super bullet proof (particularly if the first row contains NULL values)

Even

--
http://www.spatialys.com
My software is free, but my time generally not.

_______________________________________________
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to