This is a dev release for the hopefully soon 0.80 release.  There's been a
_lot_ of changes, so if people could test this and report back I'd be very
grateful.  There's also some features I might try to add before 0.80,
notably table update & delete, but those don't seem that urgent.

I'd also appreciate suggestions on how to improve the docs.  I get the
impression that lots of people find the docs a bit overwhelming and/or
unclear, so pointers to specific spots that need work or suggestions on
new pieces to add would be great.

Special thanks go to Ilya Martynov and Ken Williams, both of whom
contributed quite a bit to this release.  Ilya contributed a monster
refactoring patch for the row class, and Ken contributed many smaller
patches to improve various aspects of Alzabo, notable MethodMaker and
Postgres support.


0.79_01

ENHANCEMENTS:

- Distribution is now signed with Module::Signature.

- Lots of refactoring of the row object internals to simplify the
code.  Implemented by Ilya Martynov.

- The testing code has been cleaned up quite a bit, and all of the
utility functions used in the tests have been consolidated in
t/lib/Alzabo/Test/Utils.pm.

- Added intermediate table and row classes for MethodMaker created
classes, to provide a central point for adding new methods to table
and row objects.  Based on a patch from Ken Williams.

- Support for "self-linking" tables in Alzabo::MethodMaker, a linking
table which connects a table to itself in an n..n relationship.
Implemented by Ken Williams.

- Added rdbms_version method to driver classes.  Implemented by Ken
Williams.

- Added Alzabo::Create::Schema->is_saved() method.

- Foreign keys are now reverse engineered for Postgres 7.3+.
Implemented by Ken Williams.

- Don't try to include dropped columns when reverse engineering
Postgres 7.3+.  Implemented by Ken Williams.

- Do a better job of detecting SERIAL type columns when reverse
engineering Postgres schemas.  Based on a patch from Ken Williams.

- Treat Postgres data types SERIAL4, SERIAL8, BIGSERIAL, and BIGINT as
valid types.  Implemented by Josh Jore.

- NotNullable exception now include the table and schema name.  Based
on a patch from Ken Williams.

- Primary keys are updateable.

- Debugging output from Alzabo::MethodMaker is clearer about what
methods are being made.  Implemented by Ken Williams.

- Alzabo::MethodMaker will now create foreign key methods when two
tables have multiple relationships, as long as the name generation
callback returns different names for each of them.  Implemented by Ken
Williams.

- A join parameter can now specify an outer join with a single array
reference, such as:

 [ left_outer_join => $table_A, $table_B ]

Previously, this could only be done as a double array reference, like:

 [ [ left_outer_join => $table_A, $table_B ] ]

- Various doc fixes and rewriting, most notably in Alzabo.pm.

BUG FIXES:

- A join using multiple aliased tables would fail with an error
message like "Cannot use column (Foo.bar_id) in select unless its
table is included in the FROM clause".

- Remove the long-ago deprecated next_row() and next_rows() methods.

- Postgres 7.3 allows identifiers to be up to 63 characters.  This
broke the code that handled sequenced columns for Postgres.  Patch by
Josh Jore.

- If you tried to create a relationship between two tables, and the
"table_to" table already had a column of the same name as the
"column_from" column, then Alzabo died with an error.  Reported by
Ping Liang.

- If you had previously installed Alzabo, and then provided a new
Alzabo root directory or a new directory for the Mason components,
this was not respected during the installation process.

- Alzabo's referential integrity checks will no longer complain if you
attempt to set a foreign key column to NULL.  Previously it would
throw an exception if the column was part of the dependent table in a
foreign key relationship.  Now, it just assumes you really meant to
allow the column to be NULLable.

- The schema class's load_from_file() method now blesses the loaded
schema into the calling class.  So if you use MethodMaker to generate
classes, and then call My::Schema->load_from_file, it should always
return an object blessed into the My::Schema class.  Reported by Ken
Williams.

- When checking for the MySQL variable sql_mode, the value may be
simply '' as opposed to 0.  Patch by Andrew Baumhauer.

BACKWARDS INCOMPATIBILITIES:

- Alzabo now requires at least Perl 5.6.0 (5.6.1+ recommended).

- The old caching system has been removed, as it had way too much
overhead.  There is a new, much simpler caching system provided by the
Alzabo::UniqueRowCache module.

- The Alzabo::Runtime::Table->row_by_pk() method no longer dies if it
cannot find a matching row.  Instead it simply returns false.

- Some deprecated MethodMaker options were removed: insert, update,
lookup_table

- The Alzabo::Runtime::Row->delete() method now works for potential
rows.



-dave

/*=======================
House Absolute Consulting
www.houseabsolute.com
=======================*/

Reply via email to