SpatiaLite 2.4.0 ReleaseCandidate-3a [2010-08-15] work in progress

back to main page

About SQLite 3.7.0.1

This latest SQLite version is now supporting WAL [Write-Ahead-Logging]
This one is a very interesting (and powerful) feature. Anyway it introduces several substantial changes.
You must be consciuous of potential compatibility issues when using oldest SQLite's versions. Just few quick hints:
  • by default the old-styled logfile is used
  • you must explicitly set up WAL: PRAGMA journal_mode=WAL
  • when a DB is in WAL-mode it cannot be accessed using any previous SQLite's version
  • you can easily re-establish a complete back-compability: PRAGMA journal_mode=DELETE
WAL-mode seems to offer some substantial speed-up, most notably when writing.
This is widely dependent on the underlying platform: it surely happens on Windows, but not on Linux or MacOsX (or not on the same extent).
Anyway SQLite 3.7.0.1 seems to be really faster than any previous version, even when using the tradition journal-file mode.

The biggest improvement deriving from using WAL is in that SQLite can now safely support concurrent access:
  • only one single process/thread at each time can access the DB for writing (as before)
  • but now any other different process/thread can perform simultaneous reads:
    no "database is locked" errors are raised when WAL-mode is activated.
Further reading: SQLite's own WAL documentation
SpatiaLite DB self initialization

SpatiaLite doesn't requires any longer to manually initialize a newly created DB.
Now SpatiaLite is smart enough to self initialize any DB. This practically means that:
  • the geometry_columns and spatial_ref_sys tables will be silently created
  • the complete EPSG dataset will be automatically loaded
So, there is no further need to manually load the init-script in order to initialize the DB.
This new feature has been introduced into every spatialite-tool (i.e. spatialite, spatialite_osm and so on).
Build system / pre-built binaries

Be aware: the build system has been updated.
  • ./configure now will test if any required header file and library is already installed.
  • ./configure now will only build dynamically linked executables:
    • if you whish to build statically linked executables instead, you must now use the appropriate Makefile
    • Makefile-static-MinGW, Makefile-static-Linux and Makefile-static-MacOsX are distributed within the sources.
    • Please note: may well be that on some specific platform you must manually hack the Makefile by yourself:
      the Linux word actually stands for: "it works on Debian Lenny for sure; on different distros, who can say ?"

The spatialite-gui tool now requires an absolutely standard wxWidgets (no odd features are any longer required).
This practically means that you can safely build on Linux using the pre-packaged wxWidgets supported by your specific distro.


Windows pre-built binaries: Windows is a messy and cahotic platform.
Accordingly to this, pre-built binaries still continue to adopt static linkage.
[no DLLs are required, thus widely simplifying installation, exactely as before].


MacOsX pre-built binaries: the same as for Windows.
static linkage, as in any previous version.


Linux pre-built binaries: learning from previous releases.
Achieving a fully static linkage on this platform seems to be not possible at all. Too much distros, too much versions.

On the other side, it's true that building executables from scratch (i.e. starting from sources)
always is a really plain and easy task on any Linux distro at your choice.
Accordingly to the above considerations, the pre-built Linux binaries works for sure on Debian Lenny.

On different distros they may work, ok may not.
If they don't work, for one reason or another ... I'm sorry, you must perform a build by yourself:
Download the relevant sources, open a shell and then simply type:
./configure
make
sudo make install


back to main page