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

Reply via email to