I have almost been able to answer all of my questions:
Martin Evans wrote:
Hi,
I am almost finished a number of changes to DBD::ODBC which a) make it
work on win64 platforms and b) reduce the number of ODBC calls required
for select statements. I would like to tidy up some of DBD::ODBC which
may have fallen behind DBI::DBD changes/improvements but I am having
some difficulty deciding what is old/deprecated and what the new
"methods" are. Specifically:
o can I now throw away any DBIh_EVENT2 calls as they are now noops?
e.g. DBIh_EVENT2(drh, ERROR_event, DBIc_ERR(imp_drh),
DBIc_ERRSTR(imp_drh));
Should have pointed out I had read DBI::DBD about this but as I do not
know what DBIh_EVENT2 did I do not know if it is a simple delete these
calls or replace with something else.
o in the connect/login method how do I signal a warning?
Specifically, I have changed the code which required two passes through
the same metadata calls to work out how much memory was required to
store column names to use SQLGetInfo(SQL_MAX_COLUMN_NAME_LEN) but would
like to warn if this result used was pinned at what I have decided is a
reasonable maximum.
I found the following in a post on dbi-dev back in April
DBIh_SET_ERR_CHAR (h, imp_xxh, "0", 0, what)
I should point out I needed to add a couple of Nullch args added to the
end as the macro DBIh_SET_ERR_CHAR needs 7 args.
This works. Out of interest, the set_err docs also say setting err to ""
is an informational state. Under what conditions do/can you see those?
Obviously I've looked at DBI::DBD but it seems more orientated to
writing a new DBD than historical changes in DBI internals.
Are there any other changes in DBI::DBD that DBD::ODBC may have fallend
behind on I should look for?
Any help would be much appreciated.
Martin
In the same post referred to above I found a number of comments from Tim
about DBD::mysql some of them may seem to apply to DBD::ODBC too (see
http://www.mail-archive.com/[email protected]/msg04725.html). Specifically:
"DBIc_ERR and DBIc_ERRSTR, and DBIc_STATE should not be set directly."
which DBD::ODBC seems to do quite a bit:-(
Martin
--
Martin J. Evans
Easysoft Limited
http://www.easysoft.com