I have uploaded DBD::ODBC 1.17 to CPAN and it should appear on mirrors in the next few days. This is a major release of DBD::ODBC with major advancements in unicode handling and a plethora of other changes. Please see below for a list of changes since 1.16. Thanks to all who contributed and as always to cpan-testers.

=head2 Changes in DBD::ODBC 1.17 September 22, 2008

In the absence of any bug reports since 1.16_4 this is the official
1.17 release. See below for changes since 1.16.

Minor pod changes.

=head2 Changes in DBD::ODBC 1.16_4 September 12, 2008

Small change to Makefile.PL to work around problem in darwin 8 with
iODBC which leads to "Symbol not found: _SQLGetPrivateProfileString"
errors.

Added new [n]varXXX(max) column type tests to 20SqlServer.t.

Fixed support for SQL_WCHAR and SQL_WVARCHAR support in non-unicode
build. These types had ended up only being included for unicode
builds.

More changes to ODBC pod to 1) encourage people to use CPAN::Reporter,
2) rework contributing section, 3) mention DBIx::Log4perl 4) add a
BUGS section 5) add a "ODBC Support in ODBC Drivers" section etc.

Changed default fallback parameter bind type to SQL_WVARCHAR for
unicode builds. This affects ODBC drivers which don't have
SQLDescribeParam. Problem reported by Vasili Galka with MS Access when
reading unicode data from one table and inserting it into another
table.  The read data was unicode but it was inserted as SQL_CHARs
because SQLDescribeParam does not exist in MS Access so we fallback to
either a default bind type (which was SQL_VARCHAR) or whatever was
specified in the bind_param call.

Fixed bug in 20SqlServer.t when DBI_DSN is defined including "DSN=".

=head2 Changes in DBD::ODBC 1.16_3 September 3, 2008

Changed Makefile.PL to add "-framework CoreFoundation" to linker line on
OSX/darwin.

Disallow building with iODBC if it is a unicode build.

More tracing for odbcconnect flag.

Fix bug in out connection string handling that attempted to use an out
connection string when SQLDriverConnect[W] fails.

Fixed yet more test count problems due to Test::NoWarnings not being
installed.

Skip private_attribute_info tests if DBI < 1.54

About a 30% rewrite of bound parameter code which started with an
attempt to support the new VARBINARY(MAX) and VARCHAR(MAX) columns in
SQL Server when the parameter length is > 400K in size (see elsewhere
in this Changelog). This is a seriously big change to DBD::ODBC to
attempt to be a bit more clever in its handling of drivers which
either do not support SQLDescribeParam or do support SQLDescribeParam
but cannot describe all parameters e.g., MS SQL Server ODBC driver
cannot describe "select ?, LEN(?)". If you specify the bound parameter
type in your calls to bind_param and run them to an ODBC driver which
supports SQLDescribeParam you may want to check carefully and probably
remove the parameter type from the bind_param method call.

Added rt_38977.t test to test suite to test varchar(max) and
varbinary(max) columns in SQL Server.

Moved most of README.unicode to ODBC.pm pod.

Added workaround for problem with the Microsoft SQL Server driver when
attempting to insert more than 400K into a varbinary(max) or
varchar(max) column. Thanks to Julian Lishev for finding the problem
and identifying 2 possible solutions.

=head2 Changes in DBD::ODBC 1.16_2 September 2, 2008

Removed szDummyBuffer field from imp_fbh_st and code in dbd_describe
which clears it. It was never used so this was a waste of time.

Changed the remaining calls to SQLAllocEnv, SQLAllocConnect and
SQLAllocStmt and their respective free calls to the ODBC 3.0
SQLAllocHandle and SQLFreeHandle equivalents.

Rewrote ColAttributes code to understand string and numeric attributes
rather than trying to guess by what the driver returns. If you see any
change in behaviour in ColAttributes calls you'll have to let me know
as there were a number of undocumented workarounds for drivers.

