New test release 1.16_3 of DBD::ODBC



This is hopefully the last test release of DBD::ODBC before 1.17. Other than fix any bugs people find I won't be making any other changes. The changes in 1.16 series development releases can be found below. Note this is most likely the largest set of changes in DBD::ODBC since the very early days. If you use DBD::ODBC you are well advised to test this release and report back here with problems. If I get no negative feedback I will release this as 1.17 next week.

You can find the release on CPAN (when it works it way through) or at:
ftp://ftp.easysoft.com/pub/DBD-ODBC-1.16_3.tar.gz

=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
.



Relevant Pages

  • Re: DBD::ODBC and character sets
    ... perl script is utf-8? ... FreeTDS. ... There is no Unicode option for FreeTDS. ... application calls the Wide functions and the driver has the Wide ...
    (perl.dbi.users)
  • Re: DBD::ODBC and character sets
    ... perl script is utf-8? ... FreeTDS. ... There is no Unicode option for FreeTDS. ... application calls the Wide functions and the driver has the Wide ...
    (perl.dbi.users)
  • New release 1.17 of DBD::ODBC
    ... This is a major release of DBD::ODBC with major advancements in unicode handling and a plethora of other changes. ... Fixed support for SQL_WCHAR and SQL_WVARCHAR support in non-unicode ... Fix bug in out connection string handling that attempted to use an out ... but cannot describe all parameters e.g., MS SQL Server ODBC driver ...
    (perl.dbi.users)
  • Re: Cannot display ODBC login prompt - want to connect without DSN
    ... database without knowing anything beforehand except the driver name. ... need a connection string and different data sources use different connection ... ODBC, ADO, and VB Script. ...
    (microsoft.public.dotnet.framework.adonet)
  • Re: DSN-less connection for Informix database
    ... Is there a way to find out the ODBC driver version on the client ... on is having to SETUP an odbc connection profile .. ... in your connection string, replace the DNS=jaco ... ...
    (microsoft.public.dotnet.languages.vb)

Loading