Alzabo
view release on metacpan or search on metacpan
rt.cpan.org.
ENHANCEMENTS:
- Allow any key starting with "pg_" when connecting a Postgres
database. This allows you to pass attributes like "pg_enable_utf8"
or "pg_bool_tf". Prompted by a discussion with Boris Shomodjvarac.
0.86 December 22, 2004
BUG FIXES:
- Allow a UNIQUE constraint as a column attribute for MySQL.
ENHANCEMENTS:
- It is now possible to use a single Alzabo schema object to create
and access multiple copies of that schema in an RDBMS. This is done
by setting the "schema_name" parameter whenever calling a method
that accesses the RDBMS.
This feature has a bad interaction with the way internal schema
diffs are generated, however. Please see the "MULTIPLE COPIES OF
THE SAME SCHEMA" section in Alzabo::Intro for details.
- The Alzabo::Runtime::Row->update() method now returns a boolean
indicating whether any changes were actually made. Patch by Eric
Waters.
0.85 October 12, 2004
BUG FIXES:
- The DECIMAL and NUMERIC column types in MySQL were not being treated
as numeric types. This meant that you couldn't give such a column
the UNSIGNED attribute, among other problems. Reported by Bob
Sidebotham.
- If a column had CHECK constraints, the Postgres reverse engineering
failed. Reported by Ken Miller, fixed by Joshua Jore.
- Insert handles did not include sequenced Postgres columns, causing
17-insert-handle.t to fail when run against Postgres. Reported by
Eric Schwartz.
0.84 September 4, 2004
ENHANCEMENTS:
- Alzabo::MethodMaker will now warn you when you it creates a method
that overrides a parent class's method. This can cause problems
when you override the table class's name() method with one that
returns a column object.
BUG FIXES:
- Make Alzabo::Create::Schema->delete work under taint mode. Reported
by Dana Hudes.
- Improve Alazbo::PostgreSQL docs, specifically mentioning that if you
create a Postgres schema with mixed or upper case table names, you
need to do $schema->set_quote_identifiers(1) for any DML SQL to
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
- When creating a relationship between tables in the schema creator,
you can now let Alzabo figure out which columns to use instead of
choosing them yourself. For most relationships, Alzabo will simply
do the right thing, adding a column to one of the tables as needed.
- The problems running the tests with Postgres should now be fixed.
- Fix stupid and inefficient internal handling of "SELECT DISTINCT"
queries. Now Alzabo simply lets the database handle this, the way
it should have in the first place.
- The Alzabo::Runtime::Schema and Alzabo::Runtime::Table ->function
and ->select methods now allow you to select scalars so you can do
things like SELECT 1 FROM Foo WHERE ... in order to test for the
existence of a row.
- Added Alzabo::Table->primary_key_size method, which indicates how
many columns participate in the table's primary key.
- Added Alzabo::Runtime::Schema->row_count. Suggested by Daniel
Gaspani.
- Alzabo now detects older versions of schemas and transparently
updates them. This will work for all schemas created with version
0.55 or later.
See the section titled "Backwards Compability" in Alzabo.pm for more
details.
- Added comment attribute for tables, columns, and foreign keys.
- Add VARBIT and TIMESTAMPTZ as legal types for Postgres.
- Handle SERIAL columns in Postgres better. Use the sequence Postgres
creates for the columns rather than making our own and just insert
undef into new rows for that column.
BUG FIXES:
- Adding a column that is not-nullable or has a default to a table
under Postgres was causing an error with Postgres 7.2.1. It seems
likely that with earlier versions of Postgres, this was simply
failing silently. Patch by Daniel Gaspani.
- 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
( run in 1.510 second using v1.01-cache-2.11-cpan-39bf76dae61 )