On Fri, 30 Nov 2012 16:58:44 +0100, Giuseppe Sucameli wrote:
Hi devs, hi all,

Alessandro Furieri has sent to me a patch to support the features
available from the newest SpatiaLite v4 into the provider, mostly
the intensive use of statistics to improve performaces.


Giuseppe, thanks a lot for your precious collaboration.


@Alessandro: please, could you tell us what's new in
the provider? I know some details, but I'm sure devs would
like to know more.


surely yes:

a) spatialite v4 is now strictly conformant to the most recent
   OGC-SFS and ISO SQL/MM standard requirements.
   unhappily this necessarily implies few compatibility breakages.

b) any recent version of libspatialite starting since 4.0.0 has
   the capability to handle any DB created using any possible
   previous version of the library.
   this happens in a completely transparent way, and the user is
   not required to apply any special precaution at all.
   the full library support is available both on reading and writing,
   and obviously covers the Spatial Index capabilities as well.
   (see below for further details).

c) the opposite isn't true; it's absolutely impossible connecting
   any new DB created using the most recent libspatialite 4.0.0 if
   the underlying library is obsolete (any version < 4.0.0)
   the revised QGIS data-provider will emit an appropriate error
   message in this case (when linked against an obsolete library
   version and attempting to open a DB-file created by a recenter
   version).

d) a new CLI tool is make available in spatialite-tools-4.0.0:
   "spatialite_convert" makes possible safely converting any DB-file
   back and forward between v.2.3.x, v.3.0.x and v.4.0.x
   it doesn't requires a full DB conversions, simply the metadata
   tables are affected, so converting from a version to the the other
   is a really fast process just requiring few seconds even when the
   DB-file is a really huge and complex one.

e) the most recent DB layout supported by v.4.0.0 now supports a full
   set of statistic infos; this is specially useful for QGIS, because
   now the data provider can avoid at all to loose time by "sniffing"
   each layer before connecting.
and this is obviously useful while connecting to some layer containing
   many million feature; the time required by any previous version of
   the QGIS data-provider could require several minutes in this case.
   now, when full v.4.0.0 support is available, just few seconds are
   enough to connect such "huge layers".

f) last but not least: libspatialite v.4.0.0 now supports several API
   methods taking full care to internally handle any metadata table
   (e.g. the ones supporting the internal statistics).
such "abstract" methods are mainly intended to avoid any direct physical
   access from the data-provider itself.
so the data-provider can now completely ignore any fine-grained detail about the version-dependent DB layout; these "abstract API methods" will always implement the most appropriate access strategy to the metadata
   tables for any possible DB layout.
   a strong commitment exist to fully preserve all these "abstract API
   methods": so any future major change affecting the DB layout will be
completely transparent to the QGIS data-provider, and simply upgrading the underlaying libspatialite will be enough to keep anything correctly
   aligned.

g) just a final note: a further "abstract" API method will now support
full deletion of any Geometry table, taking care to remove any possible
   metadata reference and any Spatial Index eventually defined.
as a rule-of-the-thumb, the revised data-provider will continue to work exactly as before when linked against any libspatialite prior to 4.0.0
   but will take full profit of the new "abstract" methods if linked to
   libspatialite v.4.0.0 (or any subsequent).

if you are interested to learn more about these topics, here you can find
the appropriate documentation:
https://www.gaia-gis.it/fossil/libspatialite/wiki?name=switching-to-4.0

bye Sandro

--
Il messaggio e' stato analizzato alla ricerca di virus o
contenuti pericolosi da MailScanner, ed e'
risultato non infetto.

_______________________________________________
Qgis-developer mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to