1 23.0.17 Oct 4, 2007 3 - Fix t/11 to cope with Class::Trigger no longer supporting multiple 4 triggers in one shot 5 63.0.16 Nov 05, 2006 7 - Better error reporting from has_a setup failure 8 93.0.15 Aug 19 2006 10 - Fix ignorage with mutator_name and accessor_name (Ask Bj�rn Hansen) 11 123.0.14 Jan 03 2006 13 - Fix breakage with mutator_name (Ask Bj�rn Hansen) 14 153.0.13 Dec 15 2005 16 - Use DBI's last_insert_id() where available (David Steinbrunner) 17 - Cope better with deleting through a might_have (Rob Brown) 18 - Allow setting a false value or NULL in a might_have (Brad Bowman) 19 203.0.12 Nov 04 2005 21 - Use Clone instead of dclone for cloning meta info to reduce required 22 perl version (Juan Camacho) and allow for closures (RT#15498) 23 - Remove lots of old deprecations 24 253.0.11 Oct 23 2005 26 27 - search through a has_many can now take hash_ref 28 - Fix documentation for SQL wildcards (RT#15145) 29 303.0.10 Oct 7 2005 31 32 - Set Storable::Deparse so that has_a subrefs can be cloned (Will Ross) 33 - Use shorter version of mk_classdata 34 - Include t/24 which was accidentally left out of MANIFEST in 3.0.9 35 363.0.9 Sep 23 2005 37 38 - Fixed bug with shared meta_info (Will Ross) 39 40 - create() has been renamed to insert() to make it much clearer that 41 it corresponds to an SQL INSERT rather than lots of different ideas 42 as to what create() might mean. create() still (silently) works. It 43 will give 'deprecated' warnings from 3.2.0 and will be removed no 44 earlier than 3.4.0. 45 46 The before/after create triggers have NOT been renamed yet as I'm 47 rethinking some of that. We'll probably end up with more trigger 48 points. Comments and suggestions welcome. 49 503.0.8 Sep 20 2005 51 52 - constraint exceptions now set their 'data' (Dan Collis Puro) 53 - method created by has_many can now override method in parent class 54 (reported by Christopher H. Laco) 55 - factored out transform_sql for easier modification 56 573.0.7 Sep 17 2005 58 59 - Make Column responsible for accessor() and mutator() so they can be 60 set up declaratively as well as programmatically (this means the 61 second argument to accessor_name and mutator_name is now a Column 62 object rather than its name, so you may need to check your case 63 sensitivity) 64 - Rename accessor/mutator_name to accessor/mutator_name_for 65 - Document that order_by clauses in sort() are passed through 66 - Make one-shot 'Essential' set up slightly more explicit in docs 67 (Adam Kennedy) 68 - Fix HasMany warning typo (argumemt) (Dan Friedman) 69 - Remove obsolete SearchGenerator code which had leaked out 70 713.0.6 Sep 16 2005 72 73 - constrain_column can now take subref constraint 74 - Document DBD::AnyData and FreeTDS issues (Matt Trout) 75 - Factor out database error handling to _db_error() 76 - Switch to Class::Accessor::Fast in Column and Relationship 77 783.0.5 Sep 14 2005 79 80 - has_many can take compile time constraints (Cees Hek) 81 - has_many can take a cascading delete strategy (deprecating the old, 82 undocumented, 'no_cascade_delete' option) 83 - columns() can take Class::DBI::Column objects directly 84 which can now in turn take options, thus allowing things like: 85 __PACKAGE__->columns(dates => Class::DBI::Column->new( 86 tdate => { placeholder => 'IF(1, CURDATE(), ?)' } 87 ) 88 893.0.4 Sep 13 2005 90 91 Pre-Reqs 92 - Note requirement for Scalar::Util 1.08+ (for refaddr) 93 94 Refactorings 95 - Move to pluggable Search interface 96 (includes reworking of search approach per Tim Bunce) 97 983.0.3 Sep 11 2005 99 100 Bug Fixes 101 - Ensure object is removed from index when delete()d (Tim Bunce) 102 - clear_object_index when new relationship set up (Tim Bunce) 103 - Fixed bug where PK values got auto-vivified 104 (Tatsuhiko Miyagawa, Christopher L. Everett, Tim Bunce) 105 - Removed 'AS' when aliasing tables; some databases don't like that 106 - Properly return -1 from unchanged object updates (Kingsley Kerce) 107 - Fixed problems with overloaded stringification of related classes 108 (Tim Bunce) 109 - Fixed bug where Essential might contain the PK twice 110 111 Refactorings 112 - Split live_object_key for easy subclassing (Tim Bunce) 113 - Split out _as_hash() to return underlying data hash 114 - Optimised _mk_column_accessors (Maurice Aubrey) 115 - Don't hard-code relationship names (Peter Speltz) 116 117 Internals 118 - Changed error message when setting up has_a with incorrect column 119 (Drew Taylor) 120 121 Documentation 122 - Fixed docs for after_update trigger and update (Kingsley Kerce) 123 1243.0.2 Sep 11 2005 125 126 Code 127 - No changes 128 129 Pre-Reqs 130 - Fixed code to explicitly need 5.6 (rather than just Makefile) 131 - Require 'version' for new 3 part versions 132 133 Tests 134 - Fixed t/01 to check mutator_name better 135 - Added NOT NULL to Primary in t/Blurb to avoid 0.95 regression 136 - Added new Test base class Class::DBI::Test::SQLite 137 - Changed all remaining uses of eq_set() to is_deeply() 138 139 Documentation 140 - Documented $obj->id() in list context (William McKee) 141 - Documented cascading delete for might_have (Tom Hukins) 142 - Documented MCFK better (plus fixed lots of typos etc) (Tom Hukins) 143 - Documented DBIx::ContextualFetch better 144 - select_val better (Dave Howorth) 145 - Fixed misspelling of Perrin Harkins 146 - Fixed documentation for the year constraint (Andy Lester) 147 - Fixed set_sql documentation to explain when it creates a method 148 - Fixed new_music documentation (Carl Johnstone) 149 - Fixed docs for CD columns to show 'reldate' (Mark Thomas) 150 - Fixed lots of other tiny doc issues 151 - Fixed docs for Essential (defaults to Primary, rather than All) 152 - Fixed docs for what gets passed to triggers (Ryan Tate) 153 1543.0.1 Sep 11 2005 155 156 - Code is identical to 0.96 157 - New section added to documentation on Release Philosophy 158 - Replace eq_set with is_deeply in t/04 to work around Test::More bug 159 1603.0.0 UNRELEASED 161 162 - IDENTICAL to 0.96. Only difference is version renumbering. 163 1640.96 30 April 2004 165 166 New Functionality 167 - Maintain live object index so subsequent requests for same row return 168 the same object (Perrin Harkins) 169 - connection() is now preferred over set_db() 170 - New relationship architecture (see Class::DBI::Relationship) 171 - meta_info now returns more information about relationships 172 - search($column => undef) now does an ISNULL search (Bart Lateur, 173 Drew Wilson, William McKee) 174 - A slice of an iterator in scalar context now gives another 175 iterator (Thomas Klausner) 176 - Attribute methods can now take slices (Charles Bailey) 177 - pass $self to inflation/deflation methods, allowing (amongst other 178 things, cross-column processing in a custom method) (Charles Bailey) 179 - deflation now happens at distinct trigger points that happen after 180 normal before_create/update triggers (Dave Cash) 181 - Columns may now set their placeholders: 182 Foo->find_column('tdate')->placeholder("IF(1, CURDATE(), ?)"); 183 - Columns know if they have been constrained 184 185 Documentation 186 - add note about needing a RootClass (and fix tests for this) 187 - Explain interaction of is_changed and auto-update (William McKee) 188 - Better examples for select_val and sql_single (Paul Makepeace) 189 - Add note about sprintf interpolation and wildcard searches in 190 home-grown queries (Christopher L. Everett) 191 - Mention the wiki 192 193 Bug Fixes 194 - Better error reporting from failed inflations [Tatsuhiko Miyagawa] 195 - You can now have a column named 'first' [Tatsuhiko Miyagawa] 196 - inflation and deflation handle edge cases better [Charles Bailey] 197 - search_ methods are only generated for SELECT calls 198 - add_constructor is now propery subclassable (Thomas Klausner) 199 200 Deprecations 201 - Class::DBI::Query is now deprecated. The SQL substitutions are a 202 much better approach. 203 - sort argument to has_many is now order_by to match search 204 - __hasa_rels and __hasa_list are deprecated in favour of meta_info 205 206 Other 207 - construct() is no longer a protected method. 208 - skip t/17 on error. There's a bug here I can't find, or fix, yet. 209 2100.95 Fri Jan 9 2004 211 212 Pre-Requisites 213 - Now requires Perl 5.6 or greater 214 215 New Functionality 216 - constrain_column() adds simple per-column constraints 217 - has_many now attempts to work out the reference column by 218 examining the foreign class's has_a() declarations, making the 3rd 219 argument to has_many mostly obsolete. 220 - __TABLE(Other::Class)__ now interpolates the table from the other 221 class, allowing avoidance of hard-coding other table names. 222 - __ESSENTIAL(alias)__ now prepends the table alias supplied to the 223 start of each column name, for avoiding column name clashes. 224 - __JOIN(alias alias)__ now inserts the SQL to join the two tables. 225 - might_have now allows creating the remote object through a simple 226 set of the accessor. [David Jack Olrik] 227 - Iterators can now be reset() [Tatsuhiko Miyagawa] 228 229 Documentation 230 - count_all, maximum_value_of and minimum_value_of are now 231 documented (along with how to implement similar methods) 232 233 Bug Fixes 234 - Allow retrieve() to take unnormalised columns, as with search [Connie] 235 - Handle stringification before Primary Key(s) are filled 236 - search() can take an overridden accessor name as a key 237 - MultiColumn primary keys working better with ColumnGrouper [Perrin 238 Harkins, Paul Makepeace, and Charles Bailey] 239 240 Deprecations 241 - _single_value_select and _single_row_select deprecated in favour 242 of new select_val and select_row methods in Ima::DBI 243 244 Other 245 - Class::Accessor can no longer be used directly to add other attributes. 246 TEMP columns should be used for this. 247 - Ensure all croaks internally go through _croak() [Richard Piacentini] 248 - deleted objects now blessed into Class::DBI::Object::Has::Been::Deleted 249 - Lots of doc patches [Jesse Sheidlower, Paul Makepeace] 250 - All internal attribute accesses now go through helper methods, 251 as first step to changing how all this works. 252 - set_sql now passes all arguments up to Ima::DBI (so you can turn 253 off caching if required) [gfalck] 254 - We now warn about column names clashing with any inherited methods, 255 not just ones defined in Class::DBI itself [Dan Thill] 256 - Silence some test warnings reported by Paul Makepeace 257 2580.94 Wed Aug 27 2003 259 260 New Functionality 261 - allow has_a() columns to hold NULL values (Dominic Mitchell) 262 - cascading deletions can be turned off by passing argument to 263 has_many setup: no_cascade_delete => 1 (undocumented/untested) 264 [now implemented as a trigger] 265 - classes and objects can be marked as read_only (experimental and 266 undocumented, although tested) 267 268 Documentation 269 - no longer refer to Class::DBI::Join, which is dead 270 - warn about inflating a primary key using has_a 271 - rewrite of docs on transactions 272 - numerous small tweaks from Jay Strauss, Alexander Karelas and Brad 273 Bowman 274 - redocument dbi_commit and dbi_rollback that have vanished... 275 276 Bug Fixes 277 - make sequences work again (Dominic Mitchell) [now with tests!] 278 - interpolation of __TABLE__ etc now happens globally, rather than 279 only once [Corion] 280 - might_have now properly does a cascading delete 281 - Fixed problem where we can't update an object which might_have a 282 relationship, but doesn't. 283 - might_have's tentative, but broken, support for MCPK has been 284 removed. 285 - Increase Class::Accessor pre-requisite to 0.18 to fix strange bug 286 reported by Casey West. 287 - Make sure we don't alter the hashref being passed to create() 288 - The after_create() trigger is now called after the object is 289 emptied, and will thus be able to see objects in has_a columns 290 (by reloading from the DB) [If you were using this 291 trigger to alter the columns to be cleaned out this 292 can (for now) be done using the 'create' trigger, 293 although that's deprecated. Let me know if you really 294 need this ability. 295 296 Deprecations 297 - move() is deprecated. The concept is broken and will be removed 298 unless someone convinces me to keep it. 299 - normalize* are no longer necessary, due to the new Column objects, 300 which store their normalized and unnormalize form. (Calling these 301 will have no effect, other than a warning). 302 - has_column deprecated in favour of find_column 303 304 Other 305 - init() now takes hash to instantiate with (Tim Bunce) 306 - Rewrite of _require_class, with better short-circuiting and error 307 message reporting (Tim Bunce) 308 - new Class::DBI::Column to represent a column. Some functionality 309 moved from ColumnGrouper to here. 310 - mutator and accessor name overrides now stored in column, and not 311 looked up every time. 312 - attempt to trap and propogate all DBI failures 313 3140.93 Wed Jul 2 2003 315 316 New Functionality 317 - Multi-column primary keys are now supported. [with huge thanks to Tim 318 Bunce] 319 - New syntax for inbuilt SQL 320 - classes can control stringification via as_string() and 321 stringify_column(). 322 - set_sql automatically translates __TABLE__, __ESSENTIAL__, and 323 __IDENTIFIER__ 324 325 Performance Improvements 326 - use Storable's dclone() rather than Data::Dumper's deepcopy 327 328 Documentation 329 - document the order_by option to search() [Drew Taylor] 330 - fix the documentation of the DBI connect string [Phil Crow] 331 - document working with pre_create triggers 332 - add a note on dynamically generating a database connection 333 - avoid using (shift => $val) due to quoting issues! [Simon Wilcox] 334 - refer to Class::DBI::Oracle for sequences [Jay Strauss] 335 - give better explanation for construct() [Jay Strauss] 336 - document get/set with multiple arguments [Jay Strauss] 337 - more detailed description of arguments to has_a() 338 339 Bug Fixes 340 - Bug with setting driver defaults [Jay Strauss + Schwern] 341 - Bug where selecting a column that was only in 'All' group also 342 attempted to fetch any TEMP columns. [Dominic Mitchell] 343 344 Removal of Functionality 345 - Undocumented ordered_search method has been removed in favour of 346 order_by option to search. 347 - Undocumented make_filter method removed in favour of add_constructor 348 - add_constructor no longer does (undocumented) %s substitutions 349 - (undocumented) single_value_select() method no longer takes raw 350 SQL fragments. 351 3520.92 Sat Apr 12 2003 353 354 New Functionality 355 - classes named after reserved SQL words can now supply a 356 table_alias either directly, or as a second argument to table(). 357 358 Deprecations 359 - hasa() now calls has_a() with a warning. It will disappear 360 completely in a forthcoming release. 361 - issue warning on use of old hasa_list 362 363 Bug Fixes 364 - class data properly propagates (i.e. two classes can once again 365 have has_a relationships of the same name) [Miyagawa + Marty] 366 - only deflate columns that are changing on update. 367 368 Other 369 - croak if update() does not change exactly one row [Tim Bunce]. 370 (Not yet live) 371 - The Essential column group now defaults to Primary rather than 372 All. 373 3740.91 Sat Mar 8 2003 375 376 New Functionality 377 - has_many can now take an extra set of search parameters at execution 378 - has_many mapping method can now be a list 379 - Class->delete(@search_args) deletes all results matching search 380 criteria. 381 - search can take a final hash of arguments. Currently the only one 382 honoured is 'order_by' 383 - searches deflate objects passed as search values as with has_a() 384 - iterators can be slice()d 385 - classes can provide their own iterators 386 - columns in the TEMP column group will be non-persistent 387 - set_sql automatically sets up a search_ method for that SQL 388 - constraints can cross-check using new syntax, and per_column 389 trigger points. 390 - the after_update trigger can modify the list of changed columns 391 to change refresh behaviour 392 - Can delete via the iterator: $cd->artists->delete_all 393 - New Class::DBI::Query module for dynamically constructing queries 394 - Standardised exception handling (thanks to Tim Bunce) 395 - on_failed_create no longer needed 396 - overloading of objects 397 - autoincrements work with SQLite 398 399 Deprecations 400 - commit() and autocommit() are now update() and autoupdate() 401 - rollback() is now discard_changes() 402 - hasa() now warns if used 403 - trigger points create() and delete() warn when called 404 - trigger point on_setting no longer exists 405 406 Optimisation 407 - has_a lazy inflates other Class::DBI instances 408 - roll our own require rather than depending on UNIVERSAL::require 409 (thanks to Tim Bunce) 410 - Don't add __Changed = {} to every object on creation, 411 just autovivify it on demand. (Tim) 412 - Avoid calling $self->primary_column in a loop in create() (Tim) 413 - Use fetchrow_arrayref instead of fetchrow_array. (Tim) 414 - Return from _deflated_column earlier if value is not a ref. (Tim) 415 - Use $sth->{NAME_lc} instead of $sth->{NAME}. (Tim) 416 - Optmize _normalized and normalize. (Tim) 417 - optimise various calls to columns() (Tim) 418 - don't reflesh after an update - defer for lazy loading 419 - Iterator no longer inherits from Class::DBI itself. 420 421 Bug Fixes 422 - has_many maps now work as iterators 423 - columns only report as being in group 'All' if they're in no 424 other columns (so lazy loading works in those cases!) 425 - calling create with a primary key of zero no longer attempts to 426 use auto_increment (Tim Bunce) 427 428 Other 429 - reference Class::DBI::AbstractSearch 430 - retrieve_from_sql removes any leading 'WHERE' 431 - inflate handles overloading better (thanks to Tim Bunce) 432 - Avoid boolean test on object, use defined instead. 433 - Tweak create() to prepare for possible caching of colmap info. 434 - better documentation on transactions 435 - test suite now uses DBD::SQLite instead of DBD::CSV 436 - consolidated some test scripts 437 4380.90 Wed Nov 27 GMT 2002 439 - hasa and associated_class merged (and deprecated) into has_a 440 - has_many therefore no longer sets up reciprocal hasa 441 - allow search() and search_like() to take multiple columns 442 - added find_or_create() 443 - add_constructor() is now preferred to make_filter() 444 - added retrieve_from_sql() for inline SQL 445 - documented running arbitrary SQL and using sth_to_objects to 446 convert these to objects. (Making sth_to_objects public too) 447 - has_many can now call a mapping method on the results 448 (for simpler many-to-many joins, for example) 449 - has_many adds an 'add_to_<whatevers>' method 450 e.g. CD->has_many(tracks => Track); 451 now adds not just 'tracks' method, but also 'add_to_tracks'. 452 (thanks to Michael Styer) 453 - try to guess table name if none given 454 - speed up iterators (thanks to Tom Renfro) 455 - added (undocumented) data_type method 456 (thanks to Tatsuhiko Miyagawa) 457 - renamed column_type() to associated_class() 458 - added references to Class::DBI::SQLite, Class::DBI::Pg, 459 and Class::Join 460 - before_create trigger can now modify object itself 461 - uses UNIVERSAL::require instead of rolling our own 462 - marked primary_key(), is_column(), add_hook() as deprecated 463 - changed _ids_to_objects to receieve listref, rather than list 464 to cope with weird bug in 5.005_03 (thanks to Tatsuhiko Miyagawa) 465 - warn if column name clashes with built-in method 466 - third argument to has_many is now optional, defaulting to our 467 'class-name' (undocumented) 468 - provide normalised method names if appropriate (i.e. a Film column 469 will give us methods $obj->Film and $obj->film). This previously 470 happened inconsistently. 471 - split most of the column related code to Class::DBI::Columns 472 - remove dependency on Class::Fields 473 - reference the new Class::DBI mailing lists 474 - Give better errors if no database connection set up 475 (thanks to Simon Cozens) 476 - A failed create now calls $class->on_failed_create, which by 477 default dies, but can be made to do whatever you like. 478 4790.89 Mon Jun 24 2002 480 - allow has_many to not have a relationship 481 (Thanks to Brian Parker) 482 - renamed (undocumented) min() and max() to 483 minimum_value_of() and maximum_value_of() 484 - croak() and carp() deprecated in favour of _croak() and _carp() 485 - primary() and essential() deprecated in favour of 486 primary_key() and _essential()/columns(essential); 487 - normalize_one() deprecated in favour of _normalize_one 488 - If a 'might-have' link points to nothing, don't give a 'Can't call 489 method' error 490 - better reporting on errors from create etc. 491 - better reporting when you incorrectly set through hasa() 492 - handle primary/foreign key value of zero better 493 (reported by Jim O'Brien) 494 - added (undocumented) 'column_type' based on ideas from 495 Matthew Simon Cavalletto and Tatsuhiko Miyagawa. 496 - brought delete triggers in line with documentation 497 (reported by Barry Hoggard, fixed by Tatsuhiko Miyagawa) 498 4990.88 Beltane 2000 500 - fix for hasa() and create() with modified accessor/mutator names 501 (Thanks to Schwern) 502 5030.87 Fri Mar 29 2002 504 * added might_have method 505 - better MySQL autoincrement code (fixes occassional problems 506 under mod_perl) [Thanks to Tatsuhiko Miyagawa] 507 - fixed a test that was failing on 5.005 (but not 5.6.1) due to weird 508 interaction between overloaded iterator and Test::More's ok() 509 prototype [Thanks to Tatsuhiko Miyagawa] 510 5110.86 Fri Mar 8 GMT 2002 512 * removed support for pseudo-hashes 513 * hasa_list is now has_many 514 (although has_many still exists for backwards compatability) 515 + has_many auto-generates reciprocal hasa decalaration 516 (unless called as hasa_list, or with { nohasa => 1 }) 517 * searches now return iterators when used in scalar context 518 - hooks are now called 'triggers' (using Class::Trigger) 519 * new trigger for SELECT 520 * added basic constraints 521 + added support for filters on the same column 522 (%s >= ? OR %s <= ?) 523 + added 'between' filter which provides this 524 - deal better with the case where the only column group is 'All' 525 - much internal twiddly stuff 526 5270.36 Wed Nov 28 2001 528 + tests no loner die horribly if you don't have MySQL installed 529 - minor tweaks to some error messages 530 - bugfixes for problems with auto-deleting objects 531 - bugfix for mis-normalized accessor warning 532 (thanks to Schwern) 533 5340.35 Sun Oct 7 2001 535 + added hooks for create, update and delete 536 - split commit() for easier subclassing 537 5380.34 Sat Oct 6 2001 539 - Don't die if a value is a reference. (Ima::DBI does this for us, 540 and better in case of overloaded objects) 541 - fix minor problem with mutual hasa / hasa_list referencing 542 - better diagnostics if hasa_list is miscalled 543 5440.33 Sat Sep 15 2001 545 + Added create_filter(), and with it retrieve_all() 546 + added docs on how to set-up many-to-many relationships 547 + _cascade delete now split out to allow overriding 548 + copy() and move() can now take multiple arguments to change 549 (thanks to Jonathan Swartz) 550 5510.32 Sun Sep 9 2001 552 + delete() now removes any foreign elements, to avoid orphans 553 5540.31 Sun Sep 9 2001 555 + split out _column_placeholder (thanks to Jonathan Swartz) 556 + added hasa() checks for orphaned rows 557 5580.29 Wed Sep 5 10:24:54 BST 2001 559 + split docs into Class::DBI::Tutorial 560 + renamed is_column to has_column (is_column still provided as alias) 561 + added accessor_name and mutator_name form template methods 562 - _load_class didn't work. Now fixed. 563 - _next_in_sequence was broken, and would warn even if it wasn't. 564 - better diagnostics when you call retrieve incorrectly 565 5660.28 Wed Aug 29 20:02:28 BST 2001 567 + Tony Bowden took over maintenance 568 * Added hasa_list 569 - Fixed bug with inherited columns (reported by Boris Mouzykantskii) 570 - move() and copy() were broken with auto_increments. Now fixed. 571 - set() did bad things if you'd set up new fields with 572 mk_accessors (reported by Boris Mouzykantskii). Now fixed. 573 - Better errors when calling create() incorrectly 574 - Split tests into distinct files (DBD::CSV now required) 575 - General internal tidying 576 5770.27 Mon Apr 23 09:04:51 BST 2001 578 * Class::DBI->new() deprecated in favor of create() 579 - Fixed the 'Primary before All' bug reported by Tony Bowden 580 5810.26 Mon Apr 9 14:32:17 BST 2001 582 - Class->columns('All', @cols) now assumes the first column to be 583 your primary. 584 - Class->columns('Essential', @cols) now automatically includes 585 the primary column. 586 * move() was broken. Works and tested. 587 - Updated our base requirement to get at its bugfix 588 - Updated our Ima::DBI requirement to get at commit() and rollback() 589 * Documented construct() 590 * Added docs about transactions 591 * Added dbi_commit() and dbi_rollback() 592 - Added docs about Class::DBI and mod_perl 593 5940.25 Wed Jan 10 01:54:27 EST 2001 595 - The new ID is now optional for copy() 596 * Added move() to move objects between classes/databases. 597 - Updated PG's default attributes. 598 - Made the way classes are loaded with hasa() safer 599 6000.24 Thu Oct 5 19:07:21 EDT 2000 *UNRELEASED* 601 - Fixed some $@ naughtiness. Errors should propigate properly. 602 * Added default database attributes for Pg, MySQL, Oracle, DBD::CSV and 603 DBD::RAM. Class::DBI should work out of the box with them now. 604 6050.23 Tue Sep 12 00:33:38 EDT 2000 606 - rollback() needed to normalize its data (thanks to Greg Bartlett) 607 6080.22 Sun Sep 10 05:36:51 GMT 2000 *UNRELEASED* 609 - Added a warning if the primary column is not in the essential group 610 6110.21 Sun Sep 10 01:03:01 EDT 2000 *UNRELEASED* 612 - Now requiring Ima::DBI 0.24 613 - sequence() fixed, tested and working 614 - Now working with DBD::Pg and PostgreSQL 7.0 615 6160.20 Sun Sep 10 00:29:15 EDT 2000 *UNRELEASED* 617 - *bug_fix* is_column() died if false. 618 6190.19 Fri Sep 8 15:07:49 EDT 2000 620 - Forgot to update the Changes file. 621 6220.18 Fri Sep 9 18:51:45 GMT 2000 623 * new() now accepts Class::DBI objects as values 624 - hasa() is now inherited properly 625 - normalize() will now take an empty array 626 6270.17 Mon Sep 4 02:46:25 GMT 2000 *UNRELEASED* 628 - Docs forgot to turn AutoCommit on in MySQL examples 629 - Documented the behavior of new() and AUTO_INCREMENT 630 - Added support for sequences. *Untested* 631 - *bug fix* columns() can now be added after the class has been used 632 - *bug fix* Columns added by hasa() had a chance of overwriting each 633 other. 634 6350.16 Sun Sep 3 17:49:08 GMT 2000 *UNRELEASED* 636 * hasa() will now attempt to require the foreign class for you 637 * hasa() will setup the necessary columns for you. 638 6390.15 Sun Jul 16 23:14:20 PDT 2000 640 - Fixed minor bug in DESTROY message. 641 * Added hasa() object relationships. 642 6430.14 Sun Jul 9 05:25:53 EDT 2000 644 - Pseudohashes as objects now work and basicly tested 645 - The rollback() mechanism changed to use less memory. 646 - Expanded the TODO list 647 6480.13 Wed May 24 02:45:43 EDT 2000 649 - Accessors were not being generated properly in certain cases. 650 6510.12 Tue May 23 ish... * Unreleased* 6520.11 653 - Aborted attempts to fix accessor misgeneration. 654 6550.10 Thu May 18 00:59:34 EDT 2000 656 - new() was not working with objects which autogenerated primary keys 657 6580.09 Tue May 2 00:42:06 EDT 2000 659 - README, INSTALL and Makefile.PL have been updated 660 6610.08 Mon May 1 20:27:13 EDT 2000 662 - Documented lazy column population. 663 6640.07 Mon May 1 02:18:20 EDT 2000 * Unreleased * 665 * Added lazy population of columns. 666 - columns('All') can now be autogenerated. 667 6680.06 Mon May 1 00:56:52 EDT 2000 * Unreleased * 669 * **API CHANGE** make_sql() is gone in favor of set_sql() 670 * normalization has been added in all the right places. 671 - retreive now handles autoincremented primary keys. 672 - columns() internally normalizes column names. 673 6740.05 Sat Apr 15 01:48:25 EDT 2000 675 * MAJOR BUG - simple subclasses of subclasses of Class::DBI would not 676 work. This has been fixed. 677 * Autoloader eliminated. 678 * API CHANGE - columns must now be explictly declared, the class's 679 public data members are not used. That was silly. 680 * rollback() now works. 681 - is_changed() now returns a list of changed columns 682 6830.03 Mon Dec 20 10:04:23 EST 1999 684 * MAJOR BUG - commit() was not committing!!! 685 * added is_changed() 686 - columns('Essential') now autogenerated from columns('All') if not 687 already present. 688 - columns('Essential') is now prefered for most SELECT statements 689 instead of just columns(). 690 6910.02 692 * First working version 693 * First version sent to CPAN 694