From: Dave Rolsky <autarch@ur...> - 2002-07-20 23:27:23
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://www.alzabo.org/ for more info. Alzabo can be installed
via the CPAN shell or downloaded from SourceForge.
0.68 July 20, 2002
- Updated the thank you list in the README file (you too can be listed
by sending me useful bug reports, patches, suggestions, or reminding
that you already did so and I forgot ;)
- Allow the Driver's ->schemas method to take connection params,
wherever possible. This allows Alzabo::Create::Schema methods like
->create, ->sync_backend_sql, and ->sync_backend to work properly when
the database server is on another machine. Patch by Ilya Martynov.
- Added Alzabo::Runtime::*Row->is_live method to easily distinguish
between real and potential rows.
- Did some profiling of data retrieval (Alzabo::Runtime bits) and
optimized some of the most heavily used pieces of Alzabo.
- Added the Alzabo::Runtime::Schema->prefetch_all and
Alzabo::Runtime::Schema->prefetch_all_but_blobs convenience methods.
- Added a ->count method to the cursor classes.
- Added ->is_integer, ->is_floating_point, ->is_date, ->is_datetime,
->is_time, and ->generic_type methods to column objects.
- The Alzabo::Driver->schemas method now takes connection parameters.
See your specific driver subclass for details on which. Bug report by
- Added Alzabo::Runtime::Schema->disconnect method. Patch by Ilya
- Make the Makefile.PL act gracefully when it is invoked without a
tty. Patch by Ilya Martynov.
- The quoting of identifiers (table/column names) is now optional, and
_off_ by default. In profiling I found that a non-trivial amount of
time was being spent quoting these, and in most cases it's not
necessary. There is now a
Alzabo::Runtime::Schema->set_quote_identifiers method that can be used
to change this behavior.
Identifiers are always quoted when using Alzabo::Create::* with
- Did a fair amount of profiling in order to optimize Alzabo's data
fetching. In general, Alzabo::Runtime::* operations should be faster.
- Added Alzabo::Runtime::Column->alias which is useful when executing
queries via the Alzabo::Runtime::Schema and Alzabo::Runtime::Table
- Alzabo::MethodMake generated "lookup column/table" methods will
return if there is no matching entry in the related table, which is
important when the two tables are independent. Previously it would
have been a runtime error (attempting to call a method on an undefined
- Fix warning from Row->update. Patch by Ilya Martynov.
- Alzabo::Runtime::PotentialRow's id_as_string method was misnamed id.
The docs had it wrong for all classes.
- Catch where clauses that contain non-column/function objects as left
hand side value (like if you accidentally pass in a table object).
- The Postgres TEXT column type is now considered a blob, not a
character type column.
- There was a fatal error when creating an n-to-n relationship if only
columns were given, without tables. This was fixed with a patch from
- Explicitly check for errors after calling $dbh->func.
- There was a bug when trying to use the schema creator to create
relationships involving more than one column.
- Fixed a bug where a query using the Alzabo::Runtime::Table->one_row
could cause an exception if no rows were found.
- Alzabo::Create::Schema->sync_backend was not passing through the
connection parameters it was getting to the ->create method, causing
failures. Patch from Ilya Martynov.