Just now I installed the newest versions of DBD::SQLite v1.05 (3.06) and DBD::SQLite2 v0.33 (2.8.15). They both tested and installed with no problems, along with DBI v1.43 and Perl v5.8.5, all using GCC 3.3 on Mac OS X 10.2.8.

However, this SQLite v2 and SQLite v3 can not be used simultaneously as they have symbol conflicts. The one flagged was _sqlite_busy_timeout, but from a quick scan of the offending files there seem to be more conflicts. It all looks like a number of 'sqlite' not being changed to 'sqlite3'.

Since the libraries are dynamically linked, you only encounter the problem when trying to dynamically load both of them. Loading just one or the other is fine, doing them both results in an error, no matter which order they are loaded, following the second one. Below this email I give the exact error in a simplest reproduction case.

I'm not sure if this problem is in the SQLite core or in the Perl bindings. Has anyone tried to dynamically link the cores both SQLite versions into the same single C program; did similar problems come up?

Matt, please publish a newer DBD::SQLite as soon as you can get the pair to pass the following simple test without errors: "use DBD::SQLite2; use DBD::SQLite;"; that's also a good test for any subsequent releases.

Note that I tried searching the source code for "_sqlite_busy_timeout" but that only appears in the .o files following compilation; I don't know what names in the source files correspond to those, since they obviously were transformed.

Since I don't know whether the problem is in the core or in the Perl bindings, should I file a ticket on SQLite.org for this?

Thank you. -- Darren Duncan

------------------

[S0106000393c33758:Documents/Perl Distributions/devworld] darrenduncan% ../perl58
use DBD::SQLite2;
use DBD::SQLite;
dyld: ../perl58 multiple definitions of symbol _sqlite_busy_timeout
/Volumes/Programming/Perl/lib/perl5/site_perl/5.8.5/darwin/auto/DBD/SQLite2/SQLite2.bundle definition of _sqlite_busy_timeout
/Volumes/Programming/Perl/lib/perl5/site_perl/5.8.5/darwin/auto/DBD/SQLite/SQLite.bundle definition of _sqlite_busy_timeout
Trace/BPT trap
[S0106000393c33758:Documents/Perl Distributions/devworld] darrenduncan% ../perl58
use DBD::SQLite;
use DBD::SQLite2;
dyld: ../perl58 multiple definitions of symbol _sqlite_busy_timeout
/Volumes/Programming/Perl/lib/perl5/site_perl/5.8.5/darwin/auto/DBD/SQLite/SQLite.bundle definition of _sqlite_busy_timeout
/Volumes/Programming/Perl/lib/perl5/site_perl/5.8.5/darwin/auto/DBD/SQLite2/SQLite2.bundle definition of _sqlite_busy_timeout
Trace/BPT trap

Reply via email to