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