The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 0.59

  • ENHANCEMENTS:
  • Got rid of the post_select_hash hook and combined it with post_select, which now receives a hash reference. Suggested by Ilya Martynov.
  • Run all hooks inside Alzabo::Schema->run_in_transaction method to ensure database integrity in cases where your hooks might update/delete/insert data. Suggested by Ilya Martynov.
  • Added new Alzabo::Runtime::Table->select method. This is just like the existing ->function method, but returns a cursor instead of the entire result set.
  • Added a 'limit' parameter to the ->function method (also works for the ->select method).
  • Added new Alzabo::Runtime::Schema->select method. This is like the method of the same name in the table class but it allows for joins.
  • Added new potential rows, which are objects with (largely) the same interface as regular rows, but which are not (yet) inserted into the database. They are created via the new Alzabo::Runtime::Table->potential_row method. Thanks to Ilya Martynov for suggestions and code for this feature.
  • Added Alzabo::Runtime::Row->schema method. Suggested by Ilya Martynov.
  • Made it possible to use Storable to freeze and thaw any type of row object. Previously, this would have worked but would have serialized basically every single Alzabo object in memory (whee!). Patch by Ilya Martynov.
  • Make Alzabo::Schema->run_in_transaction preserve scalar/array context and return whatever was returned by the wrapped code.
  • BUG FIXES:
  • Did some review and cleanup of the exception handling code. There were some places where exceptions were being handled in an unsafe manner as well as some spots where exception objects should have been thrown that were just using die.
  • Ignore failure to rollback for MySQL when not using transactional table.
  • Alzabo was not handling the BETWEEN operator in where clauses properly. Patch by Eric Hillman.
  • Passing in something like this to rows_where:
    • ( where => [ $col_foo, '=', 1, $col_bar, '=', 2 ] )
  • Trying to do a select that involved a group by and a limit was not being allowed.
  • INCOMPATIBILITIES:
  • Got rid of the post_select_hash hook and combined it with post_select, which now receives a hash reference.

Documentation

Frequently Asked Questions
A quick reference to methods in the Alzabo classes

Modules

A data modelling tool and RDBMS-OO mapper
Saves a set of changes as callbacks that can be backed out if needed
Column objects
Holds the type attribute for a column
Loads all Alzabo::Create::* classes
Column objects for use in schema creation
Column definition object for schema creation
Foreign key objects for schema creation.
Index objects for schema creation
Schema objects for schema creation
Table objects for schema creation
Alzabo base class for RDBMS drivers
MySQL specific Alzabo driver subclass
PostgreSQL specific Alzabo driver subclass
Creates all exception subclasses used in Alzabo.
Foreign key (relation) objects
Index objects
Auto-generate useful methods based on an existing schema
A simple in-memory cache for row objects.
Cache objects in a BerkeleyDB file
Make any storage module an LRU
Cache objects in memory
Doesn't really store anything
Cache objects in an RDBMS backend
Base class for syncing classes
Uses a DBM file to sync object caches
Base class for syncing modules that use DBM files
Uses a Berkeley DB file to sync object caches
Uses a IPC file to sync object caches
No inter-process cache syncing
Uses an RDBM backend to sync object caches
Uses an SDBM file to sync object caches
Base class for Alzabo RDBMS rulesets
MySQL specific database rules.
PostgreSQL specific database rules
Loads all Alzabo::Runtime::* classes
Cached row objects
Column objects
Column definition objects
Base class for Alzabo cursors
Foreign key objects
Index objects
Cursor that returns arrays of Alzabo::Runtime::Row objects
Cursor that returns arrays of Alzabo::Runtime::Row objects or undef
Row objects that aren't yet in the database
Row objects
Cursor that returns Alzabo::Runtime::Row objects
Schema objects
Table objects
Alzabo base class for RDBMS drivers
Alzabo SQL making class for MySQL
Alzabo SQL making class for PostgreSQL
Schema objects
Table objects
Utility functions for Alzabo
Alzabo configuration information

Provides

in lib/Alzabo/Driver.pm
in lib/Alzabo/Exceptions.pm
in lib/Alzabo/SQLMaker.pm