@(#)CHANGES 1.15 03/06/98 2.09_01 Bug Fixes This is a bug fix release. The only functional change is in the handling of attributes in Sybase::CTlib when using the ct_cmd_alloc() call. If you use that call to open multiple cursors on the same connection then you should be aware that the attributes are shared between the handles opened for this connection (ie the handle created with ct_connect() and the handles created with ct_cmd_alloc().) Other fixes: 218: length($buf) is incorrect after dbreadtext(). 223: dbreadtext() leaves garbage at the end of $buf 224: dbreadtext() missing from Sybase::Sybperl 226: Changing $user in dblogin() fails on NCR 228: BCP RECORD_SEPARATOR error 229: BCP & null_pattern error 232: SEGV in ctutils.pl when inserting a duplicate row. 2.09 Performance Enhancements / Win32 portability release: Added nsql() routine to Sybase::DBlib (contributed by W. Phillip Moore). Added dbcc.pl (run dbcc's and filter the error messages) and SecureSql.pm (contributed by Olivier Mary) to the eg/ directory. Bug fixes: 216 Sybase::BCP fails under Win32 systems 219 Silence some 'variable used only once' warnings. 2.08_52 Added dbsetdefcharset() and dbsetdeflang() to Sybase::DBlib Added cs_dt_info() to Sybase::CTlib. Added ability to set certain connection properties in Sybase::CTlib. Bug Fixes: 209: CTlib appends trailing \0 byte to string values. 2.08_51 Added dbproc and ConInfo attributes back into the handle attributes. Fixed some small-ish bugs introduced by the changes in 2.08_50. Merged in porting notes to Win32 from Krzysztof Koczyjan (see README.win32 for details). Bug Fixes: 194: CTlib has hard coded warn() calls in ct_connect() 2.08_50 Avoids hash for storage of internal attributes data. Can return reference to a pre-allocated array. Bug Fixes Merged in porting notes for VMS from Charles Bailey (baily@newman.upenn.edu) 2.08 New Features: Added dbpreptext(), dbreadtext(), dbmoretext(), dbsqlok() and force_dbclose() to Sybase::DBlib. Added dbspid() to Sybase::DBlib Bug Fixes Made some code adjustments to silence some perl 5.004 warnings. Finally fixed the "'rpcInfo' is not a valid Sybase::DBlib attribute" bug... Fixed DBSETLPACKET() macro definition (for pre-system 10 libraries). Fixed ct_config() so that integer values can be set and retrived. This implied adding a 'type' argument which defaults to CS_CHAR_TYPE, but must be set to CS_INT_TYPE if integer values are passed or retrieved. Fixed dbclose() in Sybperl.pm to *really* close connections. Renamed config to config.pl to avoid problems under Win/NT. ct_fetch() added an extra \0 at the end of TEXT/IMAGE data. Fixed a reorder bug in BCP.pm. Fixed Sybase::CTlib::ct_sql() to set $dbh->{RC} to CS_FAIL when an error occurs in the processing. Sybase::DBlib::dbrpcxxx() calls where not returning any success or failure information. Sybase::CTlib::ct_col_types() returns CS_INT_TYPE for all integer types. 2.07 Bug Fixes Added ct_config() call to CTlib. Fixed memory leak when using TEXT data with the CTlib module. Fixed some data handling and column splitting problems in the BCP module. Improved data handling and data integrity in the bcp_*() calls in DBlib. 2.06 Bug Fixes Fixed memory leak when the -DDO_TIE compile time option is turned on. Fixed 32/64 bit pointer problem that caused CTlib to fail on the Dec Alpha. DESTROY function now makes sure that it only closes connections in the process that created them (ie a child process started via fork() would sometimes close the connections of the parent...) New, fully re-written dbschema.pl (thanks to David Whitmarsh) 2.05 Bug Fixes BugId Description 165 Make fails if DBLIBVS < 461. 166 bcp_sendrow() truncates binary (ie TEXT/IMAGE) fields if they contain NULL bytes. 167 The 5.002 make install places local module in $PERL5LIB/site_perl, which is searched *after* $PERL5LIB. 169 -L$SYBASE/lib comes too late in the $LDFLAGS/$LDDLFLAGS Makefile variables, which can cause the wrong library to be referenced (tcl/tk's libtcl.a vs. Sybase's). 170 Retrieving numeric data causes the fields to be padded with spaces instead of being NULL terminated after the last digit. 2.04 DBlib and CTlib Feature release. New Sybase::BCP module. ** NOTE ** This version requires Perl 5.002. - Added ct_describe to retrieve the information held in the CS_DATAFMT structure for each column in the result set. - Added Sybase::{CTlib, DBlib}::debug(level) which enables the tracing of certain internal states and operations. - Turned Sybase::CTlib and Sybase::DBlib database handle attributes into a tied hash, so that invalid attribute names (such as spelling mistakes) can be caught (NOTE: This is a compile time option that can be turned OFF if you don't like it). To allow add hoc attributes to be set by the programer you can pass a hash reference as fifth parameter to the dblogin/ct_connect calls with the additional attributes that you want the DBlib or CTlib modules to recognize. - Added Sybase::DBlib::DBSETLPACKET and Sybase::DBlib::dbgetpacket to allow the use of non-default network packet sizes (this can increase the performance tremendously in certain situations). - Sybase::DBlib can now return DATETIME and MONEY values in native format, with the same functionality as Sybase::CTlib. - Re-wrote and cleaned up some of the logic in Sybase::DBlib::dbnextrow() and dbretdata(). - bcp_sendrow() can now take an array reference as data parameter instead of a LIST. This is a small performance improvement when processing wide tables. (Passing a LIST is still supported). - Added some additional regression tests. - Reviewed the documentation. - Sybase::BCP is a new module that attempts to make it easier to use the bulk copy library. Sybase::BCP includes many features such as input column re-ordering, failed batch retries and date/time conversions. It is sub-classed from the Sybase::DBlib module. - Sybase::Login is a tkPerl login widget for sybperl. It requires the Tk module. You will find it in eg/Login.pm. Contributed by Brent B. Powers. Bug Fixes: BugId Description 158 Sybase::CTlib dumps core when retrieving "Extended Error" data in the default Server Message handler. 159 Make DBSETLPACKET() available in DBlib. 161 make test fails for Sybase::DBlib, Sybase::Sybperl with perl5.002gamma. 163 bcp_batch is not documented. 2.03 Bug fixes to Sybase::DBlib. - Retrieving large numeric/decimal/identity values caused floating point values in exponential notation to be returned. This was due to the default behaviour of DBlibrary to be compatible with release 4.6.1. This version AUTOMATICALLY calls dbsetversion() to enable System 10 handling of numeric/decimal/identity data if you build against a System 10 version of DBlibrary. - Logging for dbwritetext() has been enabled by adding an additional (optional) $log parameter. I'm not very happy with the calling sequence (it's getting further and further from the C version), but that's the cost of not doing it right from the start, I guess... BugId Description 155 Retrieving large integers (of numeric or decimal data types) creates floating point data in exponential notation. 156 dbsetversion() does not work. 123 Allow logging for dbwritetext(). 2.02 Updates & Improvements to the CTlib and DBlib modules. New Features: - Sybase::CTlib::ct_sql() can now return an array of references to associative arrays (one for each row). - Sybase::CTlib::ct_fetchable() uses a precomputed hash to check the fetchable status (suggested by Gisle Aas). Added Sybase::CTlib::ct_cmd_alloc to allow multiple CS_COMMAND structures with a single connection. - Added Sybase::CTlib::ct_cmd_realloc to drop and realloc the current CS_COMMAND structure. - Added Sybase::DBlib::db*opt() calls. The dbsetopt() call was implemented in version 1.0xx but somehow did not get recoded in 2.x. - Sybase::DBlib::sql() can now return an array of references to associative arrays (one for each row). Bug Fixes: BugId Description 146 Need multiple CS_COMMAND structures for ct_cursor operations. 147 $date->calc() changes both the original $date and the new date. 148 Sybperl.pm does not export $DB_IN, $DB_OUT. 151 Sybperl.pm does not define &dbwritetext(). 152 Sybperl.pm defines $main::ComputeID, sybperl 1.0xx used $main::ComputeId. 2.01 For use with either Perl 5.001m or Perl 5.002. New Features: - CTlib DateTime, Money and Numeric data handling is now done either in native mode (ie the data is converted to char strings or floating precision only when needed which is sometimes slow) or in 'convert' mode (all data is retrieved in string or floating point format). The default is to retrieve data in 'convert' mode. See the 'Attributes' sub-section in the CTlib section of the manual (pod/sybperl.pod) Bug Fixes BugId Description 140 CTlib uses excessive amounts of memory. The Makefile.PLs have been updated so that they work both with 5.001m (the version I recommend for production use at this point) and 5.002 beta. 2.0b Updated to work with Perl 5.002 beta. This version *requires* Perl 5.002beta1f, and MakeMaker.pm 5.14. Bug fixes: BugId Description 132 Bizarre copy of CODE in subroutine entry at t/dblib.t line 93. 138 Problems installing sybperl after upgrading to 5.002 beta 1f. In addition, the 'undef' bug that I uncovered in sybperl 2b3 has been fixed, so the -DUNDEF_BUG is not necessary anymore. The MakeMaker utility has progressed, making the existence of the infamous empty Sybase.xs file unnecessary. 2.0a Bug fixes: BugId Description 130 CTlib/t/ctlib.t test fails on AIX 136 CTlib fails test on an Onyx running Irix 137 dbnextrow core dumps when retrieve row with binary length > 140 135 Behaviour change of DBlib::sql not documented in README 133 MakeMaker 5.03 doesn't work with Sybperl. Additional functionality: DBlib::DBDEAD and DBlib::remove_xact have been added (thanks to Joel Truher). 2.0 Base release.