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

Changes for version 0.68

  • ENHANCEMENTS:
  • 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 Ilya Martynov.
  • Added Alzabo::Runtime::Schema->disconnect method. Patch by Ilya Martynov.
  • 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 Postgres, however.
  • 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 ->select methods.
  • BUG FIXES:
  • 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 value).
  • 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 Dan Martinez.
  • 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.

Documentation

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

Modules

A data modelling tool and RDBMS-OO mapper
Convert old data structures
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
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
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
Alzabo configuration information

Provides

in lib/Alzabo/MethodMaker.pm
in lib/Alzabo/MethodMaker.pm
in lib/Alzabo/Driver.pm
in lib/Alzabo/Exceptions.pm
in lib/Alzabo/Exceptions.pm
in lib/Alzabo/MethodMaker.pm
in lib/Alzabo/SQLMaker.pm
in lib/Alzabo/Runtime/Row.pm
in lib/Alzabo/Runtime/Row.pm