Tim Bunce wrote:
>
> On Fri, Feb 08, 2002 at 03:16:38PM +0100, Steffen Goeldner wrote:
> >
> > Ok. Or, I'm thinking about a method ado_schema_dbinfo_literal(), caching
> > all data of the adSchemaDBInfoLiterals pseudo-table, ...
> > Attached are some results for the MSDAORA and Jet Provider.
>
> Seems like a good idea.
Fine! Here a code snippet:
sub ado_schema_dbinfo_literal {
my($dbh, $literal_name) = @_;
my $cache = $dbh->{ado_schema_dbinfo_literal_cache};
unless ( defined $cache ) {
$cache = $dbh->{ado_schema_dbinfo_literal_cache} = {};
my $sth = $dbh->func('adSchemaDBInfoLiterals','OpenSchema');
while ( my $row = $sth->fetch ) {
$cache->{$row->[0]} = [ @$row ];
}
}
my $row = $cache->{$literal_name};
return $row->[1] unless wantarray; # literal value
return @$row;
}
Now, in DBD::ADO::GetInfo, we can use it:
sub sql_identifier_quote_char {
my $dbh = shift;
DBD::ADO::db::ado_schema_dbinfo_literal($dbh,'QUOTE') ||
DBD::ADO::db::ado_schema_dbinfo_literal($dbh,'QUOTE_PREFIX') ||'"';
}
sub sql_catalog_name_separator {
my $dbh = shift;
DBD::ADO::db::ado_schema_dbinfo_literal($dbh,'CATALOG_SEPARATOR') ||'.';
}
Steffen