Alzabo
view release on metacpan or search on metacpan
---------------------------------------------------------------------------
0.49 Jul 18, 2001
BUG FIXES:
- Found out even more missing files from the MANIFEST (all related to
the schema creation interface). Fortunately, I just discovered
Perl's "make distcheck" so this shouldn't happen in the future.
- One link each in the schema creator and data browser were using a
hard-coded .mhtml extension instead of calling
Alzabo::Config::mason_extension(). Reported by Barry Hoggard.
---------------------------------------------------------------------------
0.48 Jul 17, 2001
BUG FIXES:
- I was missing yet another file from the MANIFEST. Thanks to Barry
Hoggard for helping me out with this.
- Fix a bug in the test number for 03-runtime.t.
---------------------------------------------------------------------------
0.47 Jul 17, 2001
ENHANCEMENTS:
- Make several of the config values settable via the Alzabo::Config
module. Suggested by Jared Rhine.
- Transactions should now work under MySQL. Whether it does anything
or not depends on the table type you are using. This needs testing
though.
BUG FIXES:
- Make sure that index names are not too long.
- Added a missing file to the MANIFEST. 0.46 was missing a needed
file from the tarball.
---------------------------------------------------------------------------
0.46 Jul 2, 2001
ENHANCEMENTS:
- Column types are now canonized to be all upper case. When multiple
keywords specify the same type ('INT' and 'INTEGER', for example),
one will be chosen. This improves the quality of the reverse
engineering and the usability of the schema creation interface.
- You can now use SQL functions pretty much anywhere you would want
(in inserts, updates, where clauses, etc). See the "Using SQL
Functions" section in the Alzabo.pm docs for more details.
- As a corollary to the above, the Alzabo::Runtime::Table->function
method has been created to replace the old
Alzabo::Runtime::Table->func method. This new method takes
advantage of the new system for using SQL functions and is simpler
and more flexible. It allows you to perform all sorts of aggregate
selects.
- Added the Alzabo::Runtime::Row->select_hash method. Requested by
Dana Powers.
DEPRECATIONS:
- The Alzabo::Runtime::Table->func method has been deprecated.
BUG FIXES:
- When adding an AUTO_INCREMENT column to an existing MySQL table, the
SQL generated would cause an error. This has been fixed. However,
if the table already has more than row then chances are this still
won't work (because MySQL does not try to generate needed unique
values for the column when it is added).
---------------------------------------------------------------------------
0.45 Jun 6, 2001
INCOMPATIBILITIES:
- The 'dbm_file' parameter given when loading a syncing module that
used DBM files (such as Alzabo::ObjectCache::Sync::SDBM_File) has
been changed to 'sync_dbm_file', because this release includes a new
cache storage module that uses DBM files as well.
- The schema creator now requires HTTP::BrowserDetect.
- Fix what was arguably a bug in the caching/syncing code.
Previously, one process could update a row and another process could
then update that same row. Now the second process will throw an
exception.
BUG FIXES:
- Accidentally left debugging turned on in Alzabo::Exceptions.
- The schema creator did not allow you to remove a length or precision
setting for a column once it had been made.
- Require a length for CHAR and VARCHAR columns with MySQL.
- Add error on setting precision for any column that doesn't allow
them with MySQL.
- The interaction of caching rows and Alzabo::MethodMaker was not
right. Basically, it was determined at compile time whether or not
to use the cached row class but this needs to be determined at run
time. This has been fixed.
- Using the Alzabo::Runtime::Row->rows_by_foreign_key method would
fail when the column in one table did not have the same name as a
column in the other table. Reported by Michael Graham (along with a
correct diagnosis, thanks!).
- Changed 'id' param to 'pk' for Alzabo::Runtime::Table row_by_pk
method. 'id' still works, for now, but is deprecated.
- Fix problem where an insert could generate a referential integrity
exception but still end up in the database. Note, without
transactions (in MySQL, for example), there's no way to make the all
of the referential integrity code work correctly 100% of the time.
- Added new class Alzabo::ObjectCache to make sure that objects stay
in sync after referential integrity operations happen. This is now
the default caching class. Please make sure to read the docs for
this new module, particularly if you're running Alzabo under a
persistent environment where this module can be quite the memory hog
if not used properly (clear the cache!).
- Fixed breakage in maintenance of referential integrity caused by
switch to cursors (and me not fixing all the code that expected row
objects).
- Added Alzabo::Runtime::Cursor base class.
- Added join method to Alzabo::Runtime::Schema. *EXPERIMENTAL*
- Added Alzabo::Runtime::JoinCursor class. *EXPERIMENTAL*
- Began conversion of all classes from pseudohash to hash.
- Both schema creator and data browser now respect user choice of
component extension.
---------------------------------------------------------------------------
0.09
- MAJOR CHANGE: All the Alzabo::Runtime::Row methods that used to
return lists of rows now return the new Alzabo::Runtime::RowCursor
object. This change is a major speed and memory optimization. It
does, however, break the old interface. But its worth it.
- Set autohandlers for schema maker and data browser so that they
won't inherit from other autohandlers higher up the directory tree.
- Fix bug in Alzabo::Driver which made it so that the one_row_hash
method always returned a hash with keys. This caused spurious row
object to be created in the Alzabo::Runtime::Row class.
- Fix bug in Alzabo::Table::rows_where method where it wasn't handling
the construct $table->rows_where( where => { foo => undef } )
properly.
---------------------------------------------------------------------------
0.08
- Lazy column evaluation had made it possible to create an
Alzabo::Runtime::Row object that did not correspond to any data in
the database if its table object did specify any rows to prefetch.
This would have only been discovered later by calling the select
method on a non-primary key column. This hole was plugged.
- As a corollary to the above change methods in Alzabo::Runtime::Table
that produce rows now always return an empty list or undef when the
rows cannot be made because the specified primary key doesn't exist.
Previously, the rows_by_where_clause method did this while others
would cause an exception either during the object creation or later,
depending upon the situation described above.
- GENERAL NOTE: I probably used exceptions too much, as in the above
case. I will probably be making a few more changes like this in the
future.
- Bug fix in Alzabo::RDBMSRules when making SQL diffs. Forgot to
account for new foreign key method names.
- Bug fix related to MySQL auto_increment column and
Alzabo::Runtime::Table insert method. Basically, you couldn't
insert into a table and use its auto_increment feature.
- Alzabo::Table::set_prefetch now makes sure that primary key columns
are not included. It simply ignores them but they will not be
returned by the prefetch method.
- fix bug where some row retrieval methods would fail if not given a
'bind' parameter.
- Doc bug fix. Docs for Alzabo::Runtime::Table listed group_by_column
as simply group. Of course, this probably only needs to be used by
Alzabo::Runtime::Row anyway.
- Added Alzabo::Runtime::Table rows_where method.
- Added Alzabo::Runtime::Table all_rows method.
- Documented 'bind' parameter for Alzabo::Runtime::Table
rows_by_where_clause method.
---------------------------------------------------------------------------
0.07
- Fixed major bugs in Alzabo::Runtime::Table::insert method.
- Fixed bug in Alzabo::Runtime::Row::delete method related to API
change in 0.06
- Reduce amount of work done in Alzabo::Runtime::Row when referential
integrity maintenance is set to false.
- Added new method to Alzabo::Runtime::Row: rows_by_foreign_key. A
row can now fetch the rows that are related to it automatically.
- Made all Alzabo::Table foreign key object returning methods
list/scalar context sensitive. This is useful when you know that
there is only one foreign key that matches what you are looking for.
---------------------------------------------------------------------------
0.06
- change return value from Alzabo::Index id method to be something
that can be an actual index name. This is a bug fix as previously
( run in 1.372 second using v1.01-cache-2.11-cpan-39bf76dae61 )