Add optional database connection parameters to the DatabaseLink. This

replaces the old, automatic setting of LongReadLen and LongTruncOk in
SQL.pm, and is much more flexible.
Fix some documentation with allowMacroAccess in the DatabaseLink.
Additional tests for DatabaseLink.
Document the new parameter behavior in the changelog and gotchas file.
This commit is contained in:
Colin Kuskie 2007-07-25 23:46:20 +00:00
parent 350d7f6e01
commit a9f45865e6
8 changed files with 78 additions and 29 deletions

View file

@ -312,20 +312,27 @@ The password to use to connect to the database defined by dsn.
=cut
sub connect {
my $class = shift;
my $class = shift;
my $session = shift;
my $dsn = shift;
my $user = shift;
my $pass = shift;
my $dsn = shift;
my $user = shift;
my $pass = shift;
my $params = shift;
my $dbh = DBI->connect($dsn,$user,$pass,{RaiseError=>0,AutoCommit=>1 });
unless (defined $dbh) {
$session->errorHandler->error("Couldn't connect to database: $dsn");
return undef;
}
if ( $dsn =~ /Oracle/ || $dsn =~ /ODBC/ ) { # Set specific attributes for long Oracle and ODBC DSNs
$dbh->{LongReadLen} = 512 * 1024;
$dbh->{LongTruncOk} = 1;
}
##Set specific attributes for this database.
my @params = split /\s*\n\s*/, $params;
foreach my $param ( @params ) {
my ($paramName, $paramValue) = split /\s*=\s*/, $param;
$dbh->{$paramName} = $paramValue;
}
bless {_dbh=>$dbh, _session=>$session}, $class;
}