Alzabo

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

  work.

- The Alzabo::Runtime::Row->is_potential method didn't exist.

- The caching had a very nasty interaction with reverse engineering
  that could cause data loss (of foreign keys) when the "sync with
  backend" functionality was called from the Mason GUI.  There may
  have been other bugs as well.  This was fixed by not caching reverse
  engineered schemas, which is somewhat of a hack.

  Anyone using the Mason GUI with MySQL is encouraged to upgrade
  because of this bug.


0.83  June 9, 2004

MISCELLANEOUS:

- I got fed up with the instability of CVS on Sourceforge, and am now
  using a Subversion repository I host myself.  See "source" page on
  www.alzabo.org for details.


ENHANCEMENTS:

- All SQL-generating methods for the Alzabo::Runtime::Schema and
  Alzabo::Runtime::Table classes now accept a "quote_identifiers"
  parameter, which allows you to turn this on for a single query.

- Improved handling of MySQL's "default defaults" when reverse
  engineering or comparing two schemas, so that the code doesn't
  generate ALTER TABLE statements that don't do anything.

- Make many Params::Validate specs into constants, which may improve
  speed a bit, and may affect memory usage under mod_perl.  This is
  probably a useless micro-optimization, though.


BUG FIXES

- Make sure generated SQL for Postgres schema diffs does not include
  dropping & adding the same FK constraint more than once.

- Reverse engineering works with Postgres 7.4.  Thanks to Josh Jore
  for this big patch.  Hopefully this won't break anything for
  Postgres 7.3 ;)

- The Alzabo::Column->is_time_interval method was misspelled, and so
  did not work at all.  Patch from Josh Jore.

- With Postgres 7.4, the DBI tables method always includes system
  tables, so we have to filter these out in the
  Alzabo::Driver::PostgreSQL->tables method.  Patch from Josh Jore.

- Make the is_date & is_datetime method consistent across various
  databases.  For Postgres, is_date was only returning true for the
  DATE type, not TIMESTAMP.

- Make is_datetime return true for Postgres' TIMESTAMPTZ column type.

- Turning on SQL debugging could cause Alzabo to alter bound values
  that were null to the string "NULL" before performing a query.

- If a table name was changed and an index, column, or foreign key
  dropped from that table, then the generated "diff" SQL could refer
  to the old table name in the various DROP statements that were
  generated.

- Workaround a bug in MySQL that reports a "Sub_part" of 1 for
  fulltext indexes.

- The changes introduced in 0.71 to track table and column renames
  could cause bogus SQL to be generated if something was renamed, the
  schema was instantiated, and then the schema was compared to an
  existing live database which also had the same renaming done to it.

- If you tried to create a relationship between two tables where one
  of the tables had a varchar or char column as part of its PK, and
  you let Alzabo create the foreign key column in the other table,
  then Alzabo would try to set the length of the varchar/char column
  to undef, which would cause an exception to be thrown.

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

0.82  January 6, 2004

ENHANCEMENTS:

- The Alzabo::Runtime::Table->insert() and
  Alzabo::Runtime::InsertHandle->insert() methods will not create a
  new row object when called in void context.  This should make
  inserts faster when you don't need a row object back.

- When reverse engineering a MySQL schema, Alzabo will now set a table
  attribute for the table type (MyISAM, InnoDB, etc.) if the server
  supports table types (which any modern version of MySQL does do).

BUG FIXES:

- When creating the test database for MySQL, we now explicitly set the
  table type to MYISAM, in case the default is something else.
  Otherwise the tests will fail when we try to create a fulltext
  index.

KNOWN BUGS:

- This release will fail several tests when tested with Postgres 7.4.
  Specifically, reverse engineering with Postgres 7.4 is known to be
  broken.  This will be fixed in the next release.

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

0.81  December 21, 2003

ENHANCEMENTS:

- Added a new insert handle feature, which should be significantly
  faster for batch inserts than repeatedly calling the table class's
  insert() method.  Development funded by Marigold Technologies.

BUG FIXES:

Changes  view on Meta::CPAN

  because there is no longer a Makefile ;)

BUG FIXES:

- Fixed the Alzabo::MethodMaker->docs_as_pod method, which simply died
  when used with a recent version of Params::Validate.  Reported by
  Ken Williams.

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

0.71  April 6, 2003

ENHANCEMENTS:

- Alzabo now tracks table and column renames after a schema has been
  instantiated.  This means that when updating the schema in the
  database after such a change, Alzabo can ensure that there is no
  data lost because of the change.  Previously, Alzabo treated name
  changes as a drop followed by an add, which caused data loss.

