/perl/vendor/lib/DBD/ODBC/Changes.pm
http://github.com/dwimperl/perl-5.12.3.0 · Perl · 2158 lines · 1832 code · 326 blank · 0 comment · 135 complexity · ec49078a39feaa8557c3aa5757e2f848 MD5 · raw file
Large files are truncated click here to view the full file
- =head1 NAME
- DBD::ODBC::Changes - Log of significant changes to the DBD::ODBC
- As of $LastChangedDate: 2011-03-06 17:18:35 +0000 (Sun, 06 Mar 2011) $
- $Revision: 10667 $
- =head2 Changes in DBD::ODBC 1.29 March 8, 2011
- * An official release of the 1.28 development releases.
- [NOTE]
- * The 1.28 development releases made a change which causes a generic
- error to be reported when an ODBC call fails but an error message
- is not retrieved from the ODBC Driver. It appears this has caught
- out a few ODBC drivers - notably freeTDS and Firebird. You now may
- see errors that were missed before e.g., DBIx::Class's tests for
- Firebird now errors test 21 "outer txn rolled back" (and others)
- because SQLRowCount returns an error after "ROLLBACK TO SAVEPOINT
- savepoint_0"; before this error was missed.
- =head2 Changes in DBD::ODBC 1.28_5 March 6, 2011
- [BUG FIXES]
- * rt_59621.t had wrong skip count
- * Fixed missing SQL_MAX_TABLE_NAME_LEN definition from test.
- * Fixed problem with some drivers which batch "insert;select" where
- SQLMoreResults is not required and an extra describe is done.
- * Fixed "select 1" in 02simple.t for Firebird ODBC Driver.
- * disconnect call added to 70execute_array.t was in the wrong place.
- * In non-unicode mode we bind strings as SQL_CHAR but the driver may
- have described them as SQL_WCHAR and we were not doing ChopBlanks
- processing in that case.
- [REQUIREMENTS]
- * Now needs Test::Simple 0.90.
- [OTHER]
- * Added dml_counts.pl example
- * worked around a problem in freeTDS in the 20SqlServer.t test
- provided by Ralph Doncaster.
- * Changed test rt_62033.t to try and make it work with freeTDS - I
- failed. It now skips attempts to fetch when the insert fails.
- * Worked around problem in Firebird ODBC driver which reports
- timestamps have a display size of 24 characters but then can
- return 29 which could lead to data truncation errors.
- See http://tracker.firebirdsql.org/browse/ODBC-112
- * Worked around problem in Firebird ODBC driver which reports
- VARCHARs have a maximum length of 32765 but in fact it is 4000.
- See http://tracker.firebirdsql.org/browse/ODBC-111
- * Improvements in tracing to take account of DBI's neatsvpv lops 5
- characters off maxsize on a string.
- =head2 Changes in DBD::ODBC 1.28_4 February 24, 2011
- [BUG FIXES]
- * Fixed compilation problems with DBIf_TRACE_TXN
- * Added missing disconnect call to 70execute_array.t
- =head2 Changes in DBD::ODBC 1.28_3 February 22, 2011
- [BUG FIXES]
- * Fixed MANIFEST in 1.28_2 which named 2 files incorrectly.
- * Fixed use of PREREQ_PRINT in versions of ExtUtils::MakeMaker which
- don't support it.
- * Fixed a check on LD_LIBRARY_PATH for unixODBC which could report
- you've not set LD_LIBRARY_PATH correctly.
- [ENHANCEMENTS]
- * Added Perl and ExtUtils::MakeMaker version output to build process.
- * Added support for DBI's new trace flags ENC, CON, TXN and
- DBD. From DBI 1.617 you should be able to use: DBI_TRACE=DBD to
- ONLY get DBD::ODBC tracing without DBI tracing ENC and CON DBI
- flags are synonymous with DBD::ODBC's odbcconnection and
- odbcunicode trace flags which you can still use for now.
- [OTHER]
- * From now on I'm changing the way the Changes file is written as
- per article at
- http://blog.urth.org/2011/01/changes-file-how-and-how-not-to.html
- * Some broken drivers (freeTDS in this case) can return SQL_ERROR
- from an ODBC API function and then SQLError does not return
- error details. In this case set a generic error saying an error
- occurred but we could not retrieve it.
- * Added FAQ entry on MS Access and text columns limited to 255 chrs.
- * Added 70execute_array.t test.
- =head2 Changes in DBD::ODBC 1.28_2 January 24, 2011
- Added -x argument to Makefile.PL saying you prefer unixODBC over
- iODBC driver managers as a) we need to look for iODBC first on some
- platforms to detect iODBC and b) some platforms (Debian/Ubuntu)
- people have both binary packages installed but only unixODBC dev
- package.
- Patch from Rafael Kitover (Caelum) for better Cygwin handling.
- Minor change to data sources test to cope with someone having no
- data sources and using a DSN-less connection for testing.
- Fixed MARS test when a DSN-less connection used for testing - thanks
- to Rafael Kitover (Caelum) for spotting this.
- pod patch for "CPAN Testers Reporting" to point at cpan testers wiki
- from Rafael Kitover (Caelum).
- Fixed some broken links in the FAQ.
- Add a multiple active statement document link to random links and
- the FAQ entry.
- A call to SQLNumResultCols was not checked to test it succeeded.
- Not seen anyone run into this as yet.
- =head2 Changes in DBD::ODBC 1.28_1 December 29, 2010
- Rewrote documentation on odbc_SQL_ROWSET_SIZE and added loads of
- notes so I don't have to go through a huge irc conversation with
- ribasushi again.
- Workaround bug in DBI (prior to 1.616) which mistakenly issues a
- FETCH on any attribute passed to the connect method and sometimes
- driver managers error on SQL_ROWSET_SIZE in SQLGetConnectAttr.
- ChopBlanks was not working on UCS-2 encoded data written into bound
- columns and was also sometimes reading off the end of the bound
- array.
- Minor FAQ changes:
- Added an additional way to read MS Access dbs from Unix
- Clarified versions for MARS_Connection
- updates to cancel_big_fetch.pl
- Updated TO_DO with more stuff to do
- Improved tracing output
- Tidied up some of the examples
- =head2 Changes in DBD::ODBC 1.27 December 29, 2010
- Official release of the 1.26 development releases.
- =head2 Changes in DBD::ODBC 1.26_4 December 14, 2010
- Fixed bug highlighted by investigation into rt 62033 where the
- active flag was sometimes not set on the statement after
- SQLMoreResults indicates a result-set exists.
- Fix rt 63550 reported by John Corcoran where if a do method call
- fails the SQL C<Statement> is not available in an error handler as
- we never created a DBI statement in the first place. Added a note
- to "do" deviations pod.
- Minor fix to head at wrong level in the pod.
- Fix a possible snprintf buffer overflow in GetTypeInfo when
- the type is specified and it is negative.
- =head2 Changes in DBD::ODBC 1.26_3 November 18, 2010
- Fixed rt 63108. The change to column binding in 1.24_2 was not
- complete and causes bound columns to be rebound on each execute
- wasting time and leaking memory. Found, diagnosed and proposed fix
- by Steve Bentley.
- =head2 Changes in DBD::ODBC 1.26_2 November 9, 2010
- Fixed bug found by frew where an snprintf can overflow when binding
- a lot of parameters.
- =head2 Changes in DBD::ODBC 1.26_1 October 24, 2010
- There are over 200 block changes in the source code for this release
- from the previous one (see below). If you are using DBD::ODBC in
- production you should not upgrade without testing this release first
- as it introduces a lot of internal changes. DBD::ODBC has now gone
- entirely ODBC 3 and relies on an ODBC Driver Manager to map calls
- to ODBC 2.0 drivers (why are you still using ODBC 2.0 drivers?).
- From now on DBD::ODBC needs to be linked with an ODBC Driver Manager
- and I recommend unixODBC on UNIX and the MS ODBC Driver Manager
- on Windows. There are really good reasons for this but mainly it
- is because an ODBC Driver Manager will map ODBC 2.0 calls to an
- ODBC 3.0 driver and vice versa and handle UNICODE transparently.
- Bumped Test::Simple requirement up to 0.90 so we can use done_testing
- and note.
- Bump Perl requirement to 5.8 as per DBI.
- Workaround a bug in mdbtools which fails to set the out connection
- string in a SQLDriverConnect call. This can lead to:
- Fixed panic: sv_setpvn called with negative strlen at
- blib/lib/DBD/ODBC.pm line 107.
- Added rt_61370.t for rt 61370.
- Removed last remaining sprintf calls and replaced with snprintf.
- Changed the point at which DBD::ODBC switches from VARCHAR to
- LONGVARCHAR or WVARCHAR to WLONGVARCHAR when SQLDesribeParam fails. It
- was 4000 and is now 2000 for unicode builds. Works around a daft issue
- in the MS SQL Server driver which will not allow 'x' x 2001 converted to
- wide characters to be inserted into a varchar(8000).
- Minor change to Makefile.PL to print out found libs for iODBC and
- unixODBC.
- Added some FAQs for problems with iODBC and a recent bug in DBI.
- Added FAQ on my_snprintf problem.
- Fixed some pod errors in FAQ document.
- Fixed warning on 64 bit Strawberry Perl when compiling dbdimp.c for
- cast from ptr to UDWORD.
- Moved to_do items from Changes to TO_DO.
- Reformatted this file to save Jens work.
- Changed calls to SQLTransact (ODBC 2.0) to SQLEndTran (ODBC 3.0).
- There really shouldn't be any ODBC 2.0 drivers still around but even
- if there are, the ODBC driver manager should do the mapping for us.
- Changed calls to SQLGetConnectOption/SQLSetConnectOption to
- to SQLGetConnectAttr/SQLSetConnectAttr for ODBC 3.0.
- Changed calls to SQLColAttributes (ODBC 2.0) to SQLColAttribute
- (ODBC 3.0).
- Bumped requirement on DBI to 1.609 because that is the first version
- to contain a dbipport.h which defined my_snprintf - see
- https://rt.cpan.org/Public/Bug/Display.html?id=62346 and
- http://www.nntp.perl.org/group/perl.dbi.dev/2010/10/msg6335.html
- Various small changes to dbdimp.c which should have no effect other
- than to make it leaner:
- Removed all dTHR occurrences from dbdimp.c as it is a NOOP since 5.8
- and we need 5.8 at least.
- Removed dbd_param_err as it was not used
- Removed odbc_get_query_timeout as it was never compiled
- Removed eod field from statement as it was never used
- Removed a load of commented out code
- Replaced some SvPV calls with SvPV_nolen when we didn't used the
- length
- Removed some silly code from dbd_db_execdirect which attempted to
- return -3 - don't think it could ever get run.
- Minor tracing output tidy up
- Removed dbd_caution as it was no used
- Localised more variable declarations
- =head2 Changes in DBD::ODBC 1.25 September 22, 2010
- Official release of 1.25 combining all the changes in the 1.24_x
- development releases.
- =head2 Changes in DBD::ODBC 1.24_6 September 16, 2010
- rt 61370 - default XML type parameters in SQL Server to SQL_WCHAR so
- they accept unicode strings.
- =head2 Changes in DBD::ODBC 1.24_5 September 15, 2010
- Fixed missing SvSETMAGIC on a bound scalar which was causing length() to
- return the wrong result - see http://www.perlmonks.org/?node_id=860211
- and a big thank you to Perl Monks and in particular ikegami.
- Changed bind_col so it actually pays attention to the TYPE attribute as
- you could not override the bind type of a bound column before.
- =head2 Changes in DBD::ODBC 1.24_4 September 8, 2010
- Left a sv_undef in - thanks smoke testers for finding that.
- Change sprintf to snprintf for safety.
- =head2 Changes in DBD::ODBC 1.24_3 September 6, 2010
- Added note from Robert Freimuth for obtaining the last insert ID in MS
- Access.
- Changed all &sv_yes/&sv_no occurrances in XS to PL_sv_yes/PL_sv_no as
- the originals have now gone from blead Perl.
- Minor change to fix missing newline in trace output.
- Added a FAQ entry for how "use regional settings" in MS SQL Server
- breaks things.
- =head2 Changes in DBD::ODBC 1.24_2 July 23, 2010
- Fix rt57957 reported by Marc Prewitt. DBD::ODBC was not ignoring named
- placeholders and ? inside comments. Comments are deemed as text between
- "/*" and "*/" (if not in a literal) and line comments begin with "--".
- Added a FAQ on procedures not completing in MS SQL Server. Thanks to
- Peter Rabbitson for hitting this problem and reminding me I'd seen it a
- couple of times before.
- Added a FAQ on equality comparisons with ntext columns.
- Added pod for last_insert_id which is not currently supported.
- Fix bug where if SQLMoreResults was called and failed it was not
- reported.
- Removed some unused fields from the fbh structure which should save a
- little memory for each column in a result-set.
- Started adding support for DBI's DiscardString and StrictlyTyped but not
- complete yet so don't use them yet.
- Added experimental odbc_lob_read method - see pod. Thanks to tye and
- ikegami on perlmonks for pointing out some problems with my initial
- implementation.
- Moved the binding of columns to the first call to fetch instead of after
- execute is called as it prevents bind_col overrriding the type used for
- binding and I needed it to support odbc_lob_read. This may have
- undesired affects so any testing of this release would be appreciated.
- Added bind_col method so DBD::ODBC can support attributes on a bind_col
- call.
- Removed support for DBI's blob_read - it was totally flawed and did not
- work at all. May replace in the future.
- Added support for MS SQL Server XML type (SQL type -152). See rt 59621.
- Added note on do method implementation in DBD::ODBC and how some may
- consider it to deviate from the DBI specification.
- =head2 Changes in DBD::ODBC 1.24_1 May 27, 2010
- Corrected pod and private attributes for the odbc_SQL_DRIVER_ODBC_VER
- attribute which was documented as SQL_DRIVER_ODBC_VER.
- Added FAQ on pauses on statement destruction when all the result-set has
- not been retrieved (mostly freeTDS and MS SQL Server ODBC Driver).
- Fixed bug introduced in 1.24 where if you are using MS SQL Server, and
- you are preparing, binding placeholders and re-executing multiple times
- you may get a "Invalid character value for cast specification"
- error. Thanks to anonymous for spotting this and producing a standalone
- example of the problem that made it so much easier to find.
- =head2 Changes in DBD::ODBC 1.24 May 14, 2010
- Minor change in Makefile.PL to only use NO_META if ExtUtils::MakeMaker
- is at least at version 6.10. Reported by Chunmei Wu.
- Minor change to test rt_50852 which had wrong skip count.
- =head2 Changes in DBD::ODBC 1.23_5 May 6, 2010
- Added advice from Jan Dubois (ActiveState) on building DBD::ODBC for
- ActivePerl (see README.windows).
- rt56692. Fix spelling mistake in DBD::ODBC pod - thanks to Ansgar
- Burchardt.
- Added a 7th way to help documentation - become a tester.
- Hopefully fixed problems building on windows 32 bit platforms that have
- old sql header files not mentioning SQLLEN/SQLULEN.
- =head2 Changes in DBD::ODBC 1.23_4 April 13, 2010
- Added more FAQs.
- Small optimization to remove calls to SQLError when tracing is not
- turned on. This was a bug. We only need to call SQLError when SQLExecute
- succeeds if there is an error handler or if tracing is enabled. The test
- was for tracing disabled!
- Large experimental change primarily affecting MS SQL Server users but it
- does impact on other drivers too. Firstly, for MS SQL Server users we no
- longer SQLFreeStmt(SQL_RESET_PARAMS) and rebind bound parameters as it
- is causing the MS SQL Server ODBC driver to re-prepare the SQL.
- Secondly (for all drivers) we no longer call SQLBindParameter again IF
- all the arguments to it are the same as the previous call. If you find
- something not working you better let me know as this is such a speed up
- I'm going to go with this unless anyone complains.
- Minor change to avoid a double call to SQLGetInfo for SQL_DBMS_NAME
- immediately after connection.
- Small change for rt 55736 (reported by Matthew Kidd) to not assume a
- parameter is varXXX(max) if SQLDescribeParam failed in the Microsoft
- Native Client driver.
- =head2 Changes in DBD::ODBC 1.23_3 March 24, 2010
- Minor changes to Makefile.PL and dbdimp.c to remove some compiler
- warnings.
- Fix some calls to SQLMoreResults which were not passing informational
- messages on to DBI's set_err. As you could not see all the informational
- messages from procedures, only the first.
- Fix minor issue in 02simple test which printed the Perl subversion
- before the version.
- Changes to 20SqlServer.t to fix a few typos and make table names
- consistent wrt to case - (as someone had turned on case-sensitivity in
- SQL Server) Similar changes in rt_38977.t and rt_50852.t
- =head2 Changes in DBD::ODBC 1.23_2 January 26, 2010
- Fixed bug in Makefile.PL which could fail to find unixODBC/iODBC header
- files but not report it as a problem. Thanks to Thomas J. Dillman and
- his smoker for finding this.
- Fixed some compiler warnings in dbdimp.c output by latest gcc wrt to
- format specifiers in calls to PerlIO_printf.
- Added the odbc_force_bind_type attribute to help sort out problems with
- ODBC Drivers which support SQLDescribeParam but describe the parameters
- incorrectly (see rt 50852). Test case also added as rt_50852.t.
- =head2 Changes in DBD::ODBC 1.23_1 October 21, 2009
- makefile.PL changes:
- some formatting changes to output warn if unixodbc headers are not
- found that the unixodbc-dev package is not installed use $arext
- instead of "a"
- pattern match for pulling libodbc.* changed
- warn if DBI_DSN etc not defined
- change odbc_config output for stderr to /dev/null
- missing / on /usr/local wheb finding find_dm_hdr_files()
- New FAQ entries from Oystein Torget for bind parameter bugs in SQL
- Server.
- rt_46597.rt - update on wrong table
- Copied dbivport.h from the latest DBI distribution into DBD::ODBC.
- Added if_you_are_taking_over_this_code.txt.
- Add latest Devel::PPPort ppport.h to DBD::ODBC and followed all
- recommendations for changes to dbdimp.c.
- Added change to Makefile.PL provided by Shawn Zong to make
- Windows/Cygwin work again.
- Minor change to Makefile.PL to output env vars to help in debugging
- peoples build failures.
- Added odbc_utf8_on attribute to dbh and sth handles to mark all strings
- coming from the database as utf8. This is for Aster (based on
- PostgreSQL) which returns all strings as UTF-8 encoded unicode. Thanks
- to Noel Burton-Krahn.
- =head2 Changes in DBD::ODBC 1.23 September 11, 2009
- Only a readme change and version bumped to 1.23. This is a full release
- of all the 1.22_x development releases.
- =head2 Changes in DBD::ODBC 1.22_3 August 19, 2009
- Fix skip count in rt_38977.t and typo in ok call.
- Workaround a bug in unixODBC 2.2.11 which can write off the end of the
- string buffer passed to SQLColAttributes.
- Fix skip count in rt_null_nvarchar.t test for non SQL Server drivers.
- Fix test in 02simple.t which reported a fail if you have no ODBC
- datasources.
- In 99_yaml.t pick up the yaml spec version from the meta file instead of
- specifying it.
- Change calls to SQLPrepare which passed in the string lenth of the SQL
- to use SQL_NTS because a) they are null terminated and more importantly
- b) unixODBC contains a bug in versions up to 2.2.16 which can overwrite
- the stack by 1 byte if the string length is specified and not built with
- iconv support and converting the SQL from ASCII to Unicode.
- Fixed bug in ping method reported by Lee Anne Lester where it dies if
- used after the connection is closed.
- A great deal of changes to Makefile.PL to improve the automatic
- detection and configuration for ODBC driver managers - especially on
- 64bit platforms. See rt47650 from Marten Lehmann which started it all
- off.
- Add changes from Chris Clark for detecting IngresCLI.
- Fix for rt 48304. If you are using a Microsoft SQL Server database and
- nvarchar(max) you could not insert values between 4001 and 8000
- (inclusive) in size. A test was added to the existing rt_38977.t test.
- Thanks to Michael Thomas for spotting this.
- Added FAQ on UTF-8 encoding and IBM iSeries ODBC driver.
- Add support for not passing usernames and passwords in call to connect.
- Previously DBD::ODBC would set an unspecified username/password to '' in
- ODBC.pm before calling one of the login_xxx functions. This allows the
- driver to pull the username/password from elsewhere e.g., like the
- odbc.ini file.
- =head2 Changes in DBD::ODBC 1.22_1 June 16, 2009
- Applied a slightly modified version of patch from Jens Rehsack to
- improve support for finding the iODBC driver manager.
- A UNICODE enabled DBD::ODBC (the default on Windows) did not handle
- UNICODE usernames and passwords in the connect call properly.
- Updated "Attribution" in ODBC.pm.
- Unicode support is no longer experimental hence warning and prompt
- removed from the Makefile.PL.
- old_ping method removed.
- Fixed bug in 02simple.t test which is supposed to check you have at
- least one data source defined. Unfortunately, it was checking you had
- more than 1 data source defined.
- rt_null_varchar had wrong skip count meaning non-sql-server drivers or
- sql server drivers too old skipped 2 tests more than were planned.
- =head2 Changes in DBD::ODBC 1.22 June 10, 2009
- Fixed bug which led to "Use of uninitialized value in subroutine entry"
- warnings when writing a NULL into a NVARCHAR with a unicode-enabled
- DBD::ODBC. Thanks to Jirka Novak and Pavel Richter who found, reported
- and patched a fix.
- Fixed serious bug in unicode_helper.c for utf16_len which I'm ashamed
- to say was using an unsigned short to return the length. This meant you
- could never have UTF16 strings of more than ~64K without risking
- serious problems. The DBD::ODBC test code actually got a
- *** glibc detected *** /usr/bin/perl: double free or corruption
- (out): 0x406dd008 ***
- If you use a UNICODE enabled DBD::ODBC (the default on Windows) and
- unicode strings larger than 64K you should definitely upgrade now.
- =head2 Changes in DBD::ODBC 1.21_1 June 2, 2009
- Fixed bug referred to in rt 46597 reported by taioba and identified by
- Tim Bunce. In Calls to bind_param for a given statement handle if you
- specify a SQL type to bind as, this should be "sticky" for that
- parameter. That means if you do:
- $sth->bind_param(1, $param, DBI::SQL_LONGVARCHAR)
- and follow it up with execute calls that also specify the parameter:
- $sth->execute("a param");
- then the parameter should stick with the SQL_LONGVARCHAR type and not
- revert to the default parameter type. The DBI docs (from 1.609) make it
- clear the parameter type is sticky for the duration of the statement but
- some DBDs allow the parameter to be rebound with a different type -
- DBD::ODBC is one of those drivers.
- =head2 Changes in DBD::ODBC 1.21 April 27, 2009
- Change 02simple test to output Perl, DBI and DBD::ODBC versions.
- Fixed bug where if ODBC driver supports SQLDescribeParam and it succeeds
- for a parameterised query but you override the parameter type, DBD::ODBC
- was still using the size returned by SQLDescribeParam. Thanks to Brian
- Becker for finding, diagnosing and fixing this issue.
- Added FAQ entry about SQL Server and calling procedures with named
- parameters out of order.
- Added test_results.txt containing some supplied make test results.
- =head2 Changes in DBD::ODBC 1.20 April 20, 2009
- Fix bug in handling of SQL_WLONGVARCHAR when not built with unicode
- support. The column was not identified as a long column and hence the
- size of the column was not restricted to LongReadLen. Can cause
- DBD::ODBC to attempt to allocate a huge amount of memory.
- Minor changes to Makefile.PL to help diagnose how it decided which
- driver manager to use and where it was found.
- Offer suggestion to debian-based systems when some of unixODBC is found
- (the bin part) but the development part is missing.
- In 20SqlServer.t attempt to drop any procedures we created if they still
- exist at the end of the test. Reported by Michael Higgins.
- In 12blob.t separate code to delete test table into sub and call at
- being and end, handle failures from prepare there were two ENDs.
- In ODBCTEST.pm when no acceptable test column type is found output all
- the found types and BAIL_OUT the entire test.
- Skip rt_39841.t unless actually using the SQL Server ODBC driver or
- native client.
- Handle drivers which return 0 for SQL_MAX_COLUMN_NAME_LEN.
- Double the buffer size used for column names if built with unicode.
- =head2 Changes in DBD::ODBC 1.19 April 2, 2009
- Some minor diagnostic output during tests when running against freeTDS
- to show we know of issues in freeTDS.
- Fixed issue in 20SqlServer.t where the connection string got set with
- two consecutive semi-colons. Most drivers don't mind this but freeTDS
- ignores everything after that point in the connection string.
- Quieten some delete table output during tests.
- Handle connect failures in 20SqlServer.t in the multiple active
- statement tests.
- In 02simple.t cope with ODBC drivers or databases that do not need a
- username or password (MS Access).
- In 20SqlServer.t fix skip count and an erroneous assignment for
- driver_name.
- Change some if tests to Test::More->is tests in 02simple.t.
- Fix "invalid precision" error during tests with the new ACEODBC.DLL MS
- Access driver. Same workaround applied for the old MS Access driver
- (ODBCJT32.DLL) some time ago.
- Fix out of memory error during tests against the new MS Access driver
- (ACEODBC.DLL). The problem appears to be that the new Access driver
- reports ridiculously large parameter sizes for "select ?" queries and
- there are some of these in the unicode round trip test.
- Fixed minor typo in Makefile.PL - diagnostic message mentioned "ODBC
- HOME" instead of ODBCHOME.
- 12blob.t test somehow got lost from MANIFEST - replaced. Also changed
- algorithm to get a long char type column as some MS Access drivers only
- show SQL_WLONGVARCHAR type in unicode.
- Added diagnostic output to 02simple.t to show the state of
- odbc_has_unicode.
- =head2 Changes in DBD::ODBC 1.18_4 March 13, 2009
- A mistake in the MANIFEST lead to the rt_43384.t test being omitted.
- Brian Becker reported the tables PERL_DBD_39897 and PERL_DBD_TEST are
- left behind after testing. I've fixed the former but not the latter yet.
- Yet another variation on the changes for rt 43384. If the parameter is
- bound specifically as SQL_VARCHAR, you got invalid precision
- error. Thanks to Øystein Torget for finding this and helping me verify
- the fix.
- If you attempt to insert large amounts of data into MS Access (which
- does not have SQLDescribeParam) you can get an invalid precision error
- which can be worked around by setting the bind type to
- SQL_LONGVARCHAR. This version does that for you.
- 08bind2.t had a wrong skip count.
- 12blob.t had strict commented out and GetTypeInfo was not quoted. Also
- introduced a skip if the execute fails as it just leads to more obvious
- failures.
- In dbdimp.c/rebind_ph there was a specific workaround for SQL Server
- which was not done after testing if we are using SQL Server - this was
- breaking tests to MS Access.
- =head2 Changes in DBD::ODBC 1.18_2 March 9, 2009
- Added yet another workaround for the SQL Server Native Client driver
- version 2007.100.1600.22 and 2005.90.1399.00 (driver version 09.00.1399)
- which leads to HY104, "Invalid precision value" in the rt_39841.t test.
- =head2 Changes in DBD::ODBC 1.18_1 March 6, 2009
- Fixed bug reported by Toni Salomäki leading to a describe failed error
- when calling procedures with no results. Test cases added to
- 20SqlServer.t.
- Fixed bug rt 43384 reported by Øystein Torget where you cannot insert
- more than 127 characters into a Microsoft Access text(255) column when
- DBD::ODBC is built in unicode mode.
- =head2 Changes in DBD::ODBC 1.18 January 16, 2009
- Major release of all the 1.17 development releases below.
- =head2 Changes in DBD::ODBC 1.17_3 December 19, 2008
- Reinstated the answer in the FAQ for "Why do I get invalid value for
- cast specification" which had got lost - thanks to EvanCarroll in
- rt41663.
- rt 41713. Applied patch from JHF Remmelzwaal to handle ODBC drivers
- which do not support SQL_COLUMN_DISPLAY_SIZE and SQL_COLUMN_LENGTH
- attributes in the SQLColAttributes calls after SQLTables and
- SQLColumns. Specifically, the driver he was using was the "Infor
- Integration ODBC driver".
- Added notes from JHF Remmelzwaal on resolving some problems he came
- across building DBD::ODBC on Windows with Visual Studio 6.0 and SDK Feb
- 2003.
- New odbc_column_display_size attribute for when drivers does not return
- a display size.
- Loads of tracing changes to make it easier for me to debug problems.
- Fixed bug in tracing of dbd_execute when parameter is char but undef
- which was leading to an access violation on Windows when tracing
- enabled.
- Minor changes to diagnostic output in some rt tests.
- One of the rt tests was not skipping the correct number of tests if the
- driver was not SQL Server.
- =head2 Changes in DBD::ODBC 1.17_2 November 17, 2008
- Changed ParamTypes attribute to be as specification i.e.,
- {
- parameter_1 => {TYPE => sql_type}
- parameter_2 => {TYPE => sql_type}
- ...
- }
- and changed the tests in 07bind.t to reflect this.
- A few minor perlcritic changes to ODBC.pm.
- Added 99_yaml.t test to check META.yml.
- Added patch from Spicy Jack to workaround problems with Strawberry Perl
- setting INC on the command line when running Makefile.PL.
- =head2 Changes in DBD::ODBC 1.17_1 October 10, 2008
- Missing newline from end of META.yml upsets cpan
- Add code to Makefile.PL to spot command line containing INC, outline
- problem and resolution and not generate Makefile to avoid cpan-testers
- failures.
- Loads of pod formatting changes including a section in the wrong place
- New kwalitee test
- Fix rt 39841. Bug in SQL Server ODBC driver which describes parameters
- by rearranging your SQL to do a select on the columns matching the
- parameters. Sometimes it gets this wrong and ends up describing the
- wrong column. This can lead to a varchar(10) being described with a
- column-size less than 10 and hence you get data truncation on execute.
- Added a test case for rt 39841.
- Fix rt 39897. 1.17 added support for varchar(max) in SQL Server but it
- broke support for SQL_VARCHAR columns in that they had LongReadLen and
- LongTruncOk applied to them. This means that in 1.16 you could retrieve
- a SQL_VARCHAR column without worrying about how long it was but in 1.17
- if the same column was greater than 80 characters then you would get a
- truncated error. The only way the around this was to set LongTruncOk or
- LongReadLen.
- Added a test case for rt 39897.
- =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.
- Added support for ParamTypes (see DBI spec) and notes in DBD::ODBC pod.
- =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:
- column names
- The retrieval of unicode column names
- 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 not be passed as unicode strings - this is a
- limitation of the odbc_exec_direct attribute.
- connection strings
- True unicode connection string support will require a new version of
- DBI (post 1.607).
- 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.
- odbcunicode trace flag
- There is a new odbcunicode trace flag to enable unicode-specific
- tracing.
- 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.
- 2 new tests for odbc_query_timeout added to 03dbatt.t.
- Changed 02simple.t test which did not work for Oracle due to a "select
- 1" in the test. Test changed to do "select 1 from dual" for Oracle.
- New tests for numbered and named placeholders.
- =head3 Documentation Changes
- Added references to DBD::ODBC ohloh listing and markmail archives.
- Added Tracing sections.
- Added "Deviations from the DBI specification" section.
- Moved the FAQ entries from ODBC.pm to new FAQ document. You can view the
- FAQ with perldoc DBD::ODBC::FAQ.
- Added provisional README.windows document.
- Rewrote pod for odbc_query_timeout.
- Added a README.osx.
- =head3 Internal Changes
- More tracing in dbdimp.c for named parameters.
- #ifdeffed out odbc_get_primary_keys in dbdimp.c as it is no longer used.
- $h->func($catalog, $schema, $table, 'GetPrimaryKeys') ends up in
- dbdimp.c/dbd_st_primary_keys now.
- Reformatted dbdimp.c to avoid going over 80 columns.
- Tracing changed. Levels reviewed and changed in many cases avoiding
- levels 1 and 2 which are reserved for DBI. Now using DBIc_TRACE macro
- internally. Also tracing SQL when 'SQL' flag set.
- =head3 Build Changes
- Changes to Makefile.PL to fix a newly introduced bug with 'tr', remove
- easysoft OOB detection and to try and use odbc_config and odbcinst if we
- find them to aid automatic configuration. This latter change also adds
- "odbc_config --cflags" to the CC line when building DBD::ODBC.
- Avoid warning when testing ExtUtils::MakeMaker version and it is a test
- release with an underscore in the version.
- =head3 Functionality Changes
- Added support for parse_trace_flag and parse_trace_flags methods and
- defined a DBD::ODBC private flag 'odbcdev' as a test case.
- Add support for the 'SQL' trace type. Added private trace type odbcdev
- as an experimental start.
- Change odbc_query_timeout attribute handling so if it is set to 0 after
- having set it to a non-zero value the default of no time out is
- restored.
- Added support for DBI's statistics_info method.
- =head3 Bug Fixes
- Fix bug in support for named placeholders leading to error "Can't rebind
- placeholder" when there is more than one named placeholder.
- Guard against scripts attempting to use a named placeholder more than
- once in a single SQL statement.
- If you called some methods after disconnecting (e.g., prepare/do and any
- of the DBD::ODBC specific methods via "func") then no error was
- generated.
- Fixed issue with use of true/false as fields names in structure on MAC
- OS X 10.5 (Leopard) thanks to Hayden Stainsby.
- Remove tracing of bound wide characters as it relies on null-terminated
- strings that don't exist.
- Fix issue causing a problem with repeatedly executing a stored procedure
- which returns no result-set. SQLMoreResults was only called on the first
- execute and some drivers (SQL Server) insist a procedure is not finished
- until SQLMoreResults returns SQL_NO_DATA.
- =head2 Changes in DBD::ODBC 1.15 January 29, 2008
- 1.15 final release.
- Fixed bug reported by Toni Salomaki where DBD::ODBC may call
- SQLNumResultCols after SQLMoreResults returns SQL_NO_DATA. It led to the
- error:
- Describe failed during DBI::st=HASH(0x19c2048)->FETCH(NUM_OF_FIELDS,0)
- when NUM_OF_FIELDS was referenced in the Perl script.
- Updated odbc_exec_direct documentation to describe its requirement when
- creating temporary objects in SQL Server.
- Added FAQ on SQL Server temporary tables.
- Fixed bug in dbdimp.c which was using SQL_WCHAR without testing it was
- defined - thanks Jergen Dutch.
- Fixed use of "our" in UCHelp.pm which fails on older Perls.
- Minor changes to 02simple.t and 03dbatt.t to fix diagnostics output and
- help debug DBD which does not handle long data properly.
- Further changes to Makefile.PL to avoid change in behavior of
- ExtUtils::MakeMaker wrt order of execution of PREREQ_PM and CONFIGURE.
- Now if DBI::DBD is not installed we just warn and exit 0 to avoid a
- cpan-testers failure.
- =head2 Changes in DBD::ODBC 1.15_2 November 14, 2007
- Fix bug in DBD::ODBC's private function data_sources which was returning
- data sources prefixed with "DBI:ODBC" instead of "dbi:ODBC".
- If you don't have at least DBI 1.21 it is now a fatal error instead of
- just a warning.
- DBI->connect changed so informational diagnostics like "Changed database
- context to 'master'" from SQL Server are available in
- errstr/state. These don't cause DBI->connect to die but you can test
- $h->err eq "" after connect and obtain the informational diagnostics
- from errstr/state if you want them.
- Fixed problem in 41Unicode.t where utf8 was used before testing we had a
- recent enough Perl - thank you cpan testers.
- Changed "our" back to "my" in Makefile.PL - thank you cpan testers.
- Removed all calls to DBIh_EVENT2 in dbdimp.c as it is no longer used
- (see posts on dbi-dev).
- Changed text output when a driver manager is not found to stop referring
- to iodbcsrc which is no longer included with DBD::ODBC.
- Changed Makefile.PL to attempt to find unixODBC if -o or ODBCHOME not
- specified.
- Updated META.yml based on new 1.2 spec.
- Changed Makefile.PL so if an ODBC driver manager is not found then we
- issue warning and exit cleanly but not generating a Makefile. This
- should stop cpan-testers from flagging a fail because they haven't got
- an ODBC driver manager.
- Changed Makefile.PL so it no longer "use"s DBI/DBI::DBD because this
- makes cpan-testers log a fail if DBI is not installed. Changed to put
- the DBI::DBD use in the CONFIGURE sub so PREREQ_PM will filter out
- machines where DBI is not installed.
- Fix a possible typo, used once in 10handler.t.
- =head2 Changes in DBD::ODBC 1.15_1 November 6, 2007
- Minor changes to 20SqlServer.t test for SQL Server 2008 (Katmai).
- Timestamps now return an extra 4 digits of precision (all 0000) and the
- driver reported in dbcc messages has a '.' in the version which was not
- handled.
- New FAQ entry and test code for "Datetime field overflow" problem in
- Oracle.
- Changed all ODBC code to use new SQLLEN/SQLULEN types where Microsoft's
- headers indicate, principally so DBD::ODBC builds and works on
- win64. NOTE: you will need an ODBC Driver Manager on UNIX which knows
- SQLLEN/SQLULEN types. The unixODBC driver manager uses SQLLEN/SQLULEN in
- versions from at least 2.2.12. Thanks to Nelson Oliveira for finding,
- patching and testing this and then fixing problems with bound parameters
- on 64 bit Windows.
- Added private_attribute_info method DBI introduced (see DBI docs) and
- test cases to 02simple.t.
- Fairly major changes to dbd_describe in dbdimp.c to reduce ODBC calls by
- 1 SQLDescribeCol call per column when describing result sets. Instead of
- calculating the amount of memory required to hold every column name we
- work on the basis that (num_columns + 1) * SQL_MAX_COLUMN_NAME_LEN can
- hold all column names. However, to avoid using a large amount of memory
- unnecessarily if an ODBC driver supports massive column name lengths the
- maximum size per column is restricted to 256.
- Changed to avoid using explicit use of DBIc_ERRXXX in favour of newish
- (ok, DBD::ODBC is a bit behind the times in this respect)
- DBIh_SET_ERR_CHAR. This involved a reworking or the error handling and
- although all test cases still pass I cannot guarantee it has no other
- effects - please let me know if you spot differences in error messages.
- Fixed bug in 20SqlServer test for multiple results that was passing but
- for the wrong reason (namely, that the odbc_err_handler was being called
- when it should not have been).
- Fixed bug in odbc_err_handler that prevented it from being reset so you
- don't have an error handler. Looks like the problem was in
- dbd_db_STORE_attrib where "if(valuesv == &PL_sv_undef)" was used to
- detect undef and I think it should be "if (!SvOK(valuesv))".
- Improvements to odbc_err_handler documentation.
- Added 10handler.t test cases.
- More tests in 02simple.t to check NUM_OF_FIELDS and NAMES_uc.
- Bit of a tidy up:
- Removed some unused variable declarations from dbdimp.c.
- Lots of changes to DBD::ODBC tracing, particularly in dbd_describe, and
- dbd_error2 and login6.
- Removed a lot of tracing code in comments or #if 0 as it never gets
- built.
- Changed dual tests on SQL_SUCCESS and SQL_SUCCESS_WITH_INFO to use
- SQL_SUCCEEDED.
- =head2 Changes in DBD::ODBC 1.14 July 17, 2007
- Fix bug reported where ping crashes after disconnect thanks to Steffen
- Goeldner.
- Fix bug in dbd_bind_ph which leads to the error Can't change param 1
- maxlen (51->50) after first bind in the 20SqlServer test. This is caused
- by svGROW in Perl 5.8.8 being changed to possibly grow by more than you
- asked (e.g. up to the next longword boundary).
- Fix problem with binding undef as an output parameter. Reported by
- Stephen More with IBM's ODBC driver for iSeries.
- Removed comment delimiters in comments in dbdimp.h leading to warnings.
- Removed some unused variable declarations leading to warnings.
- Removed PerlIO_flush calls as it is believed they are not required.
- Add logging for whether SQLDescribeParam is supported.
- Fixed use of unitialised variable in dbd_bind_ph where an undef is bound
- and tracing is enabled.
- Fixed issue with TRACESTATUS change in 20SqlServer.t tests 28, 31, 32
- and 33 leading to those tests failing when testing with SQL Server 2005
- or Express.
- Many compiler warnings fixed - especially for incompatible types.
- Add provisional Unicode support - thanks to Alexander Foken. This change
- is very experimental (especially on UNIX). Please see ODBC.pm
- documentation. Also see README.unicode and README.af. New database
- attribute odbc_has_unicode to test if DBD::ODBC was built with UNICODE
- support. New tests for Unicode. New requirement for Perl 5.8.1 if
- Unicode support required. New -[no]u argument to Makefile.PL. New
- warning in Makefile.PL if Unicode support built for UNIX.
- Fix use of unitialised var in Makefile.PL.
- Fix use of scalar with no effect on Makefile.PL
- Added warning to Makefile.PL about building/running with LANG using
- UTF8.
- Added warning to Makefile.PL about using thread-safe ODBC drivers.
- Updated MANIFEST to include more test code from mytest and remove
- MANIFEST.SKIP etc.
- Removed calls to get ODBC errors when SQLMoreResults returns
- SQL_NO_DATA. These are a waste of time since SQL_NO_DATA is expected
- and there is no error diagnostic to retrieve.
- Changes to test 17 of 02simple.t which got "not ok 17 - Col count
- matches correct col count" errors with some Postgres ODBC
- drivers. Caused by test expecting column names to come back
- uppercase. Fixes by uppercasing returned column names.
- Changes to tests in 03batt.t which correctly expects an ODBC 3 dr…