Unicode build of DBD::ODBC now supports:

=over

=item column names

The retrieval of unicode column names

=item SQL strings

Unicode in prepare strings (but not unicode parameter names) e.g.,

  select unicode_column from unicode_table

is fine but

  select * from table where column = :unicode_param_name

is not so stick to ascii parameter names if you use named parameters.

Unicode SQL strings passed to the do method are supported.

SQL strings passed to DBD::ODBC when the odbc_exec_direct attribute
is set will B<not> be passed as unicode strings - this is a limitation of
the odbc_exec_direct attribute.

=item connection strings

True unicode connection string support will require a new version
of DBI (post 1.607).

B<note> that even though unicode connection strings are
not supported currently DBD::ODBC has had to be changed to call
SQLDriverConnectW/SQLConnectW to indicate to the driver manager it's
intention to use some of the ODBC wide APIs. This only affects DBD::ODBC
when built for unicode.

=item odbcunicode trace flag

There is a new odbcunicode trace flag to enable unicode-specific
tracing.

=back

Skipped 40Unicode.t test if the ODBC driver is Oracle's ODBC as I
cannot make it work.

Changes internally to use sv_utf8_decode (where defined) instead of
setting utf8 flag.

Fix problems in the test when Test::NoWarnings is not installed.

Removed some unused variables that were leading to compiler warnings.

Changed a lot of tracing to use new odbcconnection flag

Changed to use dbd_db_login6_sv if DBI supports it.

Commented out a diag in 20SqlServer.t that was leading to confusion.

Added diag to 20SqlServer.t in mars test to explain why it may fail.

Various pod changes for clarification and to note odbc_err_handler is
deprecated.

Removed odbcdev trace flag - it was not really used.

New odbc_out_connect_string attribute for connections which returns
the ODBC driver out connection string.

=head2 Changes in DBD::ODBC 1.16_1 August 28, 2008

Fixed bug in odbc_cancel which was checking the ACTIVE flag was on
before calling SQLCancel. Non-select statements can also be cancelled
so this was wrong. Thanks to Dean Arnold for spotting.

Minor changes to test 01base to attempt to catch install_driver
failing, report it as a fail and skip other tests.

Fixed bug reported by James K. Lowden with asynchronous mode and
SQLParamData where the code was not expecting SQL_STILL_EXECUTING and
did not handle it

Added odbc_putdata_start attribute to determine when to start using
SQLPutData on lobs.

Fixed bug in lob inserts where decimal_digits was being set to the
size of the bound lob unnecessarily.

Minor change to connect/login code to delete driver-specific attributes
passed to connect so they do not have to be processed again when DBI
calls STORE with them.

New 12blob.t test.

A lot of code tidy up but not expecting any real benefit or detriment
when using DBD::ODBC.

Fixed retrieving [n]varchar(max) columns which were only returning 1
byte - thanks to Fumiaki Yoshimatsu and perl monks for finding it.
See http://markmail.org/message/fiym5r7q22oqlzsf#query:Fumiaki Yoshimatsu odbc+page:1+mid:fiym5r7q22oqlzsf+state:results

Various minor changes to get the CPANTS kwalitee score up.
  fixed pod issues in FAQ.pm
  moved mytest dir to examples
  added generated_by and requires perl version to META.yml
  added pod and pod-coverage tests
  removed executable flag from Makefile.PL
  added use warnings to some modules and tests
  fixed pod errors in ODBC.pm
  added AUTHOR and LICENSE section to ODBC.pm
  added Test::NoWarnings to tests

Added support for setting the new(ish) DBI ReadOnly attribute on a
connection. See notes in pod.

Changes to test suite to work around problems in Oracle's instant
client 11r1 ODBC driver for Linux (SQLColAttributes problems - see
02simple.t).

New tests in 30Oracle.t for oracle procedures.

Martin
--
Martin J. Evans
Easysoft Limited
http://www.easysoft.com

Reply via email to