Changes between Initial Version and Version 1 of SqliteVersions

Mar 11, 2010, 12:32:28 PM (10 years ago)



  • SqliteVersions

    v1 v1  
     1= SQLite Versions =
     3'''Our code must be compatible with SQLite 3.3.4''' which was released in
     4February 2006. That means we can't use any of the features added since then,
     5such as --
     7 * virtual tables (3.3.7)
     8 * full text search (3.3.8)
     9 * `IF EXISTS` on `CREATE/DROP VIEW` (3.3.8)
     10 * `randomblob()` and `hex()` (3.3.13)
     11 * `SUBSTR()` 3rd param becomes optional (3.5.2)
     12 * `group_concat() ` (3.5.4)
     13 * foreign key constraints (3.6.19)
     17== The Background ==
     19Many C-based libraries are dynamically loaded at runtime, and SQLite can
     20be too. However, it's quite small and so can be statically linked into
     21applications. In fact, that's a very typical usage scenario for SQLite.
     23The source distribution of Python >= 2.5 ships with SQLite ''bindings''.
     24That means that Python knows how to talk to SQLite if it is present,
     25but SQLite itself is not "baked in".
     27When Python is built from source (as I've done on my Mac),
     28if it finds a statically-linkable SQLite library, it will statically link it
     29into the Python exectuable. If a statically-linkable library isn't present, it
     30will attempt to load it dynamically at runtime. If
     31neither is present, Python won't be able to read/write SQLite databases.
     32(On the Mac, this isn't a practical concern since a dynamically loadable
     33SQLite library ships as part of the operating system.)
     35Most Linux and especially Windows users don't build Python from source.
     36Linux users usually get a precompiled Python from their package manager
     37and Windows users usually download the `.msi` from `` or use
     38a precompiled distribution from Enthought or !ActiveState. In all of the
     39Pythons I've checked from these sources, SQLite is "baked in". That's
     40very convenient for the user, but for us it also means that
     41'''the SQLite version is tied to the Python version'''.
     43Therfore, the oldest SQLite version we must support is whatever is in
     44the oldest Python we support, and that's Python 2.5.0. The SQLite in that
     45Python is 3.3.4.
     47== SQLite Verions in Various Distributions ==
     49||'''Operating System'''||Python Version'''||'''SQLite Version'''||
     50||Windows XP||'s 2.5.0|| 3.3.4||
     51||Windows XP||'s 2.5.4|| 3.3.4||
     52||Windows XP||Enthought 2.5.4|| 3.3.4||
     53||Ubuntu 8.04||2.5.2|| 3.4.2||
     54||Ubuntu 8.10||2.5.2|| 3.5.9||
     55||Max OS 10.5||2.5.1|| 3.4.0||