forked from Perl5/DBIx-Class
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Changes
1835 lines (1700 loc) · 92.4 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
* 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
MSSQL (RT#57467)
- Fix ::DBI::Storage to always be able to present a full set of
connect() attributes to e.g. Schema::Versioned
- Fix Oracle auto-inc trigger detection of "INSERT OR UPDATE"-type
triggers
* Misc
- Reformatted Changelog \o/
- DBIC goes git://git.shadowcat.co.uk/dbsrgits/DBIx-Class.git
- Allow developers to skip optional dependency forcing when working
from a checkout
- Add a warning to load_namespaces if a class in ResultSet/ is not
a subclass of DBIx::Class::ResultSet
- All DBIC exception-handling switched to Try::Tiny
- All DBIC modules are now free of imports via namespace::clean
- Depend on optimized SQL::Abstract (faster SQL generation)
- Depend on new Class::Accessor::Grouped reintroducing optional use
of Class::XSAccessor (just install C::XSA and get lightning fast
column accessors)
0.08121 2010-04-11 18:43:00 (UTC)
- Support for Firebird RDBMS with DBD::InterBase and ODBC
- Add core support for INSERT RETURNING (for storages that
supports this syntax, currently PostgreSQL and Firebird)
- Fix spurious warnings on multiple UTF8Columns component loads
- DBIx::Class::UTF8Columns entered deprecated state
- DBIx::Class::InflateColumn::File entered deprecated state
- DBIx::Class::Optional::Dependencies left experimental state
- Add req_group_list to Opt::Deps (RT#55211)
- Add support for mysql-specific STRAIGHT_JOIN (RT#55579)
- Cascading delete/update are now wrapped in a transaction
for atomicity
- Fix accidental autovivification of ENV vars
- Fix update_all and delete_all to be wrapped in a transaction
- Fix multiple deficiencies when using MultiCreate with
data-encoder components (e.g. ::EncodedColumn)
- Fix regression where SQL files with comments were not
handled properly by ::Schema::Versioned.
- Fix regression on not properly throwing when $obj->relationship
is unresolvable
- Fix the join-optimiser to consider unqualified column names
whenever possible
- Fix an issue with multiple same-table joins confusing the join
optimizier
- Add has_relationship method to row objects
- Fix regression in set_column on PK-less objects
- Better error text on malformed/missing relationships
- Add POD about the significance of PK columns
- Fix for SQLite to ignore the (unsupported) { for => ... }
attribute
- Fix ambiguity in default directory handling of create_ddl_dir
(RT#54063)
- Support add_columns('+colname' => { ... }) to augment column
definitions.
0.08120 2010-02-24 08:58:00 (UTC)
- Make sure possibly overwritten deployment_statements methods in
schemas get called on $schema->deploy
- Fix count() with group_by aliased-function resultsets
- with_deferred_fk_checks() Oracle support
- Massive refactor and cleanup of primary key handling
- Fixed regression losing custom result_class (really this time)
(RT#54697)
- Fixed regression in DBIC SQLT::Parser failing with a classname
(as opposed to a schema object)
- Changes to Storage::DBI::Oracle to accomodate changes in latest
SQL::Translator (quote handling)
- Make sure deployment_statements is per-storage overridable
- Fix dbicadmin's (lack of) POD
0.08119 2010-02-15 09:36:00 (UTC)
- Add $rs->is_ordered to test for existing order_by on a resultset
- Add as_subselect_rs to DBIC::ResultSet from
DBIC::Helper::ResultSet::VirtualView::as_virtual_view
- Refactor dbicadmin adding DDL manipulation capabilities
- New optional dependency manager to aid extension writers
- Depend on newest bugfixed Moose
- Make resultset chaining consistent wrt selection specification
- Storage::DBI::Replicated cleanup
- Fix autoinc PKs without an autoinc flag on Sybase ASA
0.08118 2010-02-08 11:53:00 (UTC)
- Fix a bug causing UTF8 columns not to be decoded (RT#54395)
- Fix bug in One->Many->One prefetch-collapse handling (RT#54039)
- Cleanup handling of relationship accessor types
0.08117 2010-02-05 17:10:00 (UTC)
- Perl 5.8.1 is now the minimum supported version
- Massive optimization of the join resolution code - now joins
will be removed from the resulting SQL if DBIC can prove they
are not referenced by anything
- Subqueries no longer marked experimental
- Support for Informix RDBMS (limit/offset and auto-inc columns)
- Support for Sybase SQLAnywhere, both native and via ODBC
- might_have/has_one now warn if applied calling class's column
has is_nullable set to true.
- Fixed regression in deploy() with a {sources} table limit applied
(RT#52812)
- Views without a view_definition will throw an exception when
parsed by SQL::Translator::Parser::DBIx::Class
- Stop the SQLT parser from auto-adding indexes identical to the
Primary Key
- InflateColumn::DateTime refactoring to allow fine grained method
overloads
- Fix ResultSetColumn improperly selecting more than the requested
column when +columns/+select is present
- Fix failure when update/delete of resultsets with complex WHERE
SQLA structures
- Fix regression in context sensitiveness of deployment_statements
- Fix regression resulting in overcomplicated query on
search_related from prefetching resultsets
- Fix regression on all-null returning searches (properly switch
LEFT JOIN to JOIN in order to distinguish between both cases)
- Fix regression in groupedresultset count() used on strict-mode
MySQL connections
- Better isolation of RNO-limited queries from the rest of a
prefetching resultset
- New MSSQL specific resultset attribute to allow hacky ordered
subquery support
- Fix nasty schema/dbhandle leak due to SQL::Translator
- Initial implementation of a mechanism for Schema::Version to
apply multiple step upgrades
- Fix regression on externally supplied $dbh with AutoCommit=0
- FAQ "Custom methods in Result classes"
- Cookbook POD fix for add_drop_table instead of add_drop_tables
- Schema POD improvement for dclone
0.08115 2009-12-10 09:02:00 (CST)
- Real limit/offset support for MSSQL server (via Row_Number)
- Fix distinct => 1 with non-selecting order_by (the columns
in order_by also need to be aded to the resulting group_by)
- Do not attempt to deploy FK constraints pointing to a View
- Fix count/objects from search_related on limited resultset
- Stop propagating distinct => 1 over search_related chains
- Make sure populate() inherits the resultset conditions just
like create() does
- Make get_inflated_columns behave identically to get_columns
wrt +select/+as (RT#46953)
- Fix problems with scalarrefs under InflateColumn (RT#51559)
- Throw exception on delete/update of PK-less resultsets
- Refactored Sybase storage driver into a central ::DBI::Sybase
dispatcher, and a sybase-specific ::DBI::Sybase::ASE
- Fixed an atrocious DBD::ADO bind-value bug
- Cookbook/Intro POD improvements
0.08114 2009-11-14 17:45:00 (UTC)
- Preliminary support for MSSQL via DBD::ADO
- Fix botched 0.08113 release (invalid tarball)
0.08113 2009-11-13 23:13:00 (UTC)
- Fix populate with has_many bug
(RT #50828)
- Fix Oracle autoincrement broken for Resultsets with scalar refs
(RT #50874)
- Complete Sybase RDBMS support including:
- Support for TEXT/IMAGE columns
- Support for the 'money' datatype
- Transaction savepoints support
- DateTime inflation support
- Support for bind variables when connecting to a newer Sybase with
OpenClient libraries
- Support for connections via FreeTDS with CASTs for bind variables
when needed
- Support for interpolated variables with proper quoting when
connecting to an older Sybase and/or via FreeTDS
- bulk API support for populate()
- Transaction support for MSSQL via DBD::Sybase
- Add is_paged method to DBIx::Class::ResultSet so that we can
check that if we want a pager
- Skip versioning test on really old perls lacking Time::HiRes
(RT #50209)
- Fixed on_connect_do/call regression when used with a coderef
connector (RT #50003)
- A couple of fixes to Ordered to remedy subclassing issues
- Fixed another lingering problem with PostgreSQL
auto-increment support and its interaction with multiple
schemas
- Remove some IN workarounds, and require a recent version of
SQLA instead
- Improvements to populate's handling of mixed scalarref values
- Fixed regression losing result_class after $rs->find (introduced
in 0.08108)
- Fix in_storage() to return 1|0 as per existing documentation
- Centralize handling of _determine_driver calls prior to certain
::Storage::DBI methods
- Fix update/delete arbitrary condition handling (RT#51409)
- POD improvements
0.08112 2009-09-21 10:57:00 (UTC)
- Remove the recommends from Makefile.PL, DBIx::Class is not
supposed to have optional dependencies. ever.
- Mangle the DBIx/Class.pm POD to be more clear about
copyright and license
- Put back PG's multiple autoinc per table support, accidentally
dropped during the serial-autodetection rewrite
- Make sure ResultSetColumn does not depend on the (undefined)
return value of ->cursor->reset()
- Add single() to ResultSetColumn (same semantics as ResultSet)
- Make sure to turn off IDENTITY_INSERT after insert() on MSSQL
tables that needed it
- More informative exception on failing _resolve_relationship
- Allow undef/NULL as the sole grouping value in Ordered
- Fix unreported rollback exceptions in TxnScopeGuard
- Fix overly-eager left-join chain enforcing code
- Warn about using distinct with an existing group_by
- Warn about attempting to $rs->get_column a non-unique column
when has_many joins are added to resultset
- Refactor of the exception handling system (now everything is a
DBIx::Class::Exception object)
0.08111 2009-09-06 21:58:00 (UTC)
- The hashref to connection_info now accepts a 'dbh_maker'
coderef, allowing better intergration with Catalyst
- Fixed a complex prefetch + regular join regression introduced
in 0.08108
- Fixed insert_bulk rebless handling
- Fixed Storable roundtrip regression, and general serialization
cleanup
- SQLT related fixes:
- sqlt_type is now called on the correct storage object
- hooks can now see the correct producer_type (RT#47891)
- optional SQLT requirements for e.g. deploy() bumped to 0.11002
- Really fixed (and greatly cleaned up) postgresql autoinc sequence
autodetection
- Automatically detect MySQL v3 and use INNER JOIN instead of JOIN
- POD improvements (including RT#48769)
- Test suite tweaks (including fixes for recent CPANTS fails)
- Better support for MSSQL IDENTITY_INSERT ON
0.08109 2009-08-18 08:35:00 (UTC)
- Replication updates:
- Improved the replication tests so that they are more reliable
and accurate, and hopefully solve some cross platform issues.
- Bugfixes related to naming particular replicants in a
'force_pool' attribute.
- Lots of documentation updates, including a new Introduction.pod
file.
- Fixed the way we detect transaction to make this more reliable
and forward looking.
- Fixed some trouble with the way Moose Types are used.
- Made discard_chages/get_from_storage replication aware (they
now read from the master storage by default)
- Refactor of MSSQL storage drivers, with some new features:
- Support for placeholders for MSSQL via DBD::Sybase with proper
autodetection
- 'uniqueidentifier' support with auto newid()
- Dynamic cursor support and other MARS options for ODBC
- savepoints with auto_savepoint => 1
- Support for MSSQL 'money' type
- Support for 'smalldatetime' type used in MSSQL and Sybase for
InflateColumn::DateTime
- Support for Postgres 'timestamp without timezone' type in
InflateColumn::DateTime (RT#48389)
- Added new MySQL specific on_connect_call macro 'set_strict_mode'
(also known as make_mysql_not_suck_as_much)
- Multiple prefetch-related fixes:
- Adjust overly agressive subquery join-chain pruning
- Always preserve the outer join-chain - fixes numerous
problems with search_related chaining
- Deal with the distinct => 1 attribute properly when using
prefetch
- An extension of the select-hashref syntax, allowing labeling
SQL-side aliasing: select => [ { max => 'foo', -as => 'bar' } ]
- Massive optimization of the DBI storage layer - reduce the
amount of connected() ping-calls
- Some fixes of multi-create corner cases
- Multiple POD improvements
- Added exception when resultset is called without an argument
- Improved support for non-schema-qualified tables under
Postgres (fixed last_insert_id sequence name auto-detection)
0.08108 2009-07-05 23:15:00 (UTC)
- Fixed the has_many prefetch with limit/group deficiency -
it is now possible to select "top 5 commenters" while
prefetching all their comments
- New resultsed method count_rs, returns a ::ResultSetColumn
which in turn returns a single count value
- Even better support of count with limit