Alzabo
view release on metacpan or search on metacpan
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.
- The Alzabo::Column->null and Alzabo::Create::Column->set_null
methods (deprecated in 0.20) are gone. Use ->nullable and
->set_nullable instead.
---------------------------------------------------------------------------
0.51 Aug 29, 2001
BUG FIXES:
- Accidentally broke foreign key display for schema creation interface
in 0.50. -- In retrospect, the bug was fixing this. Oh well, live
and learn.
ENHANCEMENTS:
- Add ->handle method to Alzabo::Driver class, which lets you set and
get the current database handle. Suggested by Ilya Martynov.
---------------------------------------------------------------------------
but the set methods still use the old concepts). I'll make sure
that there is a time when using these methods issues a warning about
their deprecation.
BUG FIXES:
- Fix pod merging, which broke a while back (this merges superclass
documentation into subclasses for things like
Alzabo::Runtime::Table).
- The code was accidentally serializing a DBI handle, which generates
lots of useless warnings. This wasn't affecting Alzabo's operations
as it never attempted to use the thawed handle.
- Fix handling of ENUM and SET column types for MySQL. These were not
being allowed through properly.
- Attempting to insert a value into a column that was related to a
non-primary key column were not allowed if the value being inserted
did not match the related column in the other table, even when the
columns were not dependent on each other. Now this is only
- 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
- Added Alzabo::DriverStatement and Alzabo::Driver::Exception to Alzabo::Driver
- improved data browser memory efficiency
- minor bug fixes (bad links) in data browser and schema maker
- minor buglet fix in Alzabo::Driver::MySQL
- big fix to how Alzabo::Runtime::Schema is saved from
Alzabo::Create::Schema. Previous implementation was accidentally
saving both the runtime and create versions at once. The new
version fixes this.
If any portion of this section is held invalid or unenforceable under any particular
circumstance, the balance of the section is intended to apply and the section as
a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other
property right claims or to contest validity of any such claims; this section has
the sole purpose of protecting the integrity of the free software distribution
system, which is implemented by public license practices. Many people have
made generous contributions to the wide range of software distributed through
that system in reliance on consistent application of that system; it is up to the
author/donor to decide if he or she is willing to distribute software through any
other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a
consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in certain countries
either by patents or by copyrighted interfaces, the original copyright holder who
places the Program under this License may add an explicit geographical
distribution limitation excluding those countries, so that distribution is permitted
only in or among countries not thus excluded. In such case, this License
lib/Alzabo/RDBMSRules/MySQL.pm view on Meta::CPAN
{
Alzabo::Exception::RDBMSRules->throw( error => "Valid values for the length specification are 2 or 4." )
if defined $column->length && ($column->length != 2 && $column->length != 4);
return;
}
Alzabo::Exception::RDBMSRules->throw( error => $column->type . " columns cannot have a length or precision." )
if defined $column->length || defined $column->precision;
}
# placeholder in case we decide to try to do something better later
sub validate_table_attribute { 1 }
sub validate_column_attribute
{
my $self = shift;
my %p = @_;
my $column = $p{column};
my $a = uc $p{attribute};
$a =~ s/\A\s//;
lib/Alzabo/RDBMSRules/PostgreSQL.pm view on Meta::CPAN
unless $column->type =~ /\A(?:(?:VAR)?CHAR|CHARACTER|DECIMAL|FLOAT|NUMERIC|(?:VAR)?BIT|BIT VARYING)\z/i;
}
if ( defined $column->precision )
{
Alzabo::Exception::RDBMSRules->throw( error => "Precision is not supported except for decimal, float, and numeric columns" )
unless $column->type =~ /\A(?:DECIMAL|FLOAT|NUMERIC)\z/i;
}
}
# placeholder in case we decide to try to do something better later
sub validate_table_attribute { 1 }
sub validate_column_attribute
{
my $self = shift;
my %p = @_;
my $column = $p{column};
my $type = $column->type;
my $a = uc $p{attribute};
lib/Alzabo/Runtime/Schema.pm view on Meta::CPAN
L<C<set_user()>|Alzabo::Runtime::Schema/set_user ($user)> and
L<C<set_password()>|Alzabo::Runtime::Schema/set_password ($password)>
methods in the server startup file. Then all the mod_perl children
will inherit the schema with the user and password already set.
Otherwise you will have to provide it for each request.
You may ask why you have to go to all this trouble to deal with the
user and password information. The basic reason was that I did not
feel I could come up with a solution to this problem that was secure,
easy to configure and use, and cross-platform compatible. Rather, I
think it is best to let each user decide on a security practice with
which they feel comfortable.
In addition, there are a number of modules aimed at helping store and
use this sort of information on CPAN, including C<DBIx::Connect> and
C<AppConfig>, among others.
=head1 AUTHOR
Dave Rolsky, <autarch@urth.org>
( run in 1.507 second using v1.01-cache-2.11-cpan-4505f990765 )