0.813 (11.07.2014) - John Siracusa <siracusa@gmail.com>
* Added prepare_options parameter to get_objects_iterator_from_sql() and
get_objects_from_sql() Manager methods (RT 98014)
0.812 (11.07.2014) - John Siracusa <siracusa@gmail.com>
* Second attempt to address precision and scale mix-ups in auto-loaded
numeric column metadata.
* Fixed get_objects_count() with custom select lists and distinct
(Reported by Alexander Karelas)
* Fixed precision and scale references in the tutorial (RT 96079)
* Fixed an incorrect method name in the Rose::DB::Object::Helpers
documentation (RT 97602)
* Fixed a bug where save() parameters were not passed to map record
save() calls (RT 98730)
* Corrected a typo in the documentation (RT 94100)
* Updated tests to work with DBD::Pg versions greater than 2.x.x.
0.811 (03.21.2014) - John Siracusa <siracusa@gmail.com>
* Fixed a bug that prevented many-to-many map records from being saved
to the database (RT 93531)
Do it for all packages that
* mention perl, or
* have a directory name starting with p5-*, or
* depend on a package starting with p5-
like last time, for 5.18, where this didn't lead to complaints.
Let me know if you have any this time.
Upstream changes:
0.806 (06.08.2013) - John Siracusa <siracusa@gmail.com>
* Updated iterator leak test to work on perl 5.17.* and later (RT 86000)
0.805 (03.10.2013) - John Siracusa <siracusa@gmail.com>
* Changed the recommended Oracle trigger PL/SQL to avoid sequence gaps.
(Patch by Tom Adamo.)
* Updated several Manager calls in bench.pl, adding the inject_results
parameter.
0.804 (02.01.2013) - John Siracusa <siracusa@gmail.com>
* Fixed some test failures on perl 5.16.2, mysql 5.5.29, and DBD::Pg 2.19.3.
0.803 (01.04.2013) - John Siracusa <siracusa@gmail.com>
* Make char column's parse_value() method honor a column's overflow
attribute when handling column values that are too long.
* Correct length value in column overflow error messages.
0.802 (01.03.2013) - John Siracusa <siracusa@gmail.com>
* Make varchar column's parse_value() method honor a column's overflow
attribute when handling column values that are too long.
0.801 (11.24.2012) - John Siracusa <siracusa@gmail.com>
* Fixed "DBD::Informix::st execute failed: SQL: -255: Not in transaction"
errors in the test suite. (Patch by Sergey Leschenko.)
0.800 (09.09.2012) - John Siracusa <siracusa@gmail.com>
* Correct tests to account for the Loader's init_db generation fix
in 0.799 behavior (RT 79526)
0.799 (08.10.2012) - John Siracusa <siracusa@gmail.com>
* Added column type mappings for varchar2, nvarchar, and nvarchar2.
(Suggested by Chris Campise)
* Fixed some typos in the Loader documentation (RT 78860)
* Fixed a Loader bug that caused the base class's init_db method to
be ignored (RT 78571)
0.798 (04.04.2012) - John Siracusa <siracusa@gmail.com>
* Fixed a typo in the Rose::DB::Object::Manager documentation.
* Fixed a bug that caused save() not to throw an exception when
a transaction could not be started (Reported by jdv79)
* Converted some uses of each() to keys() to avoid iteration
state bugs (RT 75773)
* Corrected a broken POD link in the one-to-many relationship
documentation. (Reported by Nee)
a) refer 'perl' in their Makefile, or
b) have a directory name of p5-*, or
c) have any dependency on any p5-* package
Like last time, where this caused no complaints.
Changes:
0.797 (11.21.2011) - John Siracusa <siracusa@gmail.com>
* Fixed a bug that prevented explicitly disabling/enabling column
triggers from working (RT 72592)
Changes from previous:
0.796 (10.18.2011) - John Siracusa <siracusa@gmail.com>
* Use ENGINE=InnoDB instead of TYPE=InnoDB in MySQL table creation
statements to avoid an incompatibility with MySQL 5.5 (RT 71757)
0.795 (07.14.2011) - John Siracusa <siracusa@gmail.com>
* The Loader now passes the Manager class name as a second argument to
module_preamble and module_postamble subroutines to allow Manager
classes to be distinguished from object classes.
* Corrected a typo in the ConventionManager documentation ("objs_"
should be "_objs")
* Fixed a bug that caused load-on-demand columns to be loaded by
load(with => ...) method calls. (Reported by Marlon Bailey)
0.794 (12.30.2010) - John Siracusa <siracusa@gmail.com>
* Handle null default values for foreign key columns in PostgreSQL
(RT 64331)
0.793 (12.21.2010) - John Siracusa <siracusa@gmail.com>
* Corrected skip count in t/db-object.t
0.792 (12.20.2010) - John Siracusa <siracusa@gmail.com>
* Detect attempts to create methods whose names conflict with
methods defined in Rose::DB::Object itself. (Reported by
Dave Howorth)
0.791 (10.23.2010) - John Siracusa <siracusa@gmail.com>
* Fixed a bug that caused on_save column triggers to fire when loading.
* More floating point rounding fixes in the test suite.
0.790 (10.17.2010) - John Siracusa <siracusa@gmail.com>
* The auto-initialization process no longer sets column default
values to undef when there is no default for the column. Doing
this was tripping up the default_exists() method. (Reported
by Timo Karhu)
* Documented the behavior of the manager_args relationship attribute
when a relationship is used as a with_objects or require_objects
argument.
* Fixed a bug that caused SET columns to be erroneously marked as
modified when their accessor methods were called.
* Fixed a bug in make_manager_methods() that left base_name undefined.
(RT 61963, patch by Chris Malarky)
* Improved handling of floating point and string/number conversions
in the test suite.
Upstream changes:
0.789 (06.23.2010) - John Siracusa <siracusa@gmail.com>
* Added support for SELECT FOR UPDATE and other forms of locking
(Initial patch by Kostas Chatzikokolakis)
* Fixed some POD typos (RT 58405)
0.788 (05.22.2010) - John Siracusa <siracusa@gmail.com>
* Fixed a bug that prevented function calls like now() from being
properly inlined, even when allow_inline_column_values was set
to a true value. (Reported by David Bourget)
* The Loader/auto-init system will now automatically set the
allow_inline_column_values attribute to a true value when a
column has a default value that looks like a function call.
* Fixed a non-numeric warning with development releases of Math::BigInt.
* Fixed SQL reserved word quoting bug. (Reported by Taric Mirza)
* Avoid stringifying exception objects when setting error().
(Suggested by Kostas Chatzikokolakis)
0.787 (04.27.2010) - John Siracusa <siracusa@gmail.com>
* Added remarks column attribute. (Patch by Adam Mackler)
* Improved error message generated by get_objects_from_sql() when
an unknown column is encountered.
* Added support for Rose::DB's keyword_function_calls attribute.
* Added dedicated timestamp with time zone column type.
* Inflate triggers now work correctly with lazy-loaded columns.
(Reported by Alex Karelas)
* Failure to have any valid registered data sources no longer causes
a fatal error when looking up default column sequence names during
class setup.
to trigger/signal a rebuild for the transition 5.10.1 -> 5.12.1.
The list of packages is computed by finding all packages which end
up having either of PERL5_USE_PACKLIST, BUILDLINK_API_DEPENDS.perl,
or PERL5_PACKLIST defined in their make setup (tested via
"make show-vars VARNAMES=..."), minus the packages updated after
the perl package update.
sno@ was right after all, obache@ kindly asked and he@ led the
way. Thanks!
pkgsrc changes:
- Adjusting dependencies
- Removing x-flags from modules & doc
Upstream changes:
0.786 (01.23.2010) - John Siracusa <siracusa@gmail.com>
* Improved support for serial columns in Oracle.
* Renamed CHECK labels to avoid clashes with the reserved block name.
* Added force_lowercase attribute to the Loader and Convention Manager
as a means of getting "normal" behavior out of Oracle schemas.
* Fixed a bug that caused money columns in PostgreSQL to have
column lengths that were too short.
* Fixed a POD typo (RT 53272)
0.785 (12.31.2009) - John Siracusa <siracusa@gmail.com>
* Fixed Rose::DB::Object::Cached to correctly honor alternate column
accessor/mutator method names. (Reported by Kevin McGrath)
* Stopped the default auto-init handler from asking the convention
manager to name foreign keys that have only partially populated
column lists, causing it to burn through the "good" foreign key
names. (Patch by Douglas Wilson)
* Corrected some typos in the ManyToMany documentation and the tutorial.
(Thanks to Bart Dopheide)
0.784 (10.16.2009) - John Siracusa <siracusa@gmail.com>
* Fixed a bug introduced by the multi-many Manager bug fix in the
0.783 release. (Reported by Mark Frost)
* Added missing exception error explanations to relationship methods.
* Updated eval blocks to avoid stomping on $@ from an outer scope.
Upstream changes:
0.783 (09.14.2009) - John Siracusa <siracusa@gmail.com>
* Added new range operators: between, gt_lt, gt_le, ge_lt, and ge_le.
* The strip() helper method will now throw an exception when there are
pending "on-save" actions. (Reported by Kevin McGrath)
* Added strip_on_save_ok parameter to strip() to override the default
behavior.
* Worked around yet another MySQL empty-string-default "feature."
(Reported by Terrence Brannon)
* Added missing documentation about the required return value of the
"object" handler in the traverse_depth_first() helper method.
(Reported by David Christensen)
* The traverse_depth_first() helper now preserves the existing context
object if a "relationship" handler is not defined. (Reported by
David Christensen)
* Fixed a bug that prevented scalar reference filter arguments from working
correctly with date columns in Manager queries. (Reported by Todd Lyons)
* Fixed a multi-many Manager bug that caused duplicate sub-objects to be
linked to the wrong parent object. (Reported by Anton Shevchenko)
pkgsrc changes:
- Adjusting license and dependencies according to META.yml
Upstream changes:
0.782 (07.09.2009) - John Siracusa <siracusa@gmail.com>
* Altered tests to confirm the fix for RT 45836.
* Detect enum-like columns in PostgreSQL. (RT 46214)
* Added optional warning to the Loader for missing primary keys.
(Patch by Ed Loehr)
* Fixed a memory leak in the Iterator class. (RT 47294)
(Patch by Thomas Whaples)
* Unique indexes that have predicates are now skipped by the auto-
initialization process. Use the include_predicated_unique_indexes
Metadata attribute and/or Loader attribute to override the default.
This feature is currently only supported in PostgreSQL.
(Patch by Ed Loehr)
* Improved unknown method error messages. (Suggested by Brian Miller)
* Updated some example code in the documentation.
- Updating package for p5 module Rose::DB::Object from 0.770 to 0.781
- Setting license to gnu-gpl-v2
- Adjusting dependencies
Upstream changes:
0.781 (04.19.2009) - John Siracusa <siracusa@gmail.com>
* Added an explicit SQL_BLOB bind_param() argument for blob columns
in SQLite. (Reported by clausi)
* Added manager_iterator_method and support for manager_count_method
and manager_delete_method to relevant Relationship classes.
(Patch by Peter Karman)
* Updated test suite to consider DBD::SQLite 1.19+ non-broken.
0.780 (03.04.2009) - John Siracusa <siracusa@gmail.com>
* Fixed a bug that caused the delete_relationships() Metadata method
to fail in some circumstances. (Reported by vti)
* Fixed a few accessor/mutator mismatches in relationship methods.
(Reported by Bharanee)
0.779 (02.26.2009) - John Siracusa <siracusa@gmail.com>
* Added missing documentation on one-to-many and many-to-many
relationship "iterator" and "find" method type names.
* Corrected an error message in Rose::DB::Object::MakeMethods::Generic
(RT 43667)
0.778 (02.06.2009) - John Siracusa <siracusa@gmail.com>
* Added PostgreSQL's "ltree" query extensions to QueryBuilder.
(Patch by Rick Apichairuk)
* Improved the efficiency of the check-and-merge function used
when related objects are added. (Reported by Bryan Opfer)
0.777 (12.12.2008) - John Siracusa <siracusa@gmail.com>
* Fixed a bug that caused foreign key proxy relationships to
be clobbered if relationships were set after foreign_keys.
(Reported by Peter Karman)
0.776 (12.09.2008) - John Siracusa <siracusa@gmail.com>
* Fixed a bug that was preventing the use of new comparison
operators with QueryBuilder. (Reported by Derek Wueppelmann)
* Added a strict_ops parameter and class method to the Manager
to allow the policy to b changed per-call or per-class.
* Auto-initialization under Oracle should no longer be confused
by tables with the same names in different schemas. (Patch by
Benjamin Hitz)
* Removed the on-again, off-again restriction on aliasing primary
key columns. I think it's off for good this time.
* Refined column alias policy to keep from appearing to override
more granular column method name customization.
* Overhauled related object mutator methods to better match the
documentation and reduce unnecessary queries.
* Fixed a bug that caused the init_with_tree() helper method to
overwrite columns involved in relationship mapping in some
circumstances. (Reported by Todd Lyons)
0.775 (11.02.2008) - John Siracusa <siracusa@gmail.com>
* The insert_or_update(), load_or_insert(), and load_or_save() helper
methods no longer throw an exception when called on an object with
no uniquely identifying column(s). (Suggested by Richard Jones)
* Added detection of minimum JSON version (2.00) to test suite and
the Helpers module.
0.774 (10.25.2008) - John Siracusa <siracusa@gmail.com>
* Setting objects related through a one-to-many relationship
now does more work to ensure success. (Reported by vti and
David Bourget)
* Fixed an ON DUPLICATE KEY UPDATE test to work around a MySQL
"strict mode" quirk (or, IMO, "bug") which causes it to complain
about a situation that is only a concern if it decided to do an
INSERT rather than an UPDATE. (Reported by Richard Jones)
* Fixed a regression in t/spot-check-10.t: adding objects to
one-to-many-related lists failed in some circumstances.
* Updated auto-initialization examples in the synopsis.
0.773 (10.02.2008) - John Siracusa <siracusa@gmail.com>
* Added support for multiple add_on_save calls prior to save(),
which is how everyone expected it to behave anyway, and how the
documentation always seemed to imply that it did work. Well,
now it does.
* Pre-saved objects now get their foreign key columns hooked up
correctly when passed as arguments to add_on_save methods.
(Reported by George Hartzell)
* ...-to-many related object lists will now be re-fetched on
demand after an add_on_save and a subsequent save().
(Reported by George Hartzell)
0.7722 (09.29.2008) - John Siracusa <siracusa@gmail.com>
* Fixed compatibility with older versions of ExtUtils::MakeMaker.
0.7721 (09.29.2008) - John Siracusa <siracusa@gmail.com>
* Updated distribution metadata for ExtUtils::MakeMaker 6.44.
* Added a column type mapping for MySQL's MEDIUMINT type.
(Reported by Andreas Dewes)
0.772 (09.26.2008) - John Siracusa <siracusa@gmail.com>
* Altered Rose::DB::Object::Cached to override insert() and
update methods. (Suggested by Kevin McGrath)
* The update() method now marks updated objects as being in the
database (see is_in_db() in Rose::DB::Object::Util) (Suggested
by Kevin McGrath)
* The insert_or_update() and insert_or_update_on_duplicate_key()
helper methods now call save() instead of insert() or update()
(passing the appropriate flags to cause an insert or update) in
order also save child objects. (Suggested by Kevin McGrath)
* The set_column_value_modified() function in Rose::DB::Object::Util
now also clears any "db-ready" column value the object may be
holding for that column.
* Added a dirty_columns() helper method (Suggested by jdv79)
0.7713 (09.16.2008) - John Siracusa <siracusa@gmail.com>
* More test skipping fixes.
0.7712 (09.15.2008) - John Siracusa <siracusa@gmail.com>
* Improved detection of broken DBD::SQLite versions.
0.7711 (09.15.2008) - John Siracusa <siracusa@gmail.com>
* Fixed typos in POD.
* Improved test skipping conditions.
* Clarified JSON module version requirements.
0.771 (09.12.2008) - John Siracusa <siracusa@gmail.com>
* Traversal and recursive serialization helper method added.
* Non-persistent columns feature added.
* Made "where" an alias for the Manager's "query" parameter.
(Requested by Ask Bj~A,rn Hansen)
* Documented restrictions on the Manager's "select" parameter.
* Fixed bug that prevented CURRENT_TIMESTAMP from being properly
inlined in queries sent to SQLite. (RT 37224)
* Fixed a memory leak. (Reported by Christopher Laco)
* The "cluck" error mode now correctly calls cluck() rather than
croak(). (Reported by Kevin McGrath)
* Added support for Oracle date/time column keywords.
* Cascaded delete now properly cascades to one-to-one related objects.
(Reported by kittens)
to trigger/signal a rebuild for the transition 5.8.8 -> 5.10.0.
The list of packages is computed by finding all packages which end
up having either of PERL5_USE_PACKLIST, BUILDLINK_API_DEPENDS.perl,
or PERL5_PACKLIST defined in their make setup (tested via
"make show-vars VARNAMES=...").
0.770 (05.28.2008) - John Siracusa <siracusa@gmail.com>
* Added "iterator" method type, similar to "find", to OneToMany
and ManyToMany. (Patch by Peter Karman - peknet@gmail.com)
* Updated the Loader documentation to describe an important
consideration when regenerating modules with make_modules().
* Improved error propagation in relationship methods. (Suggested
by Wiggins d'Anconia)
* Skip the interactive part of the test suite when the
AUTOMATED_TESTING environment variable is set.
* Test suite now accounts for versions of DBD::mysql that predate
the mysql_is_auto_increment column attribute.
0.769 (04.01.2008) - John Siracusa <siracusa@gmail.com>
* Improved the default singular/plural conversion rules in the
Convention Manager. (Suggested by David Brownlee)
* Added new join type override syntax for the Manager's with_objects
and require_objects parameters.
* Added column method naming conventions to the Convention Manager.
* Added Manager naming conventions to the Convention Manager and
exposed more Manager-related defaults in the Metadata and Manager
class. (Patch by Bradley C Bailey, modified by John Siracusa)
* Column method names are now allowed at the end of compound Manager
query parameters (e.g., "a.b.method")
* Clarified column/method query parameter documentation.
* Postgres tests are not skipped when DBD::Pg version 2.1.x or 2.2.0
is installed. (Bus error for me in t/deep-joins.t)
0.768 (02.25.2008) - John Siracusa <siracusa@gmail.com>
* Changed mailing list and wiki URLs.
* Fixed the "warn" overflow mode for character columns to carp
instead of croaking. (Reported by John Ingram)
* Refined workaround for http://rt.cpan.org//Ticket/Display.html?id=33193
to apply only to versions that exhibited this bug.
* Added the forget_related() helper method to the "all" export tag.
0.767 (02.15.2008) - John Siracusa <siracusa@gmail.com>
* Added the forget_related() helper method.
* Enhanced and documented the long-dormant "hints" Manager parameter.
* Added a work-around for a DBD::Pg 2.0.0 array/bind_col() bug:
http://rt.cpan.org//Ticket/Display.html?id=33193
* Improved the column method handling for array-reference values
that may be fetched from array columns by DBD::Pg 2.0.0.
* Fixed a bug in the test suite that caused some Postgres tests
to fail if the "chkpass" column type was not installed.
(Reported by Randal Schwartz)
0.7665 (02.08.2008) - John Siracusa <siracusa@gmail.com>
* Fixed a bug that prevented the convention manager's auto_table_name()
method from honoring the tables_are_singular() attribute value.
(Reported by Ben Tilly)
* The new, more correct behavior of Rose::DB 0.739's array column
value parsing and formatting revealed a bug in QueryBuilder's
handling of "(any|all)_in_array" conditions involving empty list
arguments. This is now fixed.
0.7664 (02.06.2008) - John Siracusa <siracusa@gmail.com>
* Fixed a bug that caused boolean columns to be incorrectly marked as
modified. (Reported by Grzegorz Nosek)
* Added sql_qualify_column_names_on_load() Metadata method to help
support Postgres functions that can masquerade as columns if they're
prefixed by the table name. (Suggested by Grzegorz Nosek)
0.7663 (02.04.2008) - John Siracusa <siracusa@gmail.com>
* Fixed a bug that caused delete_on_save method creation for foreign
keys to fail in some circumstances. (Reported by Justin Ellison)
* Fixed a bug that prevented Perl code from being emitted for
non-set columns with check_in attributes. (Reported by Sam Tregar)
* Pushed cache control methods down into Rose::DB::Object::Cached
in preparation for more caching subclasses.
* The clear_object_cache() method now correctly clears load timestamps
as well. (Patch by Justin Ellison)
0.7662 (01.30.2008) - John Siracusa <siracusa@gmail.com>
* Fixed copy-and-paste-o in Rose::DB::Object::Cached code.
0.7661 (01.29.2008) - John Siracusa <siracusa@gmail.com>
* Fixed method clash detection in Rose::DB::Object::Manager.
* Streamlined caching implementation in Rose::DB::Object::Cached.
0.766 (12.13.2007) - John Siracusa <siracusa@gmail.com>
* Added the unique_key_by_name() metadata method.
* Added the ability to do unrestricted joins in some circumstances.
* Added the remember_all() class method to Rose::DB::Object::Cached.
* Added the undef_overrides_default column attribute.
* The key_column() method in the ForeignKey class now works correctly.
(Patch by Christopher Masto)
* Further synced datetime and timestamp method-maker code.
* Added a test suite exclusion for DBD::SQLite 1.14, which still suffers
from this bug: http://rt.cpan.org/Public/Bug/Display.html?id=21472
* Improved detection of fatal errors during class setup.
* Added a "gotchas" section to the Loader documentation.
* Fixed propagation of db objects in update and delete Manager methods.
* Fixed a bug that caused some cached SQL to persist incorrectly after
inheritance. (Patch by Daniel Koch)
* Fiddled with not_found() detection. (Changes suggested by Philip Dye)
* Made one-to-one relationships (attempt to) work even when uniqueness is
not apparent in the metadata.
* The Loader no longer chokes on SQLite columns that use the
current_timestamp keyword. (Reported by George Hartzell)
* Setting undef integer attributes to zero is now correctly detected
as a modification.
0.765 (07.21.2007) - John Siracusa <siracusa@gmail.com>
* Added a value_type attribute to SET columns.
* Added a normalize_get_objects_args() utility method to make
custom Manager methods less cumbersome to implement.
* Setting a BigInt column to undef no longer sets it to zero.
(Reported by Jeffrey Horn)
* Corrected error propagation in many-to-many "find" methods when bad
arguments are passed. (Reported by Michael Reece)
* Added "use strict" the output of perl_manager_class().
* Restored default use of table aliases in Manager queries. The new
table_aliases parameter can be used to alter the behavior.
* Added support for literal sort_by parameters using scalar references.
* Added is/is_not comparison operators to QueryBuilder. (Suggested by
Jonathan Vanasco)
* Scalar references appearing in the select => ... list in Manager calls
are now passed through unmodified.
* Existing map records are now correctly checked for when adding items
through a many-to-many relationship. (Reported by Drew Taylor)
* Using a nonexistent column name in a primary or unique key is now a
fatal error. (Reported by Philip Dye)
* Multi-columns "select count(distinct ...)" queries now fall back to
count(*) on a subselect in databases that do not support calling count
on multi-argument distinct clauses. (Reported by Derek Watson)
* The auto-init system will now skip Postgres functional indexes when
extracting unique keys. (Reported by Jonathan Vanasco)
* Fixed a bug that caused inner joins to be used inappropriately in
certain cases with many-to-many relationships or when nested joins
are disabled.
* Fixed a bug that caused the auto-init system to fold multiple foreign
keys that reference the same remote key into a single multi-column
foreign key. (Reported by Marlon Bailey)
* Fixed a Manager bug that caused count queries to use incorrect
table aliases when passed empty with_objects or require_objects
array reference values. (Reported by Denis Moskowitz)
* Fixed a bug that prevented relationship and foreign key names from
being resolved when used in nested query parameters.
* Relationship count methods no longer die when the count is zero.
(Reported by Derek Watson)
* Setting enum fields to undef now works correctly. (Reported by Ovid)
* Columns with custom DBI bind attributes are now updated correctly.
(Reported by Derek Watson)
* Epoch columns with zero (0) default values now work correctly.
(Reported by Peter Karman)
* Setting boolean columns to null (undef) now works correctly.
(Reported by Derek Watson)
* Fixed a bug that caused literal query parameters with bind arguments
to become corrupted after their first use.
* Changed the way classes are registered in order to fix a Loader bug
that caused cross-database foreign keys to be erroneously created
when tables with the same names exists in two different databases.
(Reported by Adrian Howard)
* Deleting one-to-one related objects on save now works correctly.
(Reported by Ovid)
* The "find" method for many-to-many relationships now propagates custom
Manager arguments correctly. (Patch by Michael Reece)
* The use_key parameter to load() now dies if an invalid key is passed.
(Reported by Jonathan Vanasco)
Rose::DB::Object is a base class for objects that encapsulate a
single row in a database table. It provides the following functions:
* Create a row in the database by saving a newly constructed object.
* Initialize an object by loading a row from the database.
* Update a row by saving a modified object back to the database.
* Delete a row from the database.
* Fetch an object referred to by a foreign key in the current object.
(i.e., "one to one" and "many to one" relationships.)
* Fetch multiple objects that refer to the current object, either directly
through foreign keys or indirectly through a mapping table. (i.e., "one
to many" and "many to many" relationships.)
* Load an object along with "foreign objects" that are related through any
of the supported relationship types.