Alzabo is a program and a module suite, with two core functions. Its first
use is as a data modelling tool. Through either a schema creation
interface or a perl program, you can create a set of schema, table,
column, etc.  objects to represent your data model. Alzabo is also capable
of reverse engineering your data model from an existing system.

Its second function is as an RDBMS to object mapping system. Once you have
created a schema, you can use the Alzabo::Runtime::Table and
Alzabo::Runtime::Row classes to access its data. These classes offer a
high level interface to common operations such as SQL SELECT, INSERT,
DELETE, and UPDATE commands.

Please see http://alzabo.sourceforge.net/ for more info.  You can also
install Alzabo via CPAN.


0.60

ENHANCEMENTS:

- When passing order_by specifications, it is now possible to do this:

  order_by => [ $col1, $col2, 'DESC', $col3, 'ASC' ]

which allow for multiple levels of sorting as well as being much
simpler to remember.

- It is now possible to do something like

  $table->select( select => [ 1, $column ] ... );

and have it work.  In this case, every row returned by the cursor will
have 1 as its first element.

- Added Alzabo::MySQL and Alzabo::PostgreSQL POD pages.  These pages
document how Alzabo does (or does not) support various RDBMS specific
features.

- Remove Alzabo::Util.  Use Class::Factory::Util from CPAN instead.
Class::Factory::Util is a slight revision of Alzabo::Util that has
been separated from the Alzabo core code by TJ Mather.  Thanks TJ.

- Add the ability to sync the RDBMS backend to the current state of
the Alzabo schema.  This allows you to arbitrarily update the RDBMS
schema to match the current state of the Alzabo schema.

- Add support for SELECT and WHERE clauses that use MySQL's fulltext
search features.

- Add BIT and BIT VARYING as allowed types for Postgres.

BUG FIXES:

- Reverse engineering was not checking for fulltext indexes with
MySQL.  These indexes were treated the same as other indexes.

- Make sure Alzabo::SQLMaker always handles stringification of
literals properly.

- Improve recognition of default column lengths under MySQL (and
ignore them).  Also improve recognition of default defaults (like
'0000-00-00' for DATE columns) and ignore those.

- When using the BerkeleyDB module for object syncing or storage, the
Berkeley DB code itself creates a number of temporary files.  These
will now be created in the same directory as the storage/syncing file
specified.

- Allow GROUP BY foo ASC/DESC for MySQL.  The MySQL manual claims this
works.  In my testing, it accepts the syntax but doesn't actually
respect the order requested.  Of course, you can always add order by
clause with your group by and that seems to work just fine.

- Don't allow a GROUP BY clause to follow an ORDER BY clause.  The
reverse is still allowed.

- MySQL: Allow fulltext indexes to include *text type columns without
specifying a prefix.

- Dropping a column that had an index on it would cause an error in
the generated SQL diff where Alzabo would drop the column and then try
to drop (the now non-existent) index.  The fix is simply to drop the
indexes first.

- Make caching code work under Perl 5.00503.

- Make code warnings clean (I think) under Perl 5.00503;

DEPRECATIONS:

- The way order_by and group_by parameters are passed has changed a
bit.  In particular, this form:

  order_by => { columns => ..., sort => ... }

has been deprecated in favor of a simpler syntax.



Reply via email to