[rt-devel] BuildDSN format in Oracle/DBIx::SearchBuilder
Brook Schofield
brooksch at mac.com
Sun Apr 13 14:11:47 EDT 2003
Does anyone have an opinion on the best connect method for
SearchBuilder and Oracle?
When I manually use DBI, I generally use:
my $oracle_data_source = "dbi:Oracle:DEV9I.host.domain.edu.au";
my $oracle_username = "USER";
my $oracle_auth = "PASS";
$dbh = DBI->connect($oracle_data_source, $oracle_username,
$oracle_auth, { AutoCommit => 1 });
resulting in Oracle using the information from TNSNAMES, but
SearchBuilder likes to create a DSN in the format:
'dbi:Oracle:dbname=DEV9I;host=localhost'
which is insufficient for an Oracle connection - as you need to provide
a SID and Hostname. Are there any objections by DBIx::SearchBuilder
users in changing the default behaviour? Patch attached for any
interested people. I just don't want to rock the boat of any SB users
outside of the RT community which could have problems with this change.
Jesse, others, what are your thoughts?
Logic would change to (only for the Oracle Handle):
+ my $dsn = "dbi:$args{'Driver'}:";
+
+ if (defined $args{'Host'} && $args{'Host'}
+ && defined $args{'SID'} && $args{'SID'} ) {
+ $dsn .= "host=$args{'Host'};sid=$args{'SID'}";
+ } else {
+ $dsn .= "$args{'Database'}" if (defined $args{'Database'} &&
$args{'Database'});
+ }
+ $dsn .= ";port=$args{'Port'}" if (defined $args{'Port'} &&
$args{'Port'});
+ $dsn .= ";requiressl=1" if (defined $args{'RequireSSL'} &&
$args{'RequireSSL'});
+
+ $self->{'dsn'}= $dsn;
to build either a Database based version (if a database is specified)
or a SID/Host based DSN. If you haven't noticed from my enquiry Oracle
support is nearing completion - at least I think so - but the rigorous
testing is something that will be left as an exercise to the reader.
Watch this space!
-Brook
More information about the Rt-devel
mailing list