forked from Perl5/DBIx-Class
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Changes
2113 lines (1958 loc) · 108 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
Revision history for DBIx::Class
* Notable Changes and Deprecations
- Neither exception_action() nor $SIG{__DIE__} handlers are invoked
on recoverable errors. This ensures that the retry logic is fully
insulated from changes in control flow, as the handlers are only
invoked when an error is leaving the DBIC internals to be handled by
the caller (n.b. https://github.com/PerlDancer/Dancer2/issues/1125)
(also fixes the previously rejected RT#63874)
- $result->related_resultset() no longer passes extra arguments to
an underlying search_rs(), as by design these arguments would be
used only on the first call to ->related_resultset(), and ignored
afterwards. Instead an exception (detailing the fix) is thrown.
- Another relatively invasive set of ::FilterColumn changes, covering
potential data loss (RT#111567). Please run your regression tests!
- Increased checking for the correctness of the is_nullable attribute
within the prefetch result parser may highlight previously unknown
mismatches between your codebase and data source
- Calling the set_* many-to-many helper with a list (instead of an
arrayref) now emits a deprecation warning
* New Features
- When using non-scalars (e.g. arrays) as literal bind values it is no
longer necessary to explicitly specify a bindtype (this turned out
to be a mostly useless overprotection)
- DBIx::Class::Optional::Dependencies now properly understands
combinations of requirements and does the right thing with e.g.
->req_list_for([qw( rdbms_oracle ic_dt )]) bringing in the Oracle
specific DateTime::Format dependencies
* Fixes
- Ensure failing on_connect* / on_disconnect* are dealt with properly,
notably on_connect* failures now properly abort the entire connect
- Fix incorrect SQL generated with invalid {rows} on complex resultset
operations, generally more robust handling of rows/offset attrs
- Fix incorrect $storage state on unexpected RDBMS disconnects and
other failure events, preventing clean reconnection (RT#110429)
- Ensure leaving an exception stack via Return::MultiLevel or something
similar produces a large warning
- Make sure exception objects stringifying to '' are properly handled
and warned about (GH#15)
- Fix silencing of exceptions thrown by custom inflate_result() methods
- Fix incorrect data returned in a corner case of partial-select HRI
invocation (no known manifestations of this bug in the field, see
commit message for description of exact failure scenario)
- Fix corner case of stringify-only overloaded objects being used in
create()/populate()
- Remove spurious exception warping in ::Replicated::execute_reliably
(RT#113339)
- Fix infinite loop on ->svp_release("nonexistent_savepoint") (GH#97)
- Fix spurious ROLLBACK statements when a TxnScopeGuard fails a commit
of a transaction with deferred FK checks: a guard is now inactivated
immediately before the commit is attempted (RT#107159)
- Fix spurious warning on MSSQL cursor invalidation retries (RT#102166)
- Fix parsing of DSNs containing driver arguments (GH#99)
- Work around unreliable $sth->finish() on INSERT ... RETURNING within
DBD::Firebird on some compiler/driver combinations (RT#110979)
- Really fix savepoint rollbacks on older DBD::SQLite (fix in 0.082800
was not sufficient to cover up RT#67843)
- Fix several corner cases with Many2Many over custom relationships
- Fix the Sybase ASE storage incorrectly attempting to retrieve an
autoinc value when inserting rows containing blobs (GH#82)
* Misc
- Fix invalid variable names in ResultSource::View examples
- Typo fixes from downstream debian packagers (RT#112007)
- Skip tests in a way more intelligent and speedy manner when optional
dependencies are missing
- Make the Optional::Dependencies error messages cpanm-friendly
- Incompatibly change values (not keys) of the hash returned by
Optional::Dependencies::req_group_list (no known users in the wild)
- Protect tests and codebase from incomplete caller() overrides, like
e.g. RT#32640
- Stop using bare $] throughout - protects the codebase from issues
similar (but likely not limited to) P5#72210
- Config::Any is no longer a core dep, but instead is migrated to a new
optdep group 'config_file_reader'
0.082821 2016-02-11 17:58 (UTC)
* Fixes
- Fix t/52leaks.t failures on compilerless systems (RT#104429)
- Fix t/storage/quote_names.t failures on systems with specified Oracle
test credentials while missing the optional Math::Base36
- Fix test failures when DBICTEST_SYBASE_DSN is set (unnoticed change
in error message wording during 0.082800 and a bogus test)
- Remove largely obsolete test of SQLite view deployment (RT#111916)
* Misc
- Work around rare test deadlock under heavy parallelism (RT#108390)
0.082820 2015-03-20 20:35 (UTC)
* Fixes
- Protect destructors from rare but possible double execution, and
loudly warn the user whenever the problem is encountered (GH#63)
- Relax the 'self_result_object' argument check in the relationship
resolution codepath, restoring exotic uses of inflate_result
http://lists.scsys.co.uk/pipermail/dbix-class/2015-January/011876.html
- Fix updating multiple CLOB/BLOB columns on Oracle
- Fix exception on complex update/delete under a replicated setup
http://lists.scsys.co.uk/pipermail/dbix-class/2015-January/011903.html
- Fix uninitialized warnings on empty hashes passed to join/prefetch
https://github.com/vanstyn/RapidApp/commit/6f41f6e48 and
http://lists.scsys.co.uk/pipermail/dbix-class/2015-February/011921.html
- Fix hang in t/72pg.t when run against DBD::Pg 3.5.0. The ping()
implementation changes due to RT#100648 made an alarm() based
timeout lock-prone.
* Misc
- Remove warning about potential side effects of RT#79576 (scheduled)
- Various doc improvements (GH#35, GH#62, GH#66, GH#70, GH#71, GH#72)
- Depend on newer Moo, to benefit from a safer runtime (RT#93004)
- Fix intermittent failures in the LeakTracer on 5.18+
- Fix failures of t/54taint.t on Windows with spaces in the $^X
executable path (RT#101615)
0.082810 2014-10-25 13:58 (UTC)
* Fixes
- Fix incorrect collapsing-parser source being generated in the
presence of unicode data among the collapse-points
- Fix endless loop on BareSourcelessResultClass->throw_exception(...)
* Misc
- Depend on newer SQL::Abstract (fixing overly-aggressive parenthesis
opener: RT#99503)
- Depend on newer Moo, fixing some interoperability issues:
http://lists.scsys.co.uk/pipermail/dbix-class/2014-October/011787.html
0.082801 2014-10-05 23:55 (UTC)
* Known Issues
- Passing large amounts of objects with stringification overload
directly to DBIx::Class may result in strange action at a distance
exceptions. More info (and a workaround description) can be found
under "Note" at https://metacpan.org/pod/SQL::Abstract#is_plain_value
- The relationship condition resolution fixes come with the side effect
of returning more complete data, tripping up *some* users of an
undocumented but widely used internal function. In particular
https://rt.cpan.org/Ticket/Display.html?id=91375#txn-1407239
* Notable Changes and Deprecations
- DBIC::FilterColumn now properly bypasses \'' and \[] literals, just
like the rest of DBIC
- DBIC::FilterColumn "from_storage" handler is now invoked on NULLs
returned from storage
- find() now throws an exception if some of the supplied values are
managed by DBIC::FilterColumn (RT#95054)
- Custom condition relationships are now invoked with a slightly
different signature (existing coderefs will continue to work)
- Add extra custom condition coderef attribute 'foreign_values'
to allow for proper reverse-relationship-like behavior
(i.e. $result->set_from_related($custom_rel, $foreign_result_object)
- When in a transaction, DBIC::Ordered now seamlesly handles result
objects that went out of sync with the storage (RT#96499)
- CDBICompat::columns() now supports adding columns through supplied
Class::DBI::Column instances (GH#52)
- Deprecate { col1 => col2 } expressions in manual {from} structures
(at some point of time manual {from} will be deprecated entirely)
* Fixes
- Fix Resultset delete/update affecting *THE ENTIRE TABLE* in cases
of empty (due to conditions) resultsets with multi-column keys
- Fix on_connect_* not always firing in some cases - a race condition
existed between storage accessor setters and the determine_driver
routines, triggering a connection before the set-cycle is finished
- Fix collapse being ignored on single-origin selection (RT#95658)
- Fix incorrect behavior on custom result_class inflators altering
the amount of returned results
- Fix failure to detect stable order criteria when in iterator
mode of a has_many prefetch off a search_related chain
- Prevent erroneous database hit when accessing prefetched related
resultsets with no rows
- Proper exceptions on malformed relationship conditions (RT#92234)
- Fix incorrect handling of custom relationship conditions returning
SQLA literal expressions
- Fix long standing bug with populate() missing data from hashrefs with
different keysets: http://is.gd/2011_dbic_populate_gotcha (RT#92723)
- Fix multi-value literal populate not working with simplified bind
specifications
- Massively improve the implied resultset condition parsing - now all
applicable conditions within a resultset should be properly picked
up by create() and populate()
- Ensure definitive condition extractor handles bizarre corner cases
without bombing out (RT#93244)
- Fix set_column on non-native (+columns) selections (RT#86685)
- Fix set_inflated_column incorrectly handling \[] literals (GH#44)
- Ensure that setting a column to a literal invariably marks it dirty
- Fix copy() not working correctly with extra selections present
- Work around exception objects with broken string overloading in one
additional codepath (missed in 0.08260)
- Fix more inconsistencies of the quote_names attribute propagating
to SQL::Translator (partially RT#87731)
- Fix SQLT constraint naming when DBIC table names are fully qualified
(PR#48)
- Ensure ::Schema::Versioned connects only once by reusing the main
connection (GH#57)
- Fix inability to handle multiple consecutive transactions with
savepoints on DBD::SQLite < 1.39
- Fix CDBICompat to match Class::DBI behavior handling non-result
blessed has_a (implicit deflate via stringification and inflate via
blind new) (GH#51)
* Misc
- Ensure source metadata calls always take place on the result source
instance registered with the caller
- IFF DBIC_TRACE output defaults to STDERR we now silence the possible
wide-char warnings if the trace happens to contain unicode
0.08270 2014-01-30 21:54 (PST)
* Fixes
- Fix 0.08260 regression in DBD::SQLite bound int handling. Inserted
data was not affected, but any function <=> integer comparison would
have failed (originally fixed way back in 0e773352)
- Fix failure to load DateTime formatter when connecting to Firebird
over ODBC
* Misc
- All drivers based on ::Storage::DBI::Firebird::Common now return the
same sqlt_type value (affects ::DBI::Interbase, ::DBI::Firebird and
::DBI::ODBC::Firebird)
0.08260 2014-01-28 18:52 (UTC)
* New Features
- A new zero-to-DBIC style manual: DBIx::Class::Manual::QuickStart
* Notable Changes and Deprecations
- Explicitly deprecate combination of distinct and selecting a
non-column via $rs->get_column()
* Fixes
- More robust handling of circular relationship declarations by loading
foreign classes less frequently (should resolve issues like
http://lists.scsys.co.uk/pipermail/dbix-class/2013-June/011374.html)
Note that none of this is a manifestations of a DBIC bug, but rather
unexpected (but correct) behavior of load-order-dependent (hence
logically broken) Resultclass hierarchies. In order to deal with this
DBIC is scaling back a large number of sanity checks, which are to be
reintroduce pending a better framework for source registration
- Fix multiple edge cases of complex prefetch combining incorrectly
with correlated subquery selections
- Fix multiple edge cases stemming from interaction of a non-selecting
order_by specification and distinct and/or complex prefetch
- Fix unbound growth of a resultset during repeated execute/exhaust
cycles (GH#29)
- Work around (and be very vocal about the fact) when DBIC encounters
an exception object with broken string overloading
- Clarify ambiguous behavior of distinct when used with ResultSetColumn
i.e. $rs->search({}, { distinct => 1 })->get_column (...)
- Setting quote_names propagates to SQL::Translator when producing
SQLite DDL (it is one of the few producers *NOT* quoting by default)
- Fix incorrect binding of large integers on old versions of
DBD::SQLite (now DBIC simply always binds SQLite ints as BIGINT)
- Silence (harmless) warnings on recent DBD::SQLite versions, when
inserting/updating large integers on 32bit ivsize systems (RT#76395)
- Back out self-cleaning from DBIx::Class::Carp for the time being
(as a side effect fixes RT#86267)
- Fix incorrect internal use of implicit list context in copy()
- Fix 0.08250 regression in driver determination when DBI_DSN is used
- Tests no longer fail if $ENV{DBI_DSN} is set
- Throw clearer exception on ->new_related() with a non-existent
relationship
- Fix incorrect parethesis unroll with multicolumn in, (never noticed
before fixing false positive in SQLA::Test 1.77)
- Fix t/storage/replicated.t class loading problem
- Stop using the deprecated Class::MOP::load_class()
- Fix warning in t/54taint.t with explicitly unset PERL5LIB (RT#91972)
- Fix t/54taint.t failing under a local::lib with installed earlier
DBIC version (RT#92486)
* Misc
- Massive incompatible change of ::BlockRunner internals (was never
documented as usable externally, this last set of changes settles
the design for proper documentation and opening up)
- Adjust exceptions in tests to accommodate changes in the upcoming
DBD::SQLite based on libsqlite 3.8.2
- More robust lock file naming scheme - allow tests to work on exotic
MSWin32 filesystems (habitual offender being http://is.gd/iy5XVP)
- Better diagnostics when File::Spec->tmpdir gives us crap in testing
- Replace $row with $result in all docs to be consistent and to
clarify various return values
0.08250 2013-04-29 22:00 (UTC)
* New Features / Changes
- Rewrite from scratch the result constructor codepath - many bugfixes
and performance improvements (the current codebase is now capable of
outperforming both DBIx::DataModel and Rose::DB::Object on some
workloads). Some notable benefits:
- Multiple has_many prefetch
- Partial prefetch - you now can select only columns you are
interested in, while preserving the collapse functionality
(collapse is now exposed as a first-class API attribute)
- Prefetch of resultsets with arbitrary order
(RT#54949, RT#74024, RT#74584)
- Prefetch no longer inserts right-side table order_by clauses
(massively helps the deficient MySQL optimizer)
- Prefetch with limit on right-side ordered resultsets now works
correctly (via aggregated grouping)
- No longer order the insides of a complex prefetch subquery,
unless required to satisfy a limit
- Stop erroneously considering order_by criteria from a join under
distinct => 1 (the distinct should apply to the main source only)
- Massively optimize codepath around ->cursor(), over 10x speedup
on some iterating workloads.
- Support standalone \[ $sql, $value ] in literal SQL with bind
specifications: \[ '? + ?', 42, 69 ] is now equivalent to
\[ '? + ?', [ {} => 42 ], [ {} => 69 ] ]
- Changing the result_class of a ResultSet in progress is now
explicitly forbidden. The behavior was undefined before, and
would result in wildly differing outcomes depending on $rs
attributes.
- Deprecate returning of prefetched 'filter' rels as part of
get_columns() and get_inflated_columns() data
- Invoking get_inflated_columns() no longer fires get_columns() but
instead retrieves data from individual non-inflatable columns via
get_column()
- Emit a warning on incorrect use of nullable columns within a
primary key
- Limited checks are performed on whether columns without declared
is_nullable => 1 metadata do in fact sometimes fetch NULLs from
the database (the check is currently very limited and is performed
only on resultset collapse when the alternative is rather worse)
* Fixes
- Fix _dbi_attrs_for_bind() being called befor DBI has been loaded
(regression in 0.08210)
- Fix update/delete operations on resultsets *joining* the updated
table failing on MySQL. Resolves oversights in the fixes for
RT#81378 and RT#81897
- Fix open cursors silently resetting when inherited across a fork
or a thread
- Properly support "MySQL-style" left-side group_by with prefetch
- Fix $grouped_rs->get_column($col)->func($func) producing incorrect
SQL (RT#81127)
- Stop Sybase ASE storage from generating invalid SQL in subselects
when a limit without offset is encountered
- Even more robust behavior of GenericSubQuery limit dialect
- Make sure deployment_statements() and cursor_class() are called on
a resolved storage subclass
* Misc
- Fix tests failing due to unspecified resultset retrieval order
(test suite now will pass with newest SQLite libs)
0.08210 2013-04-04 15:30 (UTC)
* New Features / Changes
- Officially deprecate the 'cols' and 'include_columns' resultset
attributes
- Remove ::Storage::DBI::sth() deprecated in 0.08191
* Fixes
- Work around a *critical* bug with potential for data loss in
DBD::SQLite - RT#79576
- Audit and correct potential bugs associated with braindead reuse
of $1 on unsuccessful matches
- Fix incorrect warning/exception originator reported by carp*() and
throw_exception()
0.08209 2013-03-01 12:56 (UTC)
* New Features / Changes
- Debugging aid - warn on invalid result objects created by what
seems like an invalid inheritance hierarchy
* Fixes
- Fix another embarrassing regression preventing correct refining of
the search criteria on a prefetched relation (broken in 0.08205)
- Fix incorrect callsite reporting by DBIC::Carp
0.08208 2013-02-20 09:56 (UTC)
* New Features / Changes
- A bunch of nonsensically named arguments to the SQL::Translator
parser have been marked as deprecated (while still fully
supported)
* Fixes
- Fix duplicated selected columns when calling 'count' when a same
aggregate function is used more than once in a 'having' clause
(RT#83305)
- Prevent SQL::Translator::Producer::YAML from seeing the $dbh
in a potentially connected $schema instance (RT#75394)
* Misc
- Fixup our distbuilding process to stop creating world-writable
tarball contents (implicitly fixes RT#83084)
- Added strict and warnings tests for all lib and test files
0.08206 2013-02-08
* Fixes
- Fix dbh_do() failing to properly reconnect (regression in 0.08205)
- Extra sanity check of a fresh DBI handle ($dbh). Fixes
connection coderefs returning garbage (seen in the wild)
* Misc
- Only allow known globals in SQL::Translator leak allowance
- General cleanup of error message texts - quote names/identifiers
for easier reading
- Stop t/52leaks.t from failing when AUTOMATED_TESTING=1
0.08205 2013-01-22
* New Features / Changes
- The emulate_limit() arbitrary limit dialect emulation mechanism is
now deprecated, and will be removed when DBIx::Class migrates to
Data::Query
- Support for the source_bind_attributes() storage method has been
removed after a lengthy deprecation cycle
* Fixes
- When performing resultset update/delete only strip condition
qualifiers - leave the source name alone (RT#80015, RT#78844)
- Fix incorrect behavior on resultset update/delete invoked on
composite resultsets (e.g. as_subselect_rs)
- Fix update/delete operations referencing the updated table failing
on MySQL, due to its refusal to modify a table being directly
queried. As a workaround induce in-memory temp-table creation
(RT#81378, RT#81897)
- More robust behavior under heavily threaded environments - make
sure we do not have refaddr reuse in the global storage registry
- Fix failing test on 5.8 under Win32 (RT#81114)
- Fix hash-randomization test issues (RT#81638)
- Disallow erroneous calling of connect_info on a replicated storage
(RT#78436)
* Misc
- Improve the populate docs in ::Schema and ::ResultSet
- ::Storage::DBI::source_bind_attributes() removed as announced
on Jan 2011 in 0e773352a
0.08204 2012-11-08
* New Features / Changes
- SQLMaker now accepts \'literal' with the 'for' rs attribute as an
override to the builtin FOR options
* Fixes
- Fix unique constraint violations in Ordered.pm blanket movement
(RT#79773, rolls back short-sighted 5e6fde33e)
- Fix API mismatch between new_result() and new_related() (originally
broken by fea3d045)
- Fix test failure on perl 5.8
* Misc
- Much more extensive diagnostics when a new RDBMS/DSN combination is
encountered (RT#80431)
0.08203 2012-10-18
* Fixes
- Really fix inadequate $dbh->ping SQLite implementation (what shipped
in 0.08201 tickled other deficiencies in DBD::SQLite itself)
0.08202 2012-10-06
* Fixes
- Replace inadequate $dbh->ping SQLite implementation with our own,
fixes RT#78420
0.08200 2012-08-24 (UTC)
* Fixes
- Change one of the new tests for the previous release to not require
SQL::Translator
0.08199 2012-08-22 (UTC)
* Fixes
- Roll back incomplete (and broken) internal changes - restore prefetch functionality
0.08198 2012-07-11 03:43 (UTC)
* Fixes
- Fix a number of Win32 Test issues
- Fix silent Oracle connection failures
0.08197 2012-07-10 10:32 (UTC)
* New Features / Changes
- Issue a warning when DateTime objects are passed to ->search
- Fast populate() in void context is now even more efficient by
going directly through execute_for_fetch bypassing execute_array
- Fix update()/delete() on complex resultsets to no longer fall back
to silly row-by-row deletion, construct a massive OR statement
instead
- Allow complex update/delete operations on sources without a
primary key, as long as they have at least one non-nullable
unique constraint
- dbicadmin now better supports catalyst-style config files, by
unrolling 'config_info' hashkeys
- Multiple Improvements MSSQL over DBD::ADO
- Transaction support
- Support for VARCHAR(MAX)/VARBINARY(MAX)/NVARCHAR(MAX) datatypes
- Nomalization of retrieved GUID values
* Fixes
- Fix complex has_many prefetch with resultsets not selecting identity
columns from the root result source
- Fix SkipFirst and FirstSkip limit dialects (Informix and Firebird)
- Fix "Skimming limit" dialects (Top, FetchFirst) to properly check
the order_by criteria for stability
- Fix "Skimming limit" dialects (Top, FetchFirst) to propagate
non-selected order criteria when part of a larger subquery
- Fix RowNumberOver and all "skimming limits" to correctly assemble
bind values when supplied for both select and order_by
- Fix all subquery-based dialects to not lose a subquery fragment
when we both select and order by the result of the same subquery
- Fix the Sybase hubrid limit dialect (RowCountOrGenericSubQ) losing
Group/Having/Order clauses when called without an offset (RT#73244)
- No longer generate incorrect SQL on ->as_query called on resultsets
with software_limit enabled
- A number of corner case fixes of void context populate() with \[]
- Fix corner case of forked children disconnecting the parents DBI
handle
- Improve identity/autoinc retrieval code in MSSQL and Sybase -
should reduce weird side-effects especially with populate()
- Explicitly disable DBD::ODBC batch operations (as of DBD::ODBC 1.35)
for the following drivers too buggy to handle the optimized path:
- FreeTDS ODBC driver (when used with MSSQL)
- The Firebird ODBC driver
- The MSAccess ODBC driver
- Explicitly disable DBD::ODBC dynamic_cursors when using freetds 0.83
or later - they made enough ODBC incompatible changes making it
impossible to support sanely
- Explicitly disable SCOPE_IDENTITY queries and statement caching for
MSSQL on DBD::Sybase compiled against freetds 0.83 or later - way too
buggy
- Disable statement caching when using Sybase ASE and DBD::Sybase
compiled against freetds 0.83 or later
- Fix leakage of $schema on in-memory new_related() calls
- Fix more cases of $schema leakage in SQLT::Parser::DBIC
- Fix leakage of $storage in ::Storage::DBI::Oracle
- Fix pessimization of Oracle RowNum limit dialect query when no
offset has been specified
- Remove useless vestigial pessimization in Ordered.pm for cases
when the position column is part of a unique constraint
- Fix dbicadmin to no longer ignore the documented 'config' option
- The schema-resultsource entanglement is now much more robust
under threads
- Fix ::Schema::ddl_filename() failing miserably on paths containing
certain numeric sequences
- t/53lean_startup.t adjusted for new 5.15.x base.pm behavior
* Misc
- Centralized leak-checks for all instances of DBICTest::Schema
from within any test
- Now passes all tests with Test::Builder 1.005
- Codebase is now trailing-whitespace-free
- Cleanup of complex resultset update/delete oprations - storage
specific code moved back to ResultSet and replaced by checks
of storage capabilities
- Fixed carp_once only emitting one single warning per package
regardless of warning content
- Test suite now can be safely executed in parallel (prove -jN
or HARNESS_OPTIONS=jN)
0.08196 2011-11-29 05:35 (UTC)
* Fixes
- Fix tests for DBD::SQLite >= 1.34.
- Fix test failures with DBICTEST_SQLITE_USE_FILE set
- Fix the find() condition heuristics being invoked even when the
call defaults to 'primary' (i.e. when invoked with bare values)
- Throw much clearer error on incorrect inflation spec
- Fix incorrect storage behavior when first call on a fresh schema
is with_deferred_fk_checks
- Fix incorrect dependency on Test::Simple/Builder (RT#72282)
- Fix uninitialized warning in ::Storage::Sybase::ASE
- Improve/cache DBD-specific datatype bind checks (also solves a
nasty memleak with version.pm on multiple ->VERSION invocations)
- The internal carp module now correctly skips CAG frames when
reporting a callsite
- Fix test failures on perl < 5.8.7 and new Package::Stash::XS
- Fix TxnScopeGuard not behaving correctly when $@ is set at the
time of $guard instantiation
- Fix the join/prefetch resolver when dealing with ''/undef/()
relation specifications
* Misc
- No longer depend on Variable::Magic now that a pure-perl
namespace::clean is available
- Drop Oracle's Math::BigInt req down to 1.80 - no fixes concerning
us were made since
0.08195 2011-07-27 16:20 (UTC)
* Fixes
- Fix horrible oversight in the Oracle sqlmaker when dealing with
queries updating blobs (RT#69829)
0.08194 2011-07-20 16:10 (UTC)
* Fixes
- Fix $rs->populate([]) to be a no-op rather than an exception
- Overhaul t/53lean_startup.t to better dodge false positives
- Stop Data::Compare from loading random plugins
- Oracle: Recalculate LOB bind indices for UPDATE with LOBs in WHERE
(RT#69548)
0.08193 2011-07-14 17:00 (UTC)
* New Features / Changes
- Allow schema cloning to mutate attributes
- DBIC now attempts more aggressive de-duplication of where
conditions on resultset chaining
- The Ordered component is now smarter wrt reordering of dirty
objects, and does its job with less storage queries
- Logging via DBIC_TRACE=1=<filename> no longer overwrites the
logfile on every program startup, appending loglines instead
* Fixes
- Fix issue where the query was becoming overly mangled when trying
to use pagination with a query that has a sub-select in the WHERE
clause
- Fix possible incorrect pagination on Oracle, when a resultset
is not ordered by a unique column
- Revert "Fix incorrect signature of the default sqlt_deploy_hook"
from 0.08191 - documentation was in fact incorrect, not the code
- Fix Sybase ASE IC::DateTime support (::Storage going out of sync
with new default format expected by DateTime::Format::Sybase)
- Fix a bug in update_all() resulting in the first row receiving a
different dataset than the subsequent ones
- Accomodate MSAccess supporting only 'INNER JOIN' (not plain 'JOIN')
- InflateColumn::DateTime option datetime_undef_if_invalid no longer
masks missing dependency exceptions (RT#66823)
- Fix bug in Schema::Versioned failing to insert a schema version row
during upgrades at the turn of the second
- Fix incorrect bind of integers >= 2^^32 (bigint columns) to
SQL_INTEGER, resulting in silent conversion to '-1'
- Fix pre 5.10 failures of t/55namespaces_cleaned.t due to buggy
require() (RT#68814)
- Oracle autoinc inserts no longer leave open cursors behind
0.08192 2011-05-10 04:20 (UTC)
* Fixes
- Fix serious regression on SQLite, corrupting data when an alphanum
value does not correspond to a stale numeric datatype in colinfo
0.08191 2011-05-02 00:45 (UTC) (deleted from CPAN)
* New Features / Changes
- Add quote_names connection option. When set to true automatically
sets quote_char and name_sep appropriate for your RDBMS
- Add retrieve_on_insert column info flag, allowing to retrieve any
column value instead of just autoinc primary keys
- Bring back strict ordering of selectors in complex search chains
(an ill-fated attempt was made in 0.08127 to order intelligently)
- All limit dialects (except for the older Top and FetchFirst) are
now using bind parameters for the limits/offsets, making DBI's
prepare_cached useful across paged resutsets
- Support for savepoints for SQLite
- Support for MS Access databases via DBD::ODBC and DBD::ADO (only
Win32 support currently tested)
- Support for the Firebird RDBMS over the new DBD::Firebird driver
- IC::DateTime support for MSSQL over DBD::ADO
- Both the ::ODBC and ::ADO dispatchers now warn if a rdbms-specific
driver is not found for this connection before falling back to
plain ::Storage::DBI
- ::Storage::DBI::sth was mistakenly marked/documented as public,
privatize and warn on deprecated use
- Massive overhaul of bind values/attributes handling - slightly
changes the output of as_query (should not cause compat issues)
- Support ancient DB2 versions (5.4 and older), with proper limit
dialect
- Support sub-second precision for TIMESTAMPs for Firebird over ODBC
- Support BLOBs and CLOBs in WHERE clauses for Oracle, including LIKE
queries for CLOBs.
* Fixes
- Fix ::Storage::DBI::* MRO problems on 5.8.x perls
- Disable mysql_auto_reconnect for MySQL - depending on the ENV
it sometimes defaults to on and causes major borkage on older
DBD::mysql versions
- Fix dropped bind values in select/group_by on Oracle (omission
from 0542ec57 and 4c2b30d6)
- Fix remaining errors with Oracle and identifiers longer than the
Oracle-imposed maximum of 30 characters (RT#66390)
- Fix older oracle-specific "WhereJoins" to work properly with
name quoting
- Fix problems with M.A.D. under CGI::SpeedyCGI (RT#65131)
- Reenable paging of cached resultsets - breakage erroneously added
in 0.08127
- Better error handling when prepare() fails silently
- Fixes skipped lines when a comment is followed by a statement
when deploying a schema via sql file
- Fix reverse_relationship_info on prototypical result sources
(sources not yet registered with a schema)
- Warn and skip relationships missing from a partial schema during
dbic cascade_delete
- Automatically require the requested cursor class before use
(RT#64795)
- Work around a Firebird ODBC driver bug exposed by DBD::ODBC 1.29
- Fix (to the extent allowed by the driver) transaction support in
DBD::Sybase compiled against FreeTDS
- Fix exiting via next warnings in ResultSource::sequence()
- Fix stripping of table qualifiers in update/delete in arrayref
condition elements
- Change SQLMaker carp-monkeypatch to be compatible with versions
of SQL::Abstract >= 1.73
- Fix using \[] literals in the from resultset attribute
- Fix populate() with \[], arrays (datatype) and other exotic values
- Fix handling of rollbacks in nested transactions
- Fix complex limits (RNO/RowNum/FetchFirst/Top/GenSubq) with
sub-selects in the selectors list (correlated subqueries)
- Fix inconsistency between $rs->next with and without HRI when all
the "root" columns are in fact injected from the right rs side
- Fix the join optimizer to correctly preserve the non-multi path to
a multi relationship ( x -> might_have y -> has_many z )
- Fix object-derived custom-relationship resultsets to resultsources
with multilevel monikers (e.g. $schema->source('Foo::Bar') )
- Fix incorrect signature of the default sqlt_deploy_hook - it now
matches the documentation of passing in the result source object
- Fix inadequate handling of internal storage methods within
::Storage::Replicated (RT#66295)
* Misc
- Rewire all warnings to a new Carp-like implementation internal
to DBIx::Class, and remove the Carp::Clan dependency
- Only load Class::C3 and friends if necessary ($] < 5.010)
- Greatly reduced loading of non-essential modules to aid startup
time (mainly benefiting CGI users)
- Make sure all namespaces are clean of rogue imports
- Dropped DBI req 2 years back - everything works with 1.57, no
point requiring something newer
0.08190-TRIAL 2011-01-24 15:35 (UTC)
* New Features / Changes
- Support for completely arbitrary SQL::Abstract-based conditions
in all types of relationships
0.08127 2011-01-19 16:40 (UTC)
* New Features / Changes
- Schema/resultsource instances are now crossreferenced via a new
system guaranteeing leak-free mutually assured destruction
- DBIx::Class now warns when the user erroneously supplies
AutoCommit => 0 to connect()
- A warning is also issued before forcing the RaiseError
setting of externally supplied DBI handles
- Switch to a warning when find() is invoked with both a 'key'
argument and a NULL-containing condition to satisfy the named
constraint. Previously (starting with 0.08124) an exception was
thrown
- Switch to a warning when a commit is attempted with an out-of-sync
transaction_depth (someone issued a begin externally to DBIC).
Previously (starting with 0.08124) an exception was thrown
* Fixes
- A number of improvements/diagnostics of multiple active resultset
handling on MSSQL over DBD::ODBC
- Revert default selection to being lazy again (eagerness introduced
in 0.08125) - fixes DBIx::Class::Helper::ResultSet::RemoveColumns
- Fix losing order of columns provided in select/as (regression from
0.08125)
- Unaliased "dark" selectors no longer throw off prefetch
- Fix proper composition of bind values across all possible
SQL areas ( group_by => \[ ... ] now works properly )
- Allow populate to skip empty has_many relationships which makes
it easier to pass HashRefInflator data directly to ->populate
- Improve freeze/thaw semantics and error messages (RT#62546)
- Fix inconsistency in Manual::Features (RT#64500)
- Fix incorrect SQL when using for => 'shared' with MySQL (RT#64590)
- Throw comprehensible exception on erroneous $schema->source()
invocation
- Fix sloppy refactor of ResultSource::sequence back from 89170201
(RT#64839)
- Fix incorrect error detection during populate() on Oracle
- Better handling of result_source-less row objects by
auto-calling result_source_instance when necessary
- Fix reverse_relationship_info and sqlt deploy on partially
loaded schemas (relationships point to non-existent sources)
* Misc
- Fix test warning on win32 - at this point the test suite is
warning-free on all known OSes
- Require newest namespace::clean which in turn depends on new
installable Package::Stash
0.08126 2010-12-28 18:10 (UTC)
* Fixes
- Bump forgotten Class::Accessor::Grouped core dependency
- Promote forgotten Hash::Merge optdep to a hard requirement
- Skip t/storage/error.t on smokers with leaking perls
- Fix t/storage/txn.t deadlocks on slower machines
- Do not run on smokers if a trial Package::Stash is found
0.08125 2010-12-27 04:30 (UTC)
* New Features / Changes
- New method ResultSource columns_info method, returning multiple
pairs of column name/info at once
- $rs->search now throws when called in void context, as it makes
no sense (and is nearly always a sign of a bug/misdesign)
- Restore long-lost ability to supply unbalanced select/as pairs
e.g. +select => \'DISTINCT(foo, bar)', +as => ['foo', 'bar']
- +columns now behaves just like columns by not stripping a
fully-qualified 'as' spec (i.e. foo.bar results in $obj->foo->bar)
- Deprecate legacy $rs->search( %condition ) syntax (warn once per
callsite)
- NULL is now supplied unquoted to all debug-objects, in order to
differentiate between a real NULL and the string 'NULL'
- New search() condition operator -value used to pass complex bind
values to DBI: search({ array_col => { -value => [1,2,3] }})
- Add full INSERT...RETURNING support for Oracle
- Deprecate use of -nest in search conditions (warn once per
callsite)
- Deprecate the completely useless DBIx::Class::Serialize::Storable
result component
* Fixes
- Fixed read-only attribute set attempt in ::Storage::Replicated
(RT#62642)
- Fix incomplete logic while detecting correct Oracle sequence
on insert
- Fix detection of Oracle sequences for tables without an explicitly
specified schema (RT#63493)
- Major overhaul of Storage::Oracle to handle enabled quoting
- Fixed incorrect composition of select/as/columns attributes during
chaining (RT#61235)
- Proper serialization of resultsets with open cursors
- Refactor handling of RDBMS-side values during insert() - fix
regression of inserts into a Postgres / ::Replicated combination
- Missing dependency check in t/60core.t (RT#62635)
- Fix regressions in IC::DT registration logic
- Fix regression in select-associated bind value handling (RT#61025)
- Simplify SQL generated by some LIMITed prefetching queries
- Throw an exception when a required group_by on a complex prefetch
can not be auto-constructed, instead of continuing to eventually
produce invalid SQL
- Fix infinite loops on old perls with a recent Try::Tiny
- Improve "fork()" on Win32 by reimplementing a more robust DBIC
thread support (still problematic, pending a DBI fix)
- Properly quote table name on INSERT with no values
- Work around possible Storage destruction warnings
- Fix count of grouped resultsets using HAVING with aliases
- Setting belongs_to columns/relationships no longer leaves the
FK value and related object out of sync
- Stop stripping newlines from SQL statements in the limit emulators
as it is possible that custom sql with comments was provided
- Add forgotten attributes to Admin.pm
- Fix incorrect 'having' attribute documentation (RT#64129)
- Improve fallback-to-master/return-to-slave reporting in
::Replicated::Balancer
- Adjust txn_scope_guard code/tests to changes in $@ handling on
recent blead (RT#64251)
* Misc
- Add extra option groups to DBIC::Optional::Depencencies, to aid
users in requesting the prerequisites for a particular RDBMS
- Switch all serialization to use Storable::nfreeze for portable
architecture independent ice
- Fix the bogus META.yml dependency injection issue for good
- Refactor DBIx::Class::Storage::Statistics::debugfh() to be lazy
0.08124 2010-10-28 14:23 (UTC)
* New Features / Changes
- Add new -ident "function" indicating rhs is a column name
{ col => { -ident => 'othercol' } } vs { col => \'othercol' }
- Extend 'proxy' relationship attribute
- Use DBIx::Class::Storage::Debug::PrettyPrint when the
environment variable DBIC_TRACE_PROFILE is set, see
DBIx::Class::Storage for more information
- Implemented add_unique_constraints() which delegates to
add_unique_constraint() as appropriate
- add_unique_constraint() now poparly throws if called with
multiple constraint definitions
- No longer depend on SQL::Abstract::Limit - DBIC has been doing
most of the heavy lifting for a while anyway
- FilterColumn now passes data through when transformations
are not specified rather than throwing an exception.
- Optimized RowNum based Oracle limit-dialect (RT#61277)
- Requesting a pager on a resultset with cached entries now
throws an exception, instead of returning a 1-page object
since the amount of rows is always equal to the "pagesize"
- $rs->pager now uses a lazy count to determine the amount of
total entries only when really needed, instead of doing it
at instantiation time
- New documentation map organized by features
(DBIx::Class::Manual::Features)
- find( { ... }, { key => $constraint } ) now throws an exception
when the supplied data does not fully specify $constraint
- find( col1 => $val1, col2 => $val2, ... ) is no longer supported
(it has been in deprecated state for more than 4 years)
- Make sure exception_action does not allow exception-hiding
due to badly-written handlers (the mechanism was never meant
to be able to suppress exceptions)
* Fixes
- Fix memory leak during populate() on 5.8.x perls
- Temporarily fixed 5.13.x failures (RT#58225)
(perl-core fix still pending)
- Fix result_soutrce_instance leaks on compose_namespace
- Fix $_ volatility on load_namespaces (a class changing $_
at compile time no longer causes a massive fail)
- Fix find() without a key attr. choosing constraints even if
some of the supplied values are NULL (RT#59219)
- Fixed rels ending with me breaking subqueried limit realiasing
- Fixed $rs->update/delete on resutsets constrained by an
-or condition
- Remove rogue GROUP BY on non-multiplying prefetch-induced
subqueries
- Fix incorrect order_by handling with prefetch on
$ordered_rs->search_related ('has_many_rel') resultsets
- Oracle sequence detection now *really* works across schemas
(fixed some ommissions from 0.08123)
- dbicadmin now uses a /usr/bin/env shebang to work better with
perlbrew and other local perl builds
- bulk-inserts via $dbh->bind_array (void $rs->populate) now
display properly in DBIC_TRACE
- Incomplete exception thrown on relationship auto-fk-inference
failures
- Fixed distinct with order_by to not double-specify the same
column in the GROUP BY clause
- Properly support column names with symbols (e.g. single quote)
via custom accessors
- Fixed ::Schema::Versioned to work properly with quoting on
(RT#59619)
- Fixed t/54taint fails under local-lib
- Fixed SELECT ... FOR UPDATE with LIMIT regression (RT#58554)
- Fixed CDBICompat to preserve order of column-group additions,
so that test relying on the order of %{} will no longer fail
- Fixed mysterious ::Storage::DBI goto-shim failures on older
perl versions
- Non-blessed reference exceptions are now correctly preserved
when thrown from udner DBIC (e.g. from txn_do)
- No longer disconnecting database handles supplied to connect
via a coderef
- Fixed t/inflate/datetime_pg.t failures due to a low dependency
on DateTime::Format::Pg (RT#61503)
- Fix dirtyness detection on source-less objects
- Fix incorrect limit_dialect assignment on Replicated pool members
- Fix invalid sql on relationship attr order_by with prefetch
- Fix primary key sequence detection for Oracle
(first trigger instead of trigger for column)
- Add various missing things to Optional::Dependencies
- Skip a test that breaks due to serious bugs in current DBD::SQLite
- Fix tests related to leaks and leaky perls (5.13.5, 5.13.6)
* Misc
- Entire test suite now passes under DBIC_TRACE=1
- Makefile.PL no longer imports GetOptions() to interoperate
better with Catalyst installers
- Bumped minimum Module::Install for developers
- Bumped DBD::SQLite dependency and removed some TODO markers
from tests (RT#59565)
- Do not execute t/zzzzzzz_sqlite_deadlock.t for regular module
installs - test is prone to spontaneous blow up
- DT-related tests now require a DateTime >= 0.55 (RT#60324)
- Makefile.PL now provides a pre-parsed DBIC version to the
Opt::Dep pod generator
- t/52leaks.t now performs very aggressive leak detection in
author/smoker mode
0.08123 2010-06-12 14:46 (UTC)
* Fixes
- Make sure Oracle identifier shortener applies to auto-generated
column names, so we stay within the 30-char limit (RT#58271)
- Oracle sequence detection now works across schemas
- Fix a Storage/$dbh leak introduced by the migration to
Try::Tiny (this is *not* a Try::Tiny bug)
- Fix corner case of count with group-by over a 1:1 join column
where the selector ends up with column name clashes
- POD fixes (RT#58247)
* Misc
- Test suite default on-disk database now checks for Win32
fail-conditions even when running on other OSes
0.08122 2010-06-03 17:41 (UTC)
* New Features
- Add DBIx::Class::FilterColumn for non-ref filtering
- ::Storage::DBI now correctly preserves a parent $dbh from
terminating children, even during interpreter-global
out-of-order destruction
- dbicadmin supports an -I option with the same semantics as
perl itself
- InflateColumn::DateTime support for MSSQL via DBD::Sybase
- Millisecond precision support for MSSQL datetimes for
InflateColumn::DateTime
- Oracle-specific hierarchical query syntax support:
CONNECT BY (NOCYCLE) / START WITH / ORDER SIBLINGS BY
- Support connecting using $ENV{DBI_DSN} and $ENV{DBI_DRIVER}
- current_source_alias method on ResultSet objects to
determine the alias to use in programatically assembled
search()es (originally added in 0.08100 but unmentioned)
- Rewrite/unification of all subselecting limit emulations
(RNO, Top, RowNum) to be much more robust wrt complex joined
resultsets
- MSSQL limits now don't require nearly as many applications of
the unsafe_subselect_ok attribute, due to optimized queries
- Support for Generic Subquery limit "emulation" - awfully slow
and inefficient but works on almost any db, and is preferred
to software limit emulation
- Sybase ASE driver now uses SET ROWCOUNT where possible, and
Generic Subquery otherwise for limit support instead of always
using software limit emulation
- create_ddl_dir (and derivatives) now attempt to create the given
$ddl_dir if it does not already exist
- deployment_statements now automatically supplies the current RDBMS
version to SQLT producer_args for MySQL, Pg, SQLite and Oracle
* Fixes
- Fix nasty potentially data-eating bug when deleting/updating
a limited resultset
- Fix find() to use result_class set on object
- Fix result_class setter behaviour to not mistakenly stuff attrs.
- Don't try and ensure_class_loaded an object. This doesn't work.
- Fix as_subselect_rs to not inject resultset class-wide where
conditions outside of the resulting subquery
- Fix count() failing with {for} resultset attribute (RT#56257)
- Fixed incorrect detection of Limit dialect on unconnected $schema
- update() on row not in_storage no longer throws an exception
if there are no dirty columns to update (fixes cascaded update
annoyances)
- update()/delete() on prefetching resultsets no longer results
in malformed SQL (some $rs attributes were erroneously left in)
- Fix dbicadmin to allow deploy() on non-versioned schema
- Fix dbicadmin to respect sql_dir on upgrade() (RT#57732)
- Update Schema::Versioned to respect hashref style of
connection_info
- Do not recreate the same related object twice during MultiCreate
(solves the problem of orphaned IC::FS files)
- Fully qualify xp_msver selector when using DBD::Sybase with