The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 1.17

  • 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.
  • =head2 Changes in DBD::ODBC 1.16 May 13, 2008
  • =head3 Test Changes
  • Small change to the last test in 10handler.t to cope with the prepare failing instead of the execute failing - spotted by Andrei Kovalevski with the ODBCng Postgres driver.
  • Changed the 20SqlServer.t test to specifically disable MARS for the test to check multiple active statements and added a new test to check that when MARS_Connection is enabled multiple active statements are allowed.
  • Changed the 09multi.t test to use ; as a SQL statement seperator instead of a newline.
  • A few minor "use of unitialised" fixes in tests when a test fails.
  • In 02simple.t Output DBMS_NAME/VER, DRIVER_NAME/VER as useful debugging aid when cpan testers report a fail.

Modules

ODBC Driver for DBI

Provides

in ODBC.pm
in ODBC.pm
in ODBC.pm