-
Notifications
You must be signed in to change notification settings - Fork 9
/
Changes
544 lines (419 loc) · 18.3 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
Revision history for Perl extension DBIx::DataModel.
v3.11 28.04.2024
- Carp::Clan replaced by Carp::Object
- new Schema attribute: 'frame_filter' (to be transmitted to Devel::StackTrace)
- new Schema attribute: 'auto_show_error_statement'
- $dbh->{ShowErrorStatement} is automatically turned on by default
- more precise multiplicity rules for Compositions
- the composite multiplicity must be 1..1 (previously 0..1 was incorrectly allowed)
- the component multiplicity must not be 1..1 (previously 0..1 was incorrectly forbidden)
v3.10 11.03.2024
- bug fix : schema attribute setters must accept undef (for erasing the attribute)
- added tests for the debug() method
- internal refactoring : find_result_class() is now done in the metaschema, not in Statement class
v3.09 27.01.2024
- installing $dbh->{HandleError} so that error messages are reported from the caller's perspective
- new feature: select(..., -result_as => [subquery => 'aliased_column'])
v3.08 13.01.2024
- new Statement arg : -sql_abstract (can also be written -with) for supporting Common Table Expressions
- refactoring of method Statement::refine()
v3.07 26.12.2023
- -where_on : support for table aliases and association names
v3.06 22.11.2023
- support for SQL dialect 'Oracle12c'
- new arguments 'sql_abstract_class' and 'sql_abstract_args' to define_schema()
v3.05 26.07.2023
- new method $statement->nb_fetched_rows & fix buggy $statement->page_boundaries
v3.04 05.11.2022
- fix $metatable->components (was populated on both paths, which is obviously wrong)
v3.03 23.07.2022
- forgot to update Build.PL to depend on SQL::Abstract::More v1.39
v3.02 22.07.2022
- upgrade dependency on SQL::Abstract::More v1.37
- fix circular dependency in Meta::Utils
- fix documentation of Meta::Utils (API as functions instead of methods)
v3.01 02.02.2021
- upgrade dependency on SQL::Abstract::More v1.37
- internals: common infrastructure for abstract methods
- fix a very old bug : make class method primary_key() work in multi-schema mode.
- cleanup references to old method primKey() instead of primary_key()
- replace Acme::Damn by Data::Structure::Util
- documentation and tests for the set operators -union, -intersect, etc.
- -result_as => 'hashref' or 'categorize' can take a subroutine argument
- kwalitee improvements (Filippo Biondi++)
v3.0 23.02.2018
- bump to next major version
- complete revision of documentation
v2.47_06-08 06.02.2018
- after_commit callbacks are executed outside of the transaction
- new schema parameter 'resultAs_classes'
- suppress ConnectedSource -- now handled directly within source classes
- new parameter 'join_with_USING', both at statement and at schema level
- simplification and cleanup of all v2 tests
v2.47_05 08.01.2018
- extending -result_as through subclasses in DBIDM::Schema::ResultAs namespace
- new result kinds : xlsx, tsv, file_tabular, count, table, etc.
- methods db_schema() and with_db_schema to prefix tables by DB schema name
- new method $schema->do_after_commit()
- new statement methods : dbh(), finish(), headers()
- better factorization of operations for update()
- better validation of arguments (no longer allow_extra)
- use Carp::Clan
- drop dependency on Scalar::Does
- Meta::Utils exports subroutines instead of OO methods
- suppress ConnectedSource -- methods are handled directly in Source classes
- main test suite ported to v2 syntax
- fix RT#113092 "can't locally disable a schema-general auto_update spec"
- upgraded dependency on SQL::Abstract::More, v1.32
- new statement option -join_with_USING
- avoid defined-or to be compatible with Perl 5.8
- simplification and cleanup of all v2 tests
v2.46 02.06.2015
- let SQL::Abstract quote identifiers in ON conditions (Sergiy Zuban++)
- fix some edge cases for $statement->row_count() (Sergiy Zuban++)
- RT#102908, schema generator accepts databases without any foreign key assoc
- RT#104856, allow dots in DBMS function names (like Oracle DBMS_LOB.SUBSTR)
v2.45 08.01.2015
- fix incorrect handling of column aliases in nested subqueries
v2.44 19.12.2014
- RT100996, allow literal SQL in inserts
- RT099205, transactions & changing dbh
v2.43 21.04.2014
- drop statement methods ->goto_page(), ->shift_page(), ->next_page()
- new recipe in Cookbook : how to quote table and column names (RT#93529)
- check reftypes through Scalar::Does
- call ->finish() on sth (Sergiy Zuban++)
v2.42 04.01.2014 : adding support for Plack::App::AutoCRUD
- case-insensitivity for method $schema->db_table($db_name)
- Schema::Generator::fromDBI takes new arguments $catalog, $schema, $type
v2.41 22.07.2013
- fix bug in define_class() when DBIDM was artificially pre-populated
- added method $schema->db_table($db_name)
- don't generate duplicate associations with same names between same tables
- better API for Generator.pm
- Statement::Oracle, correct handling of -page_size / -page_index
v2.40 24.06.2013
- fix multiple inheritance bug in joins with the same table twice
v2.39 17.06.2013
- fix https://rt.cpan.org/Ticket/Display.html?id=86219 (-where_on side effect)
v2.38 25.05.2013
- fixed test in v2_generator.t when Lingua::Inflect::EN is not installed
v2.37 21.05.2013
- removed workaround for DBD::Oracle bug (fixed in v1.62)
v2.36 18.04.2013
- adapt for SQLAM 1.15 : bind values with types must be of shape
[{dbd_attrs => \%datatype}, $orig_value] (like in DBIx::Class)
v2.35 14.04.2013
- reintroduced tmp workaround for DBD::Oracle bug (will only be fixed in v1.61)
- adapt for SQLAM 1.14
v2.34 08.04.2013
- new arg for select() : "-where_on" (still experimental)
- Schema::Generator automatically infers compositions from ON DELETE CASCADE
- support for for values of shape [$orig_value, \%datatype] that will be
passed to the 3-args form of DBI::bind_param()
- remove workaround for https://rt.cpan.org/Ticket/Display.html?id=84170
(was fixed in DBD::Oracle 1.60)
v2.33 24.03.2013
- removed old workaround for DBD::Oracle bug
https://rt.cpan.org/Ticket/Display.html?id=76410
- require minimal version 1.45 for DBD::Oracle (which fixed #76410)
- tmp workaround for new DBD::Oracle bug
https://rt.cpan.org/Ticket/Display.html?id=84170
v2.32 19.02.2013
- do the right thing when SQL::Abstract(array_datatypes => 1)
- new feature: $schema->autolimit_firstrow(1);
v2.31 08.02.2013
- Support for DBIx::RetryOverDisconnects in transactions
- Schema::Generator uses Lingua::EN::Inflect::Phrase; test implemented
using DBD::SQLite v1.38_01
v2.30 31.08.2012
- changed check if should return pKey from "exists" to "defined"
in _singleInsert
v2.29 18.08.2012
- fix insert() when primary key is over several columns
- removed deprecated call to defined(@array)
- declare POD =encoding so that Pod::Simple is happy
v2.28 03.06.2012
- fix ->row_count() on UNION/INTERSECT
v2.27 29.05.2012
- new dependency on Try::Tiny for better evals
- support for set operators for compound queries (UNION/INTERSECT/etc)
v2.26 05.05.2012
- automatic composition of handlers when multiple under the same name
- added TO_JSON method so that the JSON module can happily encode
DBIDM data rows
v2.25 21.04.2012
- skip Oracle tests when DBD::Oracle is not installed
v2.24 20.04.2012
- fixed a bug with Oracle cursors
v2.23 19.03.2012
- added support for INSERT .. RETURNING .. INTO .. (used by Oracle)
v2.22 08.03.2012
- fixed bug in ->update() with nested refs, bug introduced in v2.20
v2.21 29.02.2012
- fixed bug in $meta_source->tables(), ->associations(), etc.
v2.20 14.02.2012
- fixed bug on update() in multi-schema mode
- bulk updates now apply the 'to_DB' handler
todo upd Reference
- REMOVED AUTOMATIC COMPATIBILITY v1; now needs arg Compatibility => 1.0
v2.10 26.01.2012
- fixed bug on delete() method, introduced in v2.09
v2.09 21.01.2012
- error message when wrong call to $schema->Table(..)
- error message when wrong call to ->do_transaction(sub {...})
- update() accepts refs to refs or scalars for verbatim SQL
v2.08 18.12.2011
- forgot to declare use POSIX qw/LONG_MAX/ -- buggy on Perl 5.8
v2.07 16.12.2011
- using new SQLA::More API for insert/update/delete
- new class Statement::Oracle, support for scrollable cursors
v2.06 07.12.2011
- new method Path::opposite()
v2.05 14.11.2011
- bug fix in strict V2 mode : Table.pm was still using old V1 syntax "componentRoles"
v2.04 14.11.2011
- bug fix in strict V2 mode : Path.pm was still using old V1 syntax
v2.03 11.11.2011
- forgot to use Meta::Utils in Statement.pm.
v2.02 12.10.2011
- namespace::autoclean conflicts with autoload. Replaced by namespace::clean
v2.01 07.10.2011
- missing AutoExpand in v1 compatibility mode
- suppress 1 warning in string comparison
v2.0 12.09.2011
CPAN publish
v1.99_06 21.08.2011
- refactoring : new class ConnectedSource, not to confuse with Statements
v1.99_05 14.08.2011
v1.99_04 13.08.2011
- fixed broken test on perl 5.8/5.10 (MRO::Compat loaded too late)
- yet more doc (Design.pod)
v1.99_03 06.08.2011
- Reference.pod finished. Still work to do on other pods.
v1.99_02 02.08.2011
- many updates in doc (not totally finished yet)
v1.99_01 31.07.2011
MAJOR REVISION, see Doc/Delta_2.0.pod
- new metaclass / reflection layer
- use base ==> use parent
- deprecated Autoload()
- removed keepLasth, lasth
- dropped support for positional args to select()
v1.29 25.07.2011
- fixed limit/offset in Statement::JDBC (old bug never discovered!)
v1.28 10.06.2011
- fixed tests when DBD::Mock < 1.39 ("skip" statement was wrong)
- statement status is a dualvar (int, string)
- $source->createStatement() is deprecated
- new parameter for select() : -prepareAttrs
v1.27 30.05.2011
- fetch() : do not allow undefs in primary key
- reuseRow() : hash key names are taken from $sth->{FetchHashKeyName};
- bug fix: -resultAs => flat_arrayref does preserve column order
- $schema->dbh(undef) erases the current $dbh
v1.26 31.10.2010
- -postFetch renamed as -postBless
- no longer import deprecated UNIVERSAL qw/isa/
- fix tests broken by SQL::Abstract::Test 1.69 no longer case-insensitive
v1.25 03.06.2010
- added the -returning option to insert()
v1.24 18.04.2010
- implemented 'primKey' for views, and moved method to Source.pm
- added the -resultAs => "hashref" option to select()
v1.23 29.03.2010
- back to use POSIX qw(INT_MAX); # because import () breaks on 5.8,
see http://rt.cpan.org/Public/Bug/Display.html?id=55989
v1.22 26.03.2010
- use POSIX (); (because import() was buggy on Win32)
- added property 'limitOffset' in sqlDialect
v1.21 01.03.2010
- localize $@ in Schema::_State::DESTROY
- selectImplicitlyFor not applied when -resultAs => 'subquery'
- updated doc : no longer necessary to use BEGIN blocks
v1.20 17.02.2010
- more flexible parameterization for calling last_insert_id
v1.19 17.08.2009
- insert(..) now accepts a list of arrayrefs (kind of 'populate' method)
- fixes in the doc (thanks to Terrence Brannon for many suggestions)
- announce discussion group @ googlegroups & public source @ svn.ali.as
v1.18 31.07.2009
- added missing "use DBI" in Schema::Generator
- added Schema methods 'table' and 'view'
- more liberal in _createPackage, just check not clobbering @ISA
v1.17 10.06.2009
- treat case when $schema->dbh is undef
v1.16 10.06.2009
- doTransaction properly calls dbh() instead of direct access to classData
- localizeState properly calls setter methods when restoring previous state
v1.15 02.06.2009
- bug fix on reporting rollback exceptions
v1.14 20.04.2009
- bug fix on adaptations for SQL::Abstract v1.51 (select(-where => [...]))
v1.13 08.04.2009
- adaptations for SQL::Abstract v1.51 (syntax change for -and/-or)
v1.12 17.03.2009
- stupid error in count of SKIP tests (MsAccess.t) when DBD::Mock is absent
v1.11
- dependency on SQL::Abstract v1.50, tests adapted
- nested records in insert(): allow for empty arrayref
v1.10
- exceptions during doTransaction are returned as a blessed arrayref
v1.09
- fixed bug with ->fetch(@prim_key) when scalar(@prim_key) > 1
v1.08
- fixed bug with -pageIndex (missing code)
v1.07
- adapted tests for DBD::Mock 1.39
v1.06
- Schema.pm : replaced deprecated
if(defined(%{$pck.".."}))
by
if(%{$pck.".."})
- t/Storable.t :
- parent process in eval() to avoid child zombie if parent dies
- if Perl < 5.8, fallback to IO::String
- t/DBIx-DataModel.t :
- pre-test DBD::Mock on functionality rather than version number
- Schema.pm, View.pm : dynamic subclasses created through
@{$subclass."::ISA"} = @$aref;
instead of
*{$subclass."::ISA"} = $aref;
so that Perl5.10 method cache is properly invalidated.
v1.05
- fixed hanging test because of bug 37054 in DBD::Mock
v1.04
- removed non-portable v-string in View.pm
- fixed test when Acme::Damn is not installed
v1.03 23.09.2008 CPAN release
v1.01
- added method Schema->statementClass
- bug fixes in Statement::_resolve_source and Statement::JDBC::execute
- added -resultAs => 'flat_array' | 'subquery'
- better error message when missing foreign keys in a $object->join(...)
v1.0
MAJOR REVISION, see Doc/Delta_1.0.pod
- added fetch_cached() method
- fixed bug in select(..., -orderBy =>...)
- better error message if missing foreign key
- corrected _addSelectCriteria algorithm for merging several %where structs
- new statement object
- new method rowCount
- AbstractTable renamed as Source
- schema name is automatically prepended in table and views
INCOMPATIBLE CHANGES
- totally removed deprecated methods selectSth, applyColumnHandlers,
SqlDialect
- -resultAs => 'statement' now means 'DBIx::DataModel::Statement'
(formerly was a synonym for 'sth'
v0.42
- fix bug in Schema.pm (loading Cursor class)
v0.41
- documentation: splitting into several parts and general reworking
- Schema() : added an option to supply a customized SQL::Abstract instance
- Cursor : forbids ->next(..) and ->all() on "fast cursors"
- "ViewFromRoles", "selectFromRoles" renamed as "join", "selectJoined"
- new method Schema->localizeState()
v0.40
- added fast iterators, using DBI's bind_columns() and fetch() methods
- bug fix : fetch("") was returning the whole table!
- scrollable cursor for JDBC
v0.39 08.02.2008
- "longColumn|alias" syntax for -columns no longer modifies original data
v0.38
- bug fix Schema::FROM_THAW
v0.37
- ->select(-fetch => $key)
- doTransaction : all commits at the end
- support for Storable::freeze/thaw
v0.36
- Schema::doTransaction(): support for localizing the dbh
v0.35 12.11.2007
- Schema::doTransaction(): support for nested transactions
- insert() : if component subtrees, the composite gets the prim. keys
v0.34 30.10.2007
- minor change in Schema::doTransaction because rollback() problem in JDBC
v0.33 19.10.2007
- minor fix in Table.pm, don't delete a hash key from an each() loop
- Schema() : added options tableParent and viewParent
- select() : added option -resultAs => 'firstrow'
v0.32 21.08.2007
- minor adaptation for perl 5.9 (because strict 'refs' is stricter!)
v0.31 30.05.2007
- additional parameter in handlers called by autoUpdateColumns
v0.30 29.03.2007
- fixed bug in Schema::dbh
v0.29 14.03.2007
- AutoUpdateColumns was not called on insert -- fixed
- added AutoInsertColumns()
- added "longColumn|alias" syntax for -columns
v0.28 12.12.2006 CPAN release
- fixed bug in _rawInsert (was unblessing $self in case of exceptions)
v0.27 14.11.2006
- added Table::componentRoles()
- primKey returns column names (class method) or values (instance method)
- restructured insert(), added _singleInsert and _rawInsert
v0.26 12.11.2006
- default values for column names in Associations
- primKey returns list or scalar depending on wantarray
- added optional arguments to Schema->dbh()
- fixed arguments to last_insert_id
- consistency checks on Compositions
v0.25 09.11.2006
- more liberal parsing of multiplicities
v0.24 08.11.2006
- insert() returns list or scalar depending on wantarray
v0.23 07.11.2006
- added Composition() and cascaded insert/delete
- added support for prefixes +/- for -orderBy
v0.22 14.09.2006
- added option -postSQL to select()
- Build.pl option to support old-style Makefile.PL
- ViewFromRoles creates views in $schema::View namespace
v0.21 CPAN release 06.09.2006
- check args for ViewFromRoles
- check -resultAs value
- fixed SKIP numbers in tests (when DBD::Mock is not installed)
- fixed requires and recommends in Build.pl
v0.20 CPAN release 27.05.2006
v0.18, v0.19 - internal releases, major rewrite:
- reshuffled the inheritance tree
- restructured the documentation
- selectFromRoles() accepts roles from any table in the stack
- added many-to-many Associations
- added MethodFromRole()
- added -distinct, -groupBy and -having clauses
- insert() returns DBI->last_insert_id()
v0.17
- Minor fixes in documentation
- SqlDialect() is deprecated (replaced by arg in Schema() method)
v0.16 CPAN release 26.01.2006
- Associations now install an "insert_into_..." method
- ViewFromRoles can take explicit join kinds (_INNER_|_LEFT_)
- Schema->dbh(..) checks that RaiseError is true
- term 'arity' replaced by 'multiplicity' in doc and code
- Association() checks that multiplicities are not many to many
- fixed internal hyperlinks in POD documentation
v0.15 internal release
- added Schema methods 'classes' and 'views'
- debug method now also prints the bind values
v0.14 CPAN release 28.11.2005
- added clause "-for (readonly | update)" to select() and
added method "selectImplicitlyFor"
- doTransaction starts with $dbh->begin_work
- role methods reuse cached results from "expand"
- added method Autoload(1|0)
v0.13 internal release
- Added doTransaction
- Added Schema->lasth;
v0.12
- Added the named arguments API to select()
- new methods preselectWhere() and selectFromRoles()
- new internal functions _parseSelectArgs() and _addSelectCriteria
- rewrote implentation of Association role methods using these new functions
- new method SqlDialect
v0.11 internal release
- Updated the doc, explaining about writing role methods by hand
- Added a check in fetch() that we are in a Table class
- Changed implementation of ViewFromRoles, using INNER JOIN
v0.10 16.09.2005 First CPAN release,