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. This release breaks old stuff. Please be careful and email the alzabo list ([EMAIL PROTECTED]) for help first if you're nervous. 0.55 UPGRADE INSTRUCTIONS: Because of changes to the internal data structures for some objects, the saved schema files from older versions of Alzabo will no longer work with this new version. In the eg/ directory of this distribution, there is a script called convert.pl that can be used to convert your schemas. It is _crucial_ that this script be run while you still have your _current_ version of Alzabo installed. To repeat, DO NOT INSTALL THE NEWEST VERSION OF Alzabo BEFORE RUNNING THIS SCRIPT! Now that we've got that straightened out... What this script does is read an existing schema and generate code that you can run after installing the new version of Alzabo. This code will recreate your schema from scratch. It should be noted that this script _will_ reverse the cardinalities of the relationships in your schema. See the entries in BUG FIXES about this. If you don't like this and want it the old broken way, you can run the reverse_cardinality.pl script in the eg/ directory on your schemas. However, you can only do this _after_ installing this new version of Alzabo. So the steps you should take are: 1. Backup all of your schema files (by default, these are stored under /usr/local/alzabo). 2. Run convert.pl against each schema you have created by doing: perl convert.pl <schema name> This will create a file named <schema name>_schema.pl 3. After doing this for _all_ of your schemas, install this version Alzabo. 4. Simply run each file created by the convert.pl script. This will overwrite the old schema files. If you are creating your schemas via a script, then you can use the code generated by convert.pl to replace the code that does this. Do note that the cardinalities will be reversed in the generated code. Those who are doing this will notice that the generated code seems to contain everything twice. This has to do with how Alzabo keeps track of changes from one generation of a schema to the next. Simply use the code up to right before the generated code contains the comment "Previous generation of schema". ENHANCEMENTS: - Greatly improved the flexibility of the join and *_outer_join methods for the schema class. It is now possible to construct arbitrary joins between any set of tables in any manner. - Eliminate use of transactions where not needed and shorten their length in other places. Also make sure failed commit triggers a rollback. - Get rid of silly min/max language in favor of cardinality and dependencies. BUG FIXES: - Fixed a problem with syncing after the Unix time rollover to 10 digits. - Alzabo::ForeignKey->is_many_to_one always returned false. - Alzabo::MethodMaker was interpreting foreign key cardinality incorrectly (backwards). This meant it was treating one-to-many relationships as many-to-one. Reported by Martin Ertl. NOTE: This fix will break code that depended on this behavior. See the UPGRADE INSTRUCTIONS above. - This was also broken in Alzabo::Create::Schema->add_relation. I took this opportunity to rewrite the code get rid of the use of min_max_* and replace it with cardinality and dependency, which is easier to understand. NOTE: This fix will break old code that created schemas programmatically. See the UPGRADE INSTRUCTIONS above. DEPRECATIONS: - The Alzabo::Runtime::RowCursor->next_row, Alzabo::Runtime::JoinCursor->next_rows, and Alzabo::Runtime::OuterJoinCursor->next_rows methods have all been deprecated. Instead, simply use the ->next method for all of them. INCOMPATIBILITIES: - The Alzabo::Column->null and Alzabo::Create::Column->set_null methods (deprecated in 0.20) are gone. Use ->nullable and ->set_nullable instead.
