Alzabo

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN


- Fixed buggy handling of joins that had a table with a multi-column
  primary key as the "distinct" parameter.

- Calling the Alzabo::Runtime::Schema->join method with no 'select'
  parameter and a 'join' parameter that was an array reference of
  array references would fail.

- Avoid an uninit value in Alzabo::MethodMaker.  Reported by Daniel
  Gaspani.

- If you created a cursor inside an eval{} block, the cursor contained
  an object whose DESTROY method would overwrite $@ as it went out of
  scope when the eval block exited.  This could basically make it look
  like an exception had disappeared.  Thanks to Brad Bowman for an
  excellent bug report.

- Loading a schema failed in taint mode.  This was reported ages ago
  by Raul Nohea Goodness and dropped on the floor by me.  My bad.

- The schema creator's exception handling was a little bit buggered up
  when handling Alzabo::Exception::Driver exceptions.

---------------------------------------------------------------------------

0.64 Mar 27, 2002

ENHANCEMENTS:

- Added potentially useful script, alzabo_to_ascii, in eg/ dir.

- Ask for port when setting up tests.

- Turn on stacktraces for all Alzabo::Exception objects.

- Removed the deprecated "lookup_tables" option from
  Alzabo::MethodMaker.

- Removed the deprecated next_row methods from the various cursor
  classes.

- Removed the deprecated Alzabo::Runtime::Table->func method.

- Major changes to how joins are done.  It is now possible to mix
  together various sorts of outer joins in a single query.  In
  addition, it is now possible to specify a foreign key that should be
  used when joining two tables.

- The "tables" parameter has been renamed as "join".

- The Alzabo::Create::Schema->right_outer_join and
  Alzabo::Create::Schema->left_outer_join methods have been removed.
  Use the ->join method instead, which can now be used to do outer
  joins as well, via:

    $schema->join( join => [ left_outer_join => $foo, $bar ], ... )

- The functionality of Alzabo::Runtime::OuterJoinCursor has been
  merged into Alzabo::Runtime::JoinCursor.

- Alzabo::Exception::Driver->bind now returns an array reference, not
  an array.

BUG FIXES:

- Fix failure to load schema objects from file when $\ is set to
  something like "\n".  Reported by Brad Bowman.

- Fixed Postgres reverse engineering to work with slightly changed
  system tables in 7.2.

- Fix handling of table alterations for postgres.  Temp tables were
  being created but not dropped and the data saved in the temp table
  was not being restored to the real table.  Also, Alzabo was trying
  to create sequences again when altering tables Based mostly on a
  patch from Daniel Gaspani.

- Fix handling of primary key changes for Postgres (I'm still not sure
  it's entirely correct).

- Fix detection of primary key changes for schema diffs.

- Handle NOT IN for where conditions.

---------------------------------------------------------------------------

0.63 Feb 18, 2002

ENHANCEMENTS:

- Calling Alzabo::Runtime::Row->select or
  Alzabo::Runtime::Row->select_hash with no arguments returns the
  values for all of the columns in the table.  Suggested by Jeremy
  R. Semeiks.

- The Alzabo::Runtime::Row->id method has been renamed to id_as_string
  for the benefit of those crazy people who like to use "id" as a
  column name and want Alzabo::MethodMaker to be able to create such a
  method.  Suggested by Alexei Barantsev.

- Changed the Alzabo::Create::Schema->sync_backend method so that if
  there was no corresponding schema in the RDBMS, then it will
  instantiate a new schema instead of just blowing up.  Similarly, the
  sync_backend_sql method will just return the SQL necessary to create
  the schema from scratch.

BUG FIXES:

- Removing column attributes via the schema creator was broken.
  Adding them could have caused errors but generally worked.

- If you changed a column from non-sequenced to sequenced, the SQL
  "diff" was not reflecting this.

- Revert a previous change to MySQL reverse engineering.  Now default
  for numeric columns that are not 0 or 0.00 are used instead of being
  ignored.  The fact that MySQL has 'default defaults' _really_ screws
  things up.  Bad MySQL!

- A query that ended with a subgroup could not be followed with an
  order by or group by clause.  Bug report and test case submitted by

Changes  view on Meta::CPAN

- 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
  index SQL was not valid (at least not for MySQL).

- cosmetic fixes in schema creator

- moved exception component to common mason files so its shared by
  schema creator and data browser.

- added Index attribute of unique (so we can make unique indexes).

- made SQL making code for MySQL aware of this.

- added ability to set this to schema creator.

- added ability to specify column order in an index in schema creator.

- made it possible for a table to have more than one foreign from a
  given column.  documented how this changes API in Alzbo::Table.

- API: The Alzabo::Table foreign_keys() method name has been changed
  to all_foreign_keys().  The foreign_key method (which returns keys
  by table to and column from) is now the foreign_keys() method
  because it can return more than one object.

- change schema creator, Alzabo::Create::Schema module, and
  03/create.t test to handle this properly.

- added ability to move columns and tables to arbitrary new locations
  after they've been created (without the arrows).

---------------------------------------------------------------------------

0.05



( run in 0.638 second using v1.01-cache-2.11-cpan-2398b32b56e )