1$Id: CHANGES,v 1.91 2017/09/10 14:31:45 mpeppler Exp $ 2 3Release 1.16 4 5 Fix buffer overflow with ASE 16.x 6 7Release 1.15 8 9 Minor fixes to allow building on Windows. 10 Fixed syntax error at compile time for some compilers 11 Allow database names with special chars in the name. 12 Change to ct_data_info() to flag an error in case the CS_IODESC returned 13 doesn't include a valid text pointer - this happens if the text/image column 14 is nullable and has not been initialized in the database. 15 16Release 1.14 17 18 Fix bad size handling for unicode data. 19 Remove default charset setting to utf8 (this had been done in 1.11 as part of 20 improved utf8 handling, but has negative side-effects. If unicode handling is needed 21 then set "charset=utf8" as part of the connection string. 22 Enforce the fact that utf8/unicode handling only works with OpenClient 15.x or later. 23 24Release 1.13 25 26 Fix for incorrect UTF8 handling when retrieving UNICODE data (Jean-Pierre Rupp). 27 28Release 1.12 29 30 Bug/Typo/Compatibility fixes with various versions of OpenClient. 31 Experimental: Handle in/out parameters (Merijn Broeren) 32 33Release 1.11 34 35 Remove reliance on PERL_POLLUTE. 36 Add better support for utf8 (Dave Rolsky) 37 38Release 1.10 39 40 Handle 15.x datatypes correctly. 41 Add LONGMS date format symbol to handle microseconds for bigdatetime. 42 Add support for CS_LONGCHAR_TYPE (Mark Aufflick) 43 Document syb_isdead(). 44 Handle 64bit builds with FreeTDS (Ian Grant/Hans Kristian Rosbach) 45 Add foreign_key_info & statistics_info (Jim Radford) 46 Change behavior of large fixed precision numeric types (money, bigint) 47 to be converted to a string internally and returned as such to the caller 48 (behavior similar to numeric/decimal). This can be reverted to the old behavior 49 by defining SYB_NATIVE_NUM. 50 51Release 1.09 52 53 Behavior change: A new connection level attribute (syb_disconnect_in_child) 54 has been added to allow automatical handling of InactiveDestroy across 55 forks. By default in 1.09 a connection will NOT get closed if the process 56 ID of the process that is exiting is not the same as the PID of the 57 process that created the connection. 58 Detect ASE error 5702 (The server is terminating this process) as a fatal 59 error for the connection. 60 61 Bug Fixes 62 63 645 - Spurious COMMIT calls sent to the dataserver during the login/connect calls. 64 628 - Increase size of Kerberos Principal string buffer 65 627 - Spurious sigset_t declaration. 66 67Release 1.08 68 69 Detect missing libblk.a library, and disable the BLK api calls 70 if necessary. 71 Added code to force dlopen() to use RTLD_GLOBAL. 72 Corrected ct_option() functionality detection. 73 Fixed incorrect handling of bind_params() (Thanks to Tim Bunce). 74 Added serverType DSN parameter. 75 Added tds_keepalive DSN parameter. 76 Fixed incorrect handling of multiple result sets with DBI 77 1.53 and later. 78 Re-wrote $dbh->ping() in C, it's now four times faster. 79 Allow automated build without prompts. 80 Improved nsql(). 81 Added corrected handling of DATE and TIME values (ASE 12.5.2 and later). 82 Added handling of UNSIGNED INT and BIGINT (ASE 15 and later). 83 Added PERL_NO_GET_CONTEXT #define. 84 85 Bug Fixes 86 87 624 - Empty strings incorrectly passed as NULL. 88 616 - Spurious error message when the login request times out. 89 614 - Documentation improvement for syb_xxx methods. 90 610 - Segfault when using signals with the threaded libraries and 91 perl >= 5.8. 92 93 94Release 1.07 95 96 Changed the t/xblk.t test to lookup the charset used by the 97 server and specify this in the connect() string. This should 98 avoid failures when the client and server uses charsets of 99 different sizes (utf8 vs. iso_1, for example). 100 Better error reporting when the connection data is incorrect 101 for the test scripts. 102 Modified $dbh->ping() slightly. 103 104 Bug Fixes 105 106 604 - Add missing mode parameter to mkdir in t/xblob.t 107 606 - Memory leak in the BLK API. 108 109Release 1.06 110 111 Fix off-by-one error for ISO date format. 112 Clear error/warning when connecting to a Replication Server. 113 Fix AutoCommit "off" behavior when CHAINED mode is turned off. 114 Fix $dbh->begin_work() behavior. 115 116 Note: This version fails 4 tests in t/xblk.t when building 117 against the 15.0 Beta OCS libraries. 118 119 Bug Fixes 120 121 582 - ISO date formatting off by one for months. 122 591 - NUM_OF_PARAMS isn't handled properly 123 593 - Connection can become unusable due a bug in 124 get_server_version(). 125 597 - Prepared stored procs with placeholders return 126 corrupted recordset on second fetch. 127 599 - The call to "prepare" also executes the statement. 128 600 - $sth->finish sometimes fails to properly clean up the 129 handle. 130 131Release 1.05 132 133 BEHAVIOR CHANGE - $dbh->{LongReadLen} must now be called 134 before $dbh->prepare(). Previously you could call this after 135 the $dbh->prepare() but before the $sth->execute(). 136 137 Install private statement handle methods for TEXT/IMAGE handling 138 to avoid $h->func() calls, and update documentation. 139 Implement experimental BLK API via prepare/execute loop. 140 Change default "AutoCommit" off mode from explicit transactions 141 to using the "chained" mode if it is available. 142 Add $sth->syb_describe() call, taken from Sybase::CTlib's 143 ct_describe(). 144 Add ISO8601 date/time format for output. 145 Fix $sth->finish() behavior when syb_flush_finish is turned on. 146 Changed do { } while($sth->{syb_more_results}); idiom to use 147 redo instead. 148 Better/more consistent handling of multiple sth on a single dbh, 149 and new test file. 150 151 Bugs Fixed: 152 153 580 - Binding binary/varbinary values to placeholders sometimes 154 fails. 155 575 - Fails three tests under Tru-64. 156 577 - perl Makefile.PL fails if umask is 0. 157 578 - Better warning for calling $dbh->{LongReadLen} if $dbh is busy. 158 572 - Minor documentation update for bind_param(). 159 160Release 1.04 161 162 Bugs Fixed: 163 164 566 - $sth->{NAME} fails right after prepare(). 165 166Release 1.03 167 168 Added linking of threaded Sybase libs if perl is built with 169 threading turned on. 170 Added CLONE() method. 171 Minor changes to dbdimp.c to be thread-safe. 172 Added t/thread.t test script. 173 Changes to Makefile.PL to make configuration easier. 174 Add support for Kerberos-based network login. 175 Handle new library names (libsybct vs. libct). 176 Make sure that cached statement handle attributes (NAME_lc, etc) 177 are cleared when multiple result sets are processed. 178 Add host and port connection properties, to allow connections 179 to ASE servers that are not defined in the interfaces file 180 (requires OCS 12.5.1) 181 Add ability to dynamically increase the maximum number of 182 connections (thanks to Ed Avis). 183 Add ability to ignore stored proc return status in nsql() (thanks 184 to Merijn Broeren) 185 Fix Makefile.PL umask() issue on Win32 (thanks to Darin Delegal). 186 187 Bugs Fixed: 188 189 541 - $sth->{NAME} fails right after prepare(). 190 551 - Tests fail when using perl 5.6.1. 191 556 - Add support for user-supplied SSL certificate file. 192 557 - type_info_all broken with ASE 11.0.x 193 562 - syb_flush_finish doesn't work during the connect() phase. 194 563 - Memory leak when syb_binary_images is set. 195 196 197Release 1.02 198 199 Added syb_server_version attribute. This is filled in at connect() 200 time with the numeric version number (11.0.3.3, 12.5.1, etc) of the 201 server that you are connected to. 202 203 Bugs Fixed: 204 205 520 - t/exec.t fails on Win32. 206 533 - logic error in deadlock retry in nsql(). 207 532 - t/xblob.t test provides false positive for win32. 208 534 - Placeholder prepare() fails with ASE 11.0.x 209 210Release 1.01 211 212 Automatically finish() statement handles if they are re-executed 213 before all the rows have been fetched. 214 Added support for new tables() syntax, thanks to Stephen Wilcoxon. 215 Added support for DATE and TIME datatypes (available in the 216 ASE 12.5.1 release, currently undergoing beta testing). 217 Allow user to specify a database to use for the tests instead of 218 using "tempdb" (useful if user does not have SA privileges). 219 220 Bugs Fixed: 221 222 517 - getpwnam() isn't portable. 223 493 - Second execute on a prepared handle fails. 224 487 - Add connection information to error messages. 225 407 - Second+ statement does not use db from "use database". 226 227Release 1.00 228 229 Added data_sources(). 230 Allow "SQL_BINARY" placeholder parameters to be passed either 231 as a hex string (with or without leading 0x), or as raw binary 232 data. 233 234 Bugs Fixed: 235 236 477 - segfault when servermsg_cb is called with a null connection 237 480 - Makefile.PL searches system dirs before PERL5LIB dirs when 238 looking for DBI installation. 239 485 - Incorrect handling of large varbinary columns on fetches. 240 489 - (same as 497, see below). 241 492 - Can't compile on Win2k. 242 494 - Do not try to use the ocs.cfg file if it exists. 243 495 - Incorrect handling of parameters when using placeholders & 244 stored procs. 245 497 - implicit type conversions with prepared statements often fail 246 503 - Binary placeholders with stored procedures. 247 506 - Default scriptName/hostname connect() params. 248 508 - DBD::Sybase doesn't build under Win2k. 249 250Release 0.95 251 252 Support for building DBD::Sybase in 64 bit mode with the 253 64 bit version of OpenClient on Solaris, HP-UX, AIX, etc. 254 (note that perl itself must also be built in 64 bit 255 mode for this to work!) 256 257 Added column_info() method. 258 259 Added G_EVAL flag to syb_err_handler calls. 260 Improved syb_err_handler handling (thanks to Matthew Persico) 261 Fixed memory leak when opening additional connections for multiple 262 statement handles on a single database handle (thanks to Stefan 263 Harbeck) 264 Applied minor patch by Alex Fridman to get to build on WinNT. 265 Force a ct_cancel() if, due to syb_do_proc_status, we force a 266 failure on a request that could have more results pending (Blaise 267 Lepeuple) 268 Added syb_cancel_request_on_error attribute (see bug 471). 269 Warning - the default value for this attribute changes the behavior 270 of $sth->execute() when there is a failure that is detected in 271 multi-statement requests. 272 Added syb_bind_empty_string_as_null attribute (see bug 446) to 273 allow user configurable empty string binding semantics (convert 274 to single space [default] or to NULL). 275 276 Bugs Fixed: 277 278 431 - fetchrow_hashref() has incorrect keys when retrieving 279 multiple result sets. 280 437 - imp_sth->numRows in st_next_result not always set. 281 444 - Incorrect example for ct_get_data(). ct_get_data() SEGV 282 if passed a non-reference for $image. 283 394 - $sth->{CursorName} fails hard. 284 449 - ct_get_data() limited to 32k 285 450 - Fix incorrect NULLABLE handling. 286 452 - Incorrect $sth->finish() handling in syb_flush_finish mode 287 (thanks to Steve Willer). 288 443 - $sth->fetch produces error if called after $sth->execute on 289 statement that doesn't return any rows. 290 411 - statement handle attributes do not change between result sets. 291 430 - $dbh->prepare can return undef without triggering RaiseError. 292 436 - Problems with make test generating errors creating 293 Makefile.aperl. 294 441 - amadmin who,sqm fails while in a transaction. 295 446 - Empty string converts to a space (fixed by making this 296 configurable). 297 448 - define strncasecmp as strnicmp for Win32 systems. 298 454 - syb_err_handler won't catch connect-time error. 299 456 - ping still fails if connection is dead. 300 461 - Memory leak if NOT using placeholders in selects and 301 calling execute() multiple times. 302 464 - Binding an empty string for a date field causes "1/1/1900" 303 to be inserted (instead of NULL). 304 469 - nsql error handling bug. 305 447 - syb_db_disconnect(): ct_con_drop() failed. 306 471 - Certain class of errors isn't detected by DBD::Sybase. 307 308 309 Documentation changes to explain why 310 ... WHERE (product_code = ? OR (? IS NULL AND product_code IS NULL)) 311 doesn't work with Sybase. 312 313 314 315Release 0.94 316 317 Added optional SQL buffer argument to syb_err_handler. 318 Interactive setting of user/server/pwd entries in PWD 319 for "make test". 320 Add syb_failed_db_fatal and syb_no_child_con attributes. 321 322 Bugs Fixed: 323 324 408 - Add the YYYYMMDD format to _date_fmt(). 325 414 - Binding '' is interpreted as NULL. 326 415 - Fix buffer overlow in syb_db_login(). 327 418 - Fix incorrect handing of CS_CANCELED return code in 328 st_next_result(). 329 421 - ActiveState patches. 330 331Release 0.93 332 333 Added password encryption option to connect() request (contributed 334 by Tin Martone) 335 Added initial nsql(). 336 Added ct_get_data(), ct_send_data() and friends func(). 337 Added ?-style placeholder support for exec proc statements. 338 Changed getExtraLibs() in Makefile.PL to *not* link with -linsck 339 or -ltli (this avoids problems if the $SYBASE/config/libtcl.cfg 340 file has been set to load the threaded version of these 341 libraries.) 342 Added support for primary_key_info(). 343 (release 0.92 was never publicly released for various reasons) 344 345 Bugs Fixed: 346 366 ping() fails if connection has been marked dead 347 364 t/fail.t bug. 348 349 350Release 0.91 351 352 Removed artificial 1024 byte limit on char/varchar datatypes in 353 result sets. 354 355 Bug Fixes: 356 357 213: BLOBs are returned in HEX, not binary. 358 359Release 0.90 360 361 Release number sequence change: I'm dropping the "alpha" qualifier 362 and I expect to release 1.00 fairly soon. 363 364 Small Makefile.PL fix for Sybase 12.0 installation directory 365 changes. 366 Applied patch from Tim Ayers to allow 0x type formatting for 367 binary data fetches (similar to what Sybase::CTlib and 368 Sybase::DBlib allow). 369 Fixed some t/ scripts to not fail when run against MS-SQL. 370 Corrected the handling of timeout events in the client 371 callback. 372 373 Bug Fixes: 374 375 349: CS_NUMERIC bindings for ?-style placeholders fails for large 376 values. 377 345: Dynamic statement ids get re-used. 378 351: prepared statements with placeholders cause handle to become 379 unusable if *first* execute fails. 380 352: ping() doesn't work right in Apache::DBI (thanks to 381 Kiriakos Georgiou) 382 353: syb_quoted_identifier doesn't work. 383 354: Calling fetch() after prepare() but no execute() fails with 384 internal DBI error. This should also fix bug # 278 and 288. 385 297: type_info() returns incorrect or no data. 386 344: timeout doesn't work correctly. 387 388 389Release 0.23 390 391 Bug Fixes: 392 393 331: ? marks in comments are parsed as placeholders. 394 343: Errors in stored procs cause data rows from proc to be 395 thrown away. 396 255: $dbh->execute does not fail it executing proc without 397 permissions. 398 399Release 0.22 400 401 Bug Fixes: 402 403 271: execute() does not restart a transaction after a rollback 404 or commit when running multiple execute() calls for the 405 same statement handle. 406 294: SEGV on executing a prepared statement with undef values. 407 295: SEGV due to printf w/ null pointer 408 299: Missing dTHR in syb_st_prepare(). 409 410 411Release 0.21 412 413 Added constant() function, so that if DBD::Sybase is use'd you 414 can access some CS_xxx_RESULT constants. 415 Added $sth->func('syb_output_params') to allow for easier 416 retrieval of stored proc OUTPUT parameters. 417 Added syb_do_proc_status database attribute to allow $sth->execute 418 to handle stored procedure return status directly, and to fail if 419 the stored proc has a non-0 return status. This should also fix 420 bug 255. 421 Errors with severity 10 or below are not stored in $DBI::err 422 anymore. Use $dbh->{syb_err_handler} to get at those warning 423 messages. 424 Added t/fail.t test script to better test failure modes. 425 Setting AutoCommit on a $dbh with active statement handles is now 426 a fatal error. 427 428 Bug Fixes: 429 430 255: Memory leak for prepared statements that are not executed. 431 264: make test fails when building DBD::Sybase against 432 OpenClient 10.x. 433 266: make test fails when building DBD::Sybase with perl 5.004_04 434 or earlier. 435 268: $sth->execute(x,y,z) (ie executing a prepare'd statment that 436 has ?-style placeholders) does not return undef if a 437 constraint violation occurs on the insert/update/delete. 438 439 440Release 0.20 441 442 Fix code to allow prepare, execute, execute, execute... on 443 statements that don't include ?-style placeholders. 444 Fix LENGTH/PRECISION/SCALE $sth attributes to be closer to the 445 DBI spec. 446 Fix core dump problem when binding undef values and having 447 trace >= 2. 448 Add syb_quoted_identifier connection/database handle attribute. 449 Add syb_oc_version read-only database handle attribute, returns the 450 Sybase library version that this binary is currently using. 451 Added the syb_rowcount $dbh attribute. 452 Added $sth->cancel(). 453 Call the syb_err_handler (if one is defined) for client-side 454 errors. 455 456Release 0.19 457 458 Setting chained/non-chained mode was still broken. <sigh> 459 syb_flush_finish mode didn't quite work right either. 460 Added more verbose traces. 461 462Release 0.18 463 464 Add $h->{syb_chained_txn} attribute to switch between CHAINED 465 transactions and explicit named transactions for AutoCommit=0 466 mode. The default is for syb_chained_txn to be off (ie 0.13 behaviour). 467 Fixed typo in syb_db_commit() to actually commit instead of doing 468 a rollback. 469 Added an autocommit.t test (which still needs some work). 470 Disable opening new connection for secondary $sth handles off of a 471 single $dbh handle when AutoCommit == 0. 472 473Release 0.17 474 475 Fix AutoCommit = 0 problems introduced with 0.15 for MS-SQL or older 476 Sybase server (ie TDS 4.x protocol connections). 477 Add syb_dynamic_supported $dbh attribute to check whether the 478 connection supports ?-style placeholders. 479 480Release 0.16 481 482 Added code to define PL_xxx symbols for pre 5.005 perls. 483 New syb_flush_finish attribute (contributed by Steve Miller). 484 Patch to Makefile.PL for VMS systems. 485 Better library detection code in Makefile.PL. 486 487Release 0.15 488 489 Added an error handler callback which can intercept error messages 490 and provide ad-hoc handling of error situations. 491 In AutoCommit == 0 mode, use CS_OPT_CHAINXACTS mode on the 492 server instead of issuing explicit transactions. 493 $dbh->LongReadLen and LongTruncOK now work. 494 First cut at the type_info() and type_info_all() methods. 495 perl Makefile.PL now attempts to discover the libraries directly 496 based on what it finds in $SYBASE/lib. 497 498Release 0.14 499 500 Added a 'timeout' connection attribute (contributed by Tom May) 501 to handle timeout errors during normal processing. 502 SQL PRINT statements are now handled by a warn() call (instead 503 a printf() call) so that they can be caught by a __WARN__ handler. 504 Make sure $dbh->do() returns immediately when an error is encountered. 505 Include dbd-sybase.pod (Tim Bunce's Driver Summary for DBD::Sybase). 506 507Release 0.13 508 509 Bug fix release - binding undef (NULL) variables when using 510 ? style placeholders didn't work. 511 Incorrect login didn't get flagged properly (this bug was 512 introduced in 0.11.) 513 Added database attribute to the connect() call. 514 515Release 0.12 516 517 Bug fix release - recent versions of DBI make an array that 518 DBD::Sybase uses read-only, causing errors when multiple 519 result sets are retrieved where the second result set is wider 520 (has more columns) than the first one. 521 522Release 0.11 523 524 Adds support for multiple $sth for a single $dbh (this is done 525 by openeing a new connection in prepare() if the previously 526 prepared statement is still active. 527 Add support for date formatting via $dbh->func($fmt, 528 '_date_fmt'). 529 Added two new connect attributes: scriptName and 530 hostname. Setting these can help identify processes in the 531 Sybase sysprocesses table. 532 533Release 0.10 534 535 Fixes stupid Makefile.PL bug. 536 Fixes incorrect freeing of memory when mixing prepare() 537 statements with ? placeholders and prepare() statements 538 without them. 539 540Release 0.09 541 542 Features: 543 544 Added $sth->{syb_result_type} which returns the numerical 545 value of the current result set. The values are defined 546 in $SYBASE/include/cspublic.h. 547 Made $sth->{TYPE} compatible with generic DBI values, and 548 added $sth->{syb_types} to get the native Sybase types. 549 Added $dbh->tables and $dbh->table_info. 550 551 Finally got rid of the "Use of uninitialized value" message 552 in connect() (thanks to Tom May for this) 553 554 Fixed at least some of the memory leaks (thanks to Bryan Mawhinney) 555 556 Added Sybase specific do() sub that will handle multiple result 557 sets. 558 559 Added $dbh->{syb_show_sql} and $dbh->{syb_show_eed} to add more 560 control to error reporting. 561 562 Implemented $dbh->ping() method (first cut - may need improvement!) 563 564 Bug Fixes: 565 566 244: fetch gets infinite loop on sproc error 567 246: extended error messages go to STDOUT. 568 569Release 0.08 570 571 Features: 572 573 Added ? placeholder processing. This is done by calling ct_dynamic() 574 and friends if the statement being executed includes ? type 575 placeholders. 576 577 Bug Fixes: 578 579 210: print statements are lost 580 231: error messages are lost 581 238: reformat error messages 582 241: remove the necessity for users to call $sth->finish 583 584Release 0.07 585 586 Bug fixes: 587 588 204: One form of DBI->connect() fails when specifying the server name. 589 211: $dbh->do("use database") fails with RaiseError is true. 590 230: fetch() does not return correct results for certain stored 591 procs situations. 592 593Release 0.06 594 595 Added ability to specify interfaces file in the connect() 596 call. 597 Added eg/dbschema.pl (ported from Sybase::DBlib). 598 Fixed incorrect handling of AutoCommit and PrintError 599 attributes to connect(). 600 601 Bugs fixed: 602 603 203: Executing sp_helprotect fails. 604 605Release 0.05 606 607 Added explicit assignement of LDDLFLAGS and LDFLAGS in 608 Makefile.PL to make sure that -L$SYBASE/lib comes first 609 in the list of -L flags. 610 Added documentation. 611 Added ability to specify character set, language, packet size 612 in the connect() call. 613 Small Win32 portability patch to Makefile.PL from Matt Herbert. 614 615 Bugs fixed: 616 617 198: connect failure does not return undef 618 199: DBD::Sybase interaction with Apache::DBI 0.74 619 620Release 0.04 621 622 Fixed counting of active statement handles. 623 Add implicit rollback of open transactions on disconnect. 624 Add implicit commit when changing AutoCommit from off to on. 625 626Release 0.03 627 628 First ALPHA release of native DBD::Sybase implementation. 629 630Release 0.02 631 632 Some fixes to the emulation layer. 633 634Release 0.01 635 636 Proof of concept release - built as an emulation layer on top 637 of Sybase::CTlib (part of sybperl 2.x). 638