-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChanges
2900 lines (1947 loc) · 105 KB
/
Changes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
=encoding utf8
=head1 NAME
DBD::ODBC::Changes - Log of significant changes to the DBD::ODBC
As of $LastChangedDate$
$Revision: 10667 $
=head2 Changes in DBD::ODBC 1.44_2 September 3 2013
[BUG FIXES]
When table_info was called with a '%' for any one of the catalog,
schema or type arguments with the rest all '' (the empty string),
only a list of catalogs, schemas or types should be returned. It was
not doing that as it was changing empty strings to undef/NULL.
[MISCELLANEOUS]
Fixed RT 86379 - spelling mistakes in ODBC.pm and FAQ - thanks
to David Steinbrunner.
=head2 Changes in DBD::ODBC 1.44_1 June 6 2013
Moved from subversion to github as svn.perl.org is closing down.
Changed docs to show new repository.
[BUG FIXES]
Fixed RT 84450 - Database Handle Attribute Fetch broken. Thanks to
Stephen Oberholtzer for finding and supplying patch.
Fixed problem with attributes on bind_col not being sticky. You'll
probably only see this if you are using fetchall_arrayref with a
slice and setting TYPE or attributes in bind_col first.
=head2 Changes in DBD::ODBC 1.43 March 6 2013
This is a full release of all the 1.42_* development releases.
plus:
[BUG FIXES]
Minor fix to 10handler.t test suite which relied on a native error
being true instead of defined.
=head2 Changes in DBD::ODBC 1.42_5 January 25 2013
[BUG FIXES]
Not all modules used in test code were specified in build_requires.
=head2 Changes in DBD::ODBC 1.42_4 January 21 2013
[ENHANCEMENTS]
odbc_trace and odbc_trace_file are now full connection attributes
so you can set them any time you like, not just in connect.
=head2 Changes in DBD::ODBC 1.42_3 January 17 2013
[ENHANCEMENTS]
Added odbc_trace_file and odbc_trace attributes to the connect
method so you can now enable ODBC API tracing from the connect
method instead of having to use the ODBC Driver Manager. These also
only enable ODBC API tracing in the application which made the call
unlike the ODBC Driver Manager settings.
=head2 Changes in DBD::ODBC 1.42_2 December 17 2012
[MISCELLANEOUS]
Changed any use of if SvUPGRADE to remove the if test as per email
from Dave Mitchell and posting at
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2012-12/msg00424.html.
=head2 Changes in DBD::ODBC 1.42_1 December 12 2012
[BUG FIXES]
DBD::ODBC's ExecDirect method did not return an SQLLEN so if you
managed to affect a massive number of rows it would be cast to an
int and hence precision lost.
[CHANGE IN BEHAVIOUR]
When you called DBI's execute method and odbc_exec_direct was not
set (the default) if you managed to affect more rows than would fit
into an int you would get the incorrect count (NOTE on 32 bit
platforms ODBC's SQLRowCount can only return a 32bit value
anyway). You would get whatever casting an SQLLEN to an int would
give you. The fix for this needs a change to DBI (see RT 81911) and
the change would probably impact every DBD so until then DBD::ODBC
will a) warn if an overflow occurs and Warn is set on the handle b)
return INT_MAX and c) provide a new statement method odbc_rows which
you can use to get the correct value.
[ENHANCEMENTS]
New odbc_rows statement method (see above).
[MISCELLANEOUS]
New rt_81911.t test case.
=head2 Changes in DBD::ODBC 1.42_0 November 28 2012
[BUG FIXES]
MS Access requires a longchar column to be bound using SQL_LONGVARCHAR.
However, MS Access does not support SQLDescribeParam and we default to
SQL_VARCHAR in this case. The point at which we switch to SQL_LONGVARCHAR
was defaulted to 4000 (for MS SQL Server). We now default to SQL_LONGVARCHAR
for MS Access when data is > 255. This means you can remove those
{TYPE => SQL_LONGVARCHAR} from your bind_param calls for longchar columns
in MS Access.
I seem to have introduced a bug in the test suite for MS Access.
The last test in the 09bind test binds dates as varchars (by
default) and this cannot work in MS Access (it needs to be a
timestamp). This test was skipped in the past and the skip got
removed.
[MISCELLANEOUS]
Steffen Goeldner reported some issues with execute_array in
DBD::Oracle where if ArrayTupleStatus was not specified and an error
occurred DBD::Oracle did not do the right thing. As I used
DBD::Oracle as a base when I wrote execute_for_fetch in DBD::ODBC I
added tests to the test suite to ensure these issues did not exist
in DBD::ODBC.
Minor change to sql_type_cast.t test which attempts to insert an
integer into a varchar. No databases so far have complained about
this until we ran the test against Derby. Changed to use '100'.
RT 80446 - fix spelling mistake - thanks to Xavier Guimar.
=head2 Changes in DBD::ODBC 1.41 October 23 2012
A full release of the 1.40 development release series.
=head2 Changes in DBD::ODBC 1.40_3 October 8 2012
[BUG FIXES]
Oops, changes to some rt tests fail when not run to MS SQL Server
and they should not be run for other drivers - there was a double
done_testing call.
[CHANGE IN BEHAVIOUR]
As I warned literally years ago DBD::ODBC's private function
DescribeCol has been removed. You can use DBI's statement attributes
like NAME, PRECISION etc, instead. All test code has been changed to
remove calls to DescribeCol and GetTypeInfo.
[MISCELLANEOUS]
New example sqlserver_supplementary_chrs.pl added which shows that
in MS SQL Server 2012 you can now store unicode characters
over 0xFFFF (ones which are surrogate pairs).
More documentation for odbc_out_connect_string.
=head2 Changes in DBD::ODBC 1.40_2 September 6 2012
[BUG FIXES]
Fixed rt 78838 - bind_param does not correctly stringify blessed
objects when connected to MS SQL Server
Fix issue in dbd_bind_ph where if you passed a sql type and were
also attempting to change from in to out or vice versa or increasing
the size of an output bound param it would not spot this error.
Allowed the test cases to spot DB2 driver as libXXXdb2.
[MISCELLANEOUS]
New test cases added for some rts.
Added Test::NoWarnings to some tests where it was missing.
=head2 Changes in DBD::ODBC 1.40_1 September 4 2012
[BUG FIXES]
Debian/Ubuntu have moved unixODBC into /usr/lib/i386-linux-gnu
so look in this dir for unixODBC as well - thanks to Meastro for finding.
Fixed rt 78838
I had a sequence point error which is only seen with some compilers
as it is sometimes optimized out. It could cause DBD::ODBC to omit
adding the UID/PWD to the end of the connection string when using DSN=.
Thanks to Zsolt Cserna for spotting it and to ilmari and Leon for
explaining it to me.
Fixed rt 79397
Output bound parameters may be incorrectly bound if changed after
bind_param_inout is called. If you start with an undef bound param
and change it to a defined string/number less than 28 characters
before calling execute the original undef will probably be bound.
Thanks to runrig on perl monks for providing an example.
[CHANGE IN BEHAVIOUR]
If you attempt to bind an rv without amagic DBD::ODBC will now
croak - related to rt 78838.
=head2 Changes in DBD::ODBC 1.39 July 7 2012
[BUG FIXES]
Manifest mentioned 2 files in examples which do not exist - they
should have been execute_for_fetch.pl.
execute_for_fetch.pl example had not be changed since
odbc_disable_array_operations became odbc_array_operations.
=head2 Changes in DBD::ODBC 1.38_3 June 25 2012
[BUG FIXES]
Added encoding line to this file to stop pod test from complaining.
[DOCUMENTATION]
Added link to 64 bit ODBC article.
Fixed some typos in the pod.
[MISCELLANEOUS]
Made pod.t an author test.
=head2 Changes in DBD::ODBC 1.38_2 May 24 2012
[ENHANCEMENTS]
Added support for Oracle TAF (assuming your ODBC driver supports it)
- see odbc_taf_callback.
=head2 Changes in DBD::ODBC 1.38_1 May 19 2012
[BUG FIXES]
Fixed rt 77283. If you overrode the bind type as SQL_INTEGER in a bind_col
call AFTER previously binding as another type (or not specifying a type)
you would not get the right value back. This also fixes the DiscardString
bind_col attribute for SQL_INTEGER binds (however, see below as DiscardString
is no longer required for SQL_INTEGER).
Fixed some format specifiers in trace calls.
[CHANGE IN BEHAVIOUR]
DBD::ODBC allowed you to change the bound column type in bind_col
after the column was already bound. It now does not allow this
and issues a warning.
You can nolonger override the bound column type (except with
SQL_NUMERIC and SQL_DOUBLE). All columns are now bound as either
SQL_C_LONG (integer columns) or SQL_C_[W]CHAR (all other columns).
If you are calling bind_col with a TYPE => xxx it most likely did
not do what you expected and you should examine it carefully with a
view to removing it altogether. As a result you no longer have to
override the bind type for MS SQL Server XML columns - these will be
bound as SQL_C_CHAR or SQL_C_WCHAR depending on whether Unicode is
enabled.
Integer columns are now bound as SQL_C_LONGs and not as before,
SQL_C_CHAR. This should not matter to you but if you were adding 0
to your integer columns retrieved to make them behave like integers
you should nolonger need to do it.
[OTHER]
Added some missing SQL_C_xxx types to S_SqlCTypeToString internal
function. This only affects tracing.
Some tests in 08bind were skipped when they did not need to be.
sql_type_cast tests rewritten due to fixes above.
=head2 Changes in DBD::ODBC 1.37 April 7 2012
A full release of the 1.36 dev releases.
Please note the changes in behaviour below.
=head2 Changes in DBD::ODBC 1.36_2 March 31 2012
[BUG FIXES]
* not strictly a bug fix, more a workaround. MS Access mdb driver
reports 22 for the size of doubles but then returns an empty string
for long doubles that still fit in 22 chrs. rt 69864.
[CHANGE IN BEHAVIOUR]
* The odbc_disable_array_operations has been replaced with
odbc_array_operations and the default for array operations is off.
Sorry, but I warned this was experimental. The
ODBC_DISABLE_ARRAY_OPERATIONS env var remains.
[DOCUMENTATION]
* Rewrote parts of "Unicode implementation in DBD::ODBC" to describe
UTF-16/UCS-2 internal implementation.
* Changed ordering of some of the pod sections.
=head2 Changes in DBD::ODBC 1.36_1 March 21 2012
[BUG FIXES]
* Fixed 12blob.t skip count when driver does not have a big enough
varchar column to run the test.
* Work around problems hit during the test suite in DB2 driver which
only allows rows of size up to the page size and varchars of 4K.
* Fix bug in execute_for_fetch where it would ignore the parameters
processed when creating the ArrayTupleStatus and hence could
attempt to call SQLGetDiagRec on a parameter row which was not
executed. See the logs in rt 75687 which show this although this
is not a fix for this rt.
* The code wasn't catching success with info from SQLExecute in
execute_for_fetch.
* Add support for drivers (DB2 in this case) which return
SQL_PARAM_DIAG_UNAVAILABLE in bound parameter status array when
running execute_for_fetch. Any driver returning doing
SQL_PARC_NO_BATCH from SQLGetInfo(SQL_PARAM_ARRAY_ROW_COUNTS)
might do this.
* Fix test code for execute_for_fetch to a) handle drivers doing
SQL_PARC_NO_BATCH and b) add "not null" to primary key fields for
drivers like DB2 which require it.
[CHANGE IN BEHAVIOUR]
* In execute_for_fetch set the parameter status array to all 9999
(which is invalid) so we can see if the ODBC driver actually sets
them and we can warn if they don't.
* For freeTDS default odbc_disable_array_operations to 1 as no
version of the freeTDS driver can be found that works. I was
requested to do this by the dbix-class guys. I may revert this
later if freeTDS is fixed.
* as above for MS Access. It is a shame I cannot find any way of
finding out if a driver is capable of array operations.
[ENHANCEMENTS]
* execute_for_fetch code now checks the
ODBC_DISABLE_ARRAY_OPERATIONS environment variable which can
be set to 1 or 0 to override the internal default.
[DOCUMENTATION]
* Fixed ColAttributes example in pod which used a $dbh instead of a
$sth.
* Fixed DescribeCol example in pod which used a $dbh instead of a
$sth.
* new FAQ on SQLRowCount, freeTDS and execute_for_fetch
* Fix typo shown in rt 75860.
[OTHER]
* Reduced usage of D_imp_xxx to avoid calls to dbih_getcom2. See
thread on dbi-dev at
http://www.mail-archive.com/[email protected]/msg06675.html
* Changed the 70execute_array.t test to run it twice, once using
DBI's methods and once using the native one in DBD::ODBC.
* Made the 2 unicode tests work with DB2 ODBC driver.
=head2 Changes in DBD::ODBC 1.35 March 6 2012
Full release of the 1.34 development releases
=head2 Changes in DBD::ODBC 1.34_7 March 2 2012
[BUG FIXES]
* Fixed more compiler errors highlighed by a smoker using MS Visual
C where some code come before a variable definition.
=head2 Changes in DBD::ODBC 1.34_6 February 27 2012
[BUG FIXES]
* Fixed some compiler warnings and a compile error highlighed by a
smoker using MS Visual C where some code come before a variable
definition.
=head2 Changes in DBD::ODBC 1.34_5 February 17 2012
[BUG FIXES]
* The 40UnicodeRoundTrip tests counts could be 1 off in some cases.
* Fix for t/03batt.t which could fail a test if the data source had
no table - Kenichi Ishigaki
* If a driver misbehaves during global destruction e.g. SQLFreeStmt
fails but no error is available DBD::ODBC issues an error saying
an error occurred but no error diagnostics could be found. This is
pointless and irritating during global destruction. This stems
from a change in 1.28. Thanks to Peter Rabbitson for reporting
and suggested fix.
[CHANGE IN BEHAVIOUR]
* Prior to this release if you called selectall_* methods with a
non-select statement DBD::ODBC would raise an error saying "no
select statement currently executing". See RT 68720. After
discussions on dbi-dev the concensus seems to be that issuing a
warning in this case is better so that is what I've done. As a
result t/rt_68720.t has been removed and
t/85_selectall_non_select.t has been added.
[DOCUMENTATION]
* odbc_getdiagfield was incorrectly named odbc_getdiagrec in the pod
* add DBI version required for StrictlyTyped and DiscardString to
pod
* Added new FAQ on why a transaction may be committed when
AutoCommit is turned off.
[OTHER]
* Make examples\odbc_diag.pl more tolerant of drivers which do not
handle diagnostic calls properly.
* Make t/40UnicodeRoundTrip.t work with SQLite - Kenichi Ishigaki
* Make t/odbc_describe_parameter.t work with SQLite - Kenichi
Ishigaki
* Add 80_odbc_diags.t based on the same file in examples
=head2 Changes in DBD::ODBC 1.34_4 February 5 2012
[BUG FIXES]
* When odbc_getdiag* methods were added they installed themselves
into DBI but did not set IMP_KEEP_ERR so calling them cleared
DBI's errors.
=head2 Changes in DBD::ODBC 1.34_3 February 3 2012
[BUG FIXES]
* Linking against unixODBC was working by accident on most UNIX
machines and depended on the order of the files in /usr/lib (or
wherever) and what files there were (e.g. an archive or a shared
object). Same applied to iODBC but it was more broken especially
on machines where libiodbc.so.N.N existed but there was no
libiodbc.so which could lead to no adding the shared object at
all. I doubt anyone really noticed this but I did eventually on
Ubuntu where libiodbc.so.N.N existed but libiodbc.so did not.
[ENHANCEMENTS]
* Added experimental odbc_getdiagrec and odbc_getdiagrec methods,
examples/odbc_diag.pl and examples/params_in_error.pl.
[DOCUMENTATION]
* New FAQ entries.
=head2 Changes in DBD::ODBC 1.34_2 January 25 2012
[BUG FIXES]
* Fixed rt73734 - debian moved where unixODBC libs are stored.
* Fixed memory leak of the parameter status array introduced in
previous release when execute_for_fetch used. When the statement
handle is destroyed the parameter status array was not freed.
[ENHANCEMENTS]
* Added environment variable PERL_DBD_ODBC_PREFER_UNIXODBC as a
synonym for -x from Rafael Kitover (Caelum).
[DOCUMENTATION]
* Add a deviation from DBI spec for type_info_all.
[OTHER]
* Added example execute_for_fetch.pl
=head2 Changes in DBD::ODBC 1.34_1 December 11 2011
[ENHANCEMENTS]
* Added experimental execute_for_fetch support and associated
attributes odbc_batch_size and odbc_disable_array_operations.
=head2 Changes in DBD::ODBC 1.33 December 1 2011
This is simply the official release of the 1.32 development
releases.
=head2 Changes in DBD::ODBC 1.32_5 November 24 2011
[ENHANCEMENTS]
* Enable multiple active statement support in 70execute_array.t for
drivers we recognise which support MAS.
* Change column_info to support Unicode catalog/schema/table/column
names.
=head2 Changes in DBD::ODBC 1.32_4 November 22 2011
[BUG FIXES]
* remove debugging printf which output "HERE" in some rare cases.
rt 72534 - thanks John Deighan for spotting this.
* The test 70execute_array.t could fail due to warning being output
if the driver does not support Multiple Active Statements.
[ENHANCEMENTS]
* Use SQLGetTypeInfoW on unicode builds.
=head2 Changes in DBD::ODBC 1.32_3 November 15 2011
[BUG FIXES]
* Fix bug in utf16_copy which was not adding a trailing NUL but I'm
not sure this affected anyone until I changed table_info this
release.
[ENHANCEMENTS]
* DBD::ODBC now allows unicode catalog/schema/table parameters to be
passed to table_info. Of course they will only reliably work with
a supporting Unicode ODBC driver.
=head2 Changes in DBD::ODBC 1.32_2 October 22 2011
[ENHANCEMENTS]
* Added new odbc_driver_complete attribute allowing the ODBC Driver
Manager and ODBC Driver to throw dialogues for incomplete
connection strings or expired passwords etc.
[OTHER]
* added more examples
[DOCUMENTATION]
* new FAQ entries
* added note saying you cannot pass unicode schema/table/column
names to metadata calls like table_info/column_info currently.
=head2 Changes in DBD::ODBC 1.32_1 June 24 2011
[BUG FIXES]
* I omitted rt_68720.t from the 1.31 distribution which leads
to a warning as it is mentioned in the MANIFEST.
[OTHER]
* Changed line endings in README.af and README.unicode to be unix
line endings and native eol-style in subversion.
* Minor changes to Makefile.PL to save the opensuse guys patching.
* Added unicode_sql.pl and unicode_params.pl examples
=head2 Changes in DBD::ODBC 1.31 June 21, 2011
[BUG FIXES]
Recently introduced test sql_type_cast.t cannot work with DBI less
than 1.611.
Minor change to Makefile.PL to avoid use of unitialised warning on
$ENV{LD_LIBRARY_PATH} in warning when it is not set.
=head2 Changes in DBD::ODBC 1.30_7 June 15, 2011
[BUG FIXES]
Some time ago (I don't know when) a few internal errors generated by
DBD::ODBC got ignored. There are about 5 of them but I seriously
doubt anyone would hit any other than the data truncated error
(which is reported by the ODBC driver anyway) and "no select
statement currently executing". You can see rt_68720.t in the t
directory for an example of the latter.
[ENHANCEMENTS]
An extra argument has been added to the sub associated with
odbc_err_handler. The arguments passed to the odbc_err_handler are
now state (string), error (string), native error code (number) and
the status returned from the last ODBC API. The status will be
SQL_ERROR (-1) for errors or SQL_SUCCESS_WITH_INFO (1) for
informational messages.
=head2 Changes in DBD::ODBC 1.30_6 June 4, 2011
[BUG FIXES]
* When DBD::ODBC calls SQLExecDirect (the do method) it was not
reporting informational diagnostics (SQL_SUCCESS_WITH_INFO) and
not calling the error handler.
Arguably, this is a change in behaviour but one I've struggled to
resolve since in all other cases of warnings DBD::ODBC's error
handler is called. However, DBI does not call its error handler
for warnings so was DBD::ODBC wrong to call it's error in the
first place for warnings? I decided it was better to leave this as
it is but add checking of SQLExecDirect/do. Apart from anything
else if DBD::ODBC does not call its error handler for
informational diagnostics there is no way to retrieve print
statements etc from procedures.
* The odbc_describe_parameter.t test could fail with some versions
of MS SQL Server ODBC Driver. It was down to when
SQLDescribeParameter is disabled, the column_size passed to
SQLBindParameter is 0.
* pod example of odbc_err_handler incorrectly used \$err_handler
instead of \&err_handler.
=head2 Changes in DBD::ODBC 1.30_5 May 24, 2011
[BUG FIXES]
* The change in behavior detailed in 1.30_1 for wide character
binding was still not working properly (see
http://rt.cpan.org/Ticket/Display.html?id=67994). It was working
for SQL_CHAR described columns but not SQL_VARCHAR.
=head2 Changes in DBD::ODBC 1.30_4 May 18, 2011
[BUG FIXES]
* Fix issue described in
http://www.nntp.perl.org/group/perl.dbi.dev/2011/05/msg6567.html.
If you prepare a statement, disconnect and then try and execute the
statement you get an error but it does not tell what is wrong.
[ENHANCEMENTS]
* Added support for StrictlyTyped and DiscardString to the bind_col
method.
[OTHER]
* Minor changes to META.yml for mailing list, dynamic_config,
homepage and keywords.
* The pod was missing = before the heads on a couple of sections in
"Private DBD::ODBC Functions"
* TreatAsLob was incorrectly documented as BindAsLob.
=head2 Changes in DBD::ODBC 1.30_3 May 17, 2011
[BUG FIXES]
* Made the new odbc_describe_parameters work and added test case.
=head2 Changes in DBD::ODBC 1.30_2 May 16, 2011
[ENHANCEMENTS]
* Added the new odbc_describe_parameters attribute.
=head2 Changes in DBD::ODBC 1.30_1 May 12, 2011
[BUG FIXES]
* Fixed some compiler warnings shown with -Wall including some
printf formats that had extra/missing arguments.
* Fixed t/70execute_array.t which was missing an "order by" in the
check_data sub which could cause failures for drivers not
returning the rows in the order they were inserted.
* Minor fix to Makefile.PL to avoid issuing variable used in void
context.
[CHANGE IN BEHAVIOUR]
* DBD::ODBC used to quietly rollback any transactions when
disconnect was called and AutoCommit was off. This can mask a
problem and leads to different behaviour when disconnect is called
vs not calling disconnect (where you get a warning). This release
issues a warning if you call disconnect and a transaction is in
progress then it is rolled back.
* DBD::ODBC used to bind char/varchar/longvarchar columns as SQL_CHAR
meaning that in the unicode build of DBD::ODBC the bound column
data would be returned 8bit in whatever character-set (codepage) the
data was in, in the database. This was inconvenient and arguably a
mistake. Columns like nchar/nvarchar etc were bound as SQL_WCHAR and
returned as Unicode. This release changes the behaviour in a unicode
build of DBD::ODBC to bind all char columns as SQL_WCHAR. This may
inconvenience a few people who expected 8bit chars back, knew the
char set and decoded them (sorry). See odbc_old_unicode to return
to old behaviour.
[ENHANCEMENTS]
* added -w option to Makefile.PL to add "-Wall" to CCFLAGS and
-fno-strict-aliasing so I can find warnings.
* Cope with broken ODBC drivers that describe a parameter as SQL
type 0.
[OTHER]
* Add "disconnect and transactions" to pod describing what DBD::ODBC
does if you call disconnect with an outstanding transaction.
* Reorganised FAQ for bound parameter issues and added a lot on
bound parameter problems.
* Added new FAQ entry for Firebird
* Removed some unused variables and added some missing function
prototypes
=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).