It gives me great pleasure to announce the arrival of DBI 1.15:
file: $CPAN/authors/id/T/TI/TIMB/DBI-1.15.tar.gz
size: 192879 bytes
md5: b1e37f03bdbd91451102e1b8e4b093d4
Should reach a CPAN near you in the next day or three.
Changes in DBI 1.15, 28th March 2001
Added selectrow_arrayref
Added selectrow_hashref
Added selectall_hashref thanks to Leon Brocard.
Added DBI->connect(..., { dbi_connect_method => 'method' })
Added $dbh->{Statement} aliased to most recent child $sth->{Statement}.
Added $h->{ShowErrorStatement}=1 to cause the appending of the
relevant Statement text to the RaiseError/PrintError text.
Modified type_info to always return hash keys in uppercase and
to not require uppercase 'DATA_TYPE' key from type_info_all.
Thanks to Jennifer Tong and Rob Douglas.
Added \%attr param to tables() and table_info() methods.
Trace method uses warn() if it can't open the new file.
Trace shows source line and filename during global destruction.
Updated packages:
Updated Win32::DBIODBC (Win32::ODBC emulation) thanks to Roy Lee.
Updated DBD::ADO to much improved version 0.4 from Tom Lowery.
Updated DBD::Sponge to include $sth->{PRECISION} thanks to Tom Lowery.
Changed DBD::ExampleP to use lstat() instead of stat().
Documentation:
Documented $DBI::lasth (which has been there since day 1).
Documented SQL_* names.
Clarified and extended docs for $h->state thanks to Masaaki Hirose.
Clarified fetchall_arrayref({}) docs (thanks to, er, someone!).
Clarified type_info_all re lettercase and index values.
Updated DBI::FAQ to 0.38 thanks to Alligator Descartes.
Added cute bind_columns example thanks to Mark Dedlow.
Extended docs on \%attr arg to data_sources method.
Makefile.PL
Removed obscure potential 'rm -rf /' (thanks to Ulrich Pfeifer).
Removed use of glob and find (thanks to Michael A. Chase).
Proxy:
Removed debug messages from DBD::Proxy AUTOLOAD thanks to Brian McCauley.
Added fix for problem using table_info thanks to Tom Lowery.
Added better determination of where to put the pid file, and...
Added KNOWN ISSUES section to DBD::Proxy docs thanks to Jochen Wiedmann.
Shell:
Updated DBI::Format to include DBI::Format::String thanks to Tom Lowery.
Added describe command thanks to Tom Lowery.
Added columnseparator option thanks to Tom Lowery (I think).
Added 'raw' format thanks to, er, someone, maybe Tom again.
Known issues:
Perl 5.005 and 5.006 both leak memory doing local($handle->{Foo}).
Perl 5.004 doesn't. The leak is not a DBI or driver bug.
A *BIG* ``Thank You'' to all those who have contributed so much to this
release, and a *BIG* apology from me for taking so long to get to it.
I'm obviously accelerating the DBI development program... the previous
release was only nine months ago, which was itself eleven months after the
prior release. I might actually make more than one release this year :)
I still have a pile of emails I've saved refering to things I want to
do soon. This release is to get the ball rolling again and get the most
important (and/or easy :) things out quickly. So don't shout if you
don't see a change above that you were expecting. Save that for the
next release...
I'll be doing some work on DBD::Oracle next, catching up with another
big pile of outstanding issues and patches, then Oracle::OCI and DBI again.
FEATURE PREVIEW: Scott Hildreth is working for me on some generic SQL
pre-parsing code in C that'll eventually be used by the driver inplace
of their own pre-parsers. What's a pre-parser? Well it's the bit of
code that reads the SQL statement and counts the placeholders while
ignoring comments etc. The beauty of using common code for this is
that it'll enable a whole bunch of valuable SQL portability features.
The big one being parsing and rewriting of ODBC escape sequences.
What's that? Well, consider the various date formats different DBs use..
select * from table where datefield = '30/3/2001' -- DBD::Foo
select * from table where datefield = '30 MAR 01' -- DBD::Bar
At some point in the future, once DBI and some drivers have been
updated, you'll be able to write:
select * from table where datefield = {d '2001-03-30'}
or
select * from table where datefield = {d ?}
and the DBI pre-parsing code, under the control of the driver, will
rewrite the {d...} escape sequence into whatever SQL statements are
required to parse that ODBC-standard date format (eg to_date(...) for
Oracle and nothing at all for MySQL). That's how ODBC drivers do it
now, and that's what the DBI will make possible soon.
Tim.