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

Reply via email to