On 22/10/2010 18:59, Martin J. Evans wrote:
I've released a DBD::ODBC requiring Perl 5.8 but included the use of
my_snprintf (from ppport.h) which unfortunately was not defined until
5.9.4. Fair enough, my fault but I have no way of fixing it (other
than reversing my_snprintf back to sprintf) because of the way DBI
includes dbipport.h (alias ppport.h).
In DBI, dbipport.h is a renamed ppport.h generated by Devel::PPPort
and is included from DBIXS.h which all DBDs include - presumably the
idea was to save DBDs from having to keep up to date with ppport.h. In
DBI 1.609, dbipport.h was updated (by H Merijn Brand I think) to the
latest Devel::PPPort 3.19 version but I'm not convinced dbipport.h is
always kept in sync with ppport.h. However, because DBIXS.h includes
dbipport.h as #include "dbipport.h" I cannot override DBI's copy with
a newer version in DBD::ODBC and hence I cannot fix my my_snprintf
issue the way I'd like which is to include with DBD::ODBC a newer
ppport.h as dbipport.h.
In the case reported to me the user has an old DBI pre 1.609 which has
a massively out of date ppport.h and he cannot upgrade DBI but he
cannot install the latest DBD::ODBC. If that #include "dbipport.h" was
changed to #include <dbipport.h> I could at least release a DBD::ODBC
including the latest ppport.h as dbipport.h and the problem is fixed.
I know this won't help today but if this had been done in the past I
would at least have had the option to fix it locally in DBD::ODBC today.
As a result, I'd like to change that include in DBIXS.h to add this
flexibility in the future.
Any objections?
Martin
Given I've had no response to this (other than Tux on #dbi who did not
object) I will make the suggested change in the next few days (I don't
think it hurts but it allows DBDs to override the dbipport.h with a
newer version). However, since DBD::ODBC is broken with older DBIs I'm
going to make the next DBD::ODBC release dependent on DBI 1.609.
The next release of DBD::ODBC (1.26_1 only in subversion soon but not as
yet) has over 200 code block changes to the codebase mostly to a)
complete the move to ODBC 3.0 and require an ODBC Driver Manager and b)
refactor the code to remove redundant code.
My next step is to investigate tracing as I'm having a lot of problems
with people settting the trace level to less than 15 or setting a trace
level for connections which is problematic.
The next development release of DBD::ODBC should be treated with caution
as it contains a huge number of codebase changes. I hope to have this
released in the next week.
Martin