- Alzabo::DriverStatement->next_hash has been renamed next_as_hash, in
  order to be consistent with the Alzabo::Runtime::Cursor classes.

- Experimental support for restriction clauses as part of an outer
  join, such as

    SELECT ...
      FROM Foo
           LEFT OUTER JOIN Bar
              ON Foo.foo_id = Bar.foo_id
                 AND Bar.something > 2

- Added support for HAVING in queries.

BUG FIXES:

- Exceptions did not include a stack trace.

- Trying to create a Postgres schema with foreign keys defined caused
  an exception.  Reported by Josh Jore.

- Fetching rows from the cursor for a join with multiple outer joins
  could fail if data was being prefetched.

DEPRECATIONS:

- Alzabo::DriverStatement->next_hash method has been renamed
  next_as_hash.

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

0.70  November 21, 2002

ENHANCEMENTS:

- The exception thrown when you attempt to set a non-nullable column
  to NULL is now an Alzabo::Exception::NotNullable exception, instead
  of an Alzabo::Exception::Params exception.  In the interests of
  backwards compatibility, the former is a subclass of the latter.

- Improved debugging options.  See the new Alzabo::Debug module for
  details.

BUG FIXES:

- Fixed Alzabo::Table->primary_key, which would die when no primary
  key existed and it was called in a scalar context.  In an array
  context, all the columns in the table were returned.  Reported by
  Eric Prestemon.

- Alzabo::ObjectCache::Sync::RDBMS created a table that it would later
  consider incorrect.  This made this module unusable.

- Alzabo::ObjectCache::Sync::RDBMS caused weird random errors when
  used with MySQL's InnoDB tables.

- In the schema creator, the link to the graph page, and the link _on_
  the graph page to the image, were both broken.

- Alzabo was allowing you to rename a column to the name of an
  existing column in a table.  Similarly, a table could be renamed to
  the same name as an existing table.  Doing this could trash a
  schema.

- Alzabo::Runtime::Table->one_row would return undef if no row was
  found, which in a list context evaluated to a true value.

- Allow no_cache option when calling Alzabo::Runtime::Schema->join.

- When displaying SQL, the schema creator now makes sure to
  HTML-escape it, because it's possible to have HTML in there (in a
  default, most likely).

- The "children" method generated by Alzabo::MethodMaker did not allow
  you to add additional where clause constraints to the query.

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

0.69  September 19, 2002

ENHANCEMENTS:

- Add count method to Alzabo::DriverStatement objects.

BUG FIXES:

- ** A particularly nasty bug sometimes manifested itself when
  removing a foreign key.  This bug caused the deletion of all foreign
  keys involving the _corresponding_ column(s) in the foreign table.
  Needless to say, this could make a big mess.

- Fix some typos in the generated docs created by Alzabo::MethodMaker.

- A join that included a where clause with an 'OR' generated improper
  SQL.  Reported by Ilya Martynov.

- Calling the Alzabo::Runtime::JoinCursor->next_as_hash method when
  the query involved an outer join could cause a runtime error.

- In where clause specifications, 'and' and 'or' were only being
  allowed in lower-case.  They are now allowed in any case.

Changes  view on Meta::CPAN

- 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!).

- Don't specify a database name when creating or dropping a database.
  Reported and patched by Dana Powers.

ENHANCEMENTS:

- Rules violations error messages (bad table name, for example) in the
  schema creator are now handled in a much friendlier manner.  Instead
  of the big error dump exception page it returns you to the page you
  submitted from with an error message.

- Add Alzabo::Create::Column->alter method which allows you to change
  the column type, length, and precision all at once.  This is
  necessary because some of the column type validation code will
  insist that a column have a length setting.  If you try to change
  them in two separate operations it will throw an exception.

- Add Alzabo::ObjectCache::Store::Null - This allows you to use any
  multi-process syncing module without using up the memory that
  Alzabo::ObjectCache::Store::Memory uses.

- Add Alzabo::ObjectCache::Store::BerkeleyDB - I'm not sure if storing
  in a db file is really a performance win (vs. null storage) because
  of the work needed to freeze & thaw the row objects.  Benchmarks are
  needed.

- Add support for fulltext indexes (MySQL).

- Don't show fulltext or column prefix options when creating indexes
  for databases that don't support these features.

- Use cardinality & dependency language for relations.

- Add some style to the schema creator (via stylesheets).  It looks a
  little better now.

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

0.44 May 4, 2001

BUG FIXES:



( run in 0.540 second using v1.01-cache-2.11-cpan-39bf76dae61 )