I am pleased to announce that the current baseline of TDBC,
tagged '1.0b5' and bearing the ID, 46df70f083, is available.
This release includes what I believe to be functionally
complete versions of the TDBC base classes and tokenizer
(matching the versions on the Tcl HEAD), together with the
following three drivers:
tdbc::odbc - A bridge that allows connection to any ODBC-compliant
database. This module builds on Windows, and is
expected to build on any Unix system with the 'unixodbc'
tdbc::sqlite3 - A connector that joins TDBC to SQLite3. This
connector is written in pure Tcl (using the 'sqlite3'
extension), and is expected to run anywhere that
tdbc::mysql - A connector that joins TDBC to MySQL. This connector
demands headers and libraries for MySQL 5.1 or better.
It is all-new C code, not directly derived from Artur
Trzewik's fine 'mysqltcl' binding. It uses the MySQL
prepared statement interface, so it is expected to be
relatively immune to SQL insertion attacks, without
depending on mysql_real_escape_string or relatives.
These modules are all obtainable as as single ZIP archive at
All three of these modules can be built and installed on Unix
with a typical Posix toolchain, and on Windows with msys/mingw.
Obviously, more work needs to be done for TDBC to achieve world
domination. Important further work that is needed:
(1) Revise the 'errorCode' lists returned by the various TDBC
commands to make more sense with Tcl's new [try] command.
This is a fairly mechanical project. Contact me directly
if you're interested in taking it on, and I'll advise about
what needs to be done.
(2) All three of these modules need Makefile.vc, for building
with Visual Studio on Windows systems.
(3) Binary distributions for the various platforms need to be
(4) More drivers are needed! I know that various people over
the last few months have volunteered to work on drivers, but
I haven't been maintaining a registry of who's doing what.
I think that the project Wiki at tdbc.tcl.tk would be a
good place to do that. In particular, people have requested:
- Sql Server native API
and several less popular databases.
(5) Packaging advice is needed from downstream distributors,
particularly as regards the package dependencies. The database
drivers usually have complex dependencies; for instance,
tdbc::sqlite depends at run time on TDBC itself, and on
the 'sqlite3' Tcl extension. (Being a pure Tcl solution,
it has no build-time dependencies.) tdbc::mysql depends
on mysql 1.5 or better (built with threads), and this is
a build-time dependency because it needs #include files
and a link library. Clearly, we don't want to bundle
all the dependencies with Tcl itself.
Bugs and feature requests can be logged at http://tdbc.tcl.tk/
I welcome broader exposure of all three of these modules,
which while still 'experimental', should be considered as
being on track for release.
73 de ke9tv/2, Kevin