Attached is a possible implementation for DBD::ADO.
Only a few information types are supported, but it's
a beginning.
I'm somewhat unsure about SQL_DRIVER_*, because two
layers (DBD::ADO and an ADO Provider) are involved.


Steffen
*** DBD-ADO-2.4.02/lib/DBD/ADO.pm       Thu Dec 13 01:17:30 2001
--- ADO.pm      Sun Dec 16 09:41:35 2001
***************
*** 754,759 ****
--- 754,795 ----
        $sth;
      }
  
+       sub get_info {
+               my($dbh, $info_type) = @_;
+ 
+               # XXX Caching
+               if ( $info_type eq 'SQL_KEYWORDS') {
+                       my $sth = $dbh->func('adSchemaDBInfoKeywords','OpenSchema');
+                       my @Keywords = ();
+                       while ( my $row = $sth->fetch ) {
+                               push @Keywords, $row->[0];
+                       }
+                       return join ',', @Keywords;
+               }
+               if ( $info_type eq 'SQL_IDENTIFIER_QUOTE_CHAR') {
+                       my $sth = $dbh->func('adSchemaDBInfoLiterals','OpenSchema');
+                       while ( my $row = $sth->fetch ) {
+                               return $row->[1] if $row->[0] eq 'QUOTE'; # XXX 
+QUOTE_PREFIX, QUOTE_SUFFIX
+                       }
+               }
+               my %gi = (
+                 SQL_CATALOG_TERM     => 'Catalog Term'
+               , SQL_DATA_SOURCE_NAME => 'Data Source Name'  # XXX SQL_DATABASE_NAME
+               , SQL_DBMS_NAME        => 'DBMS Name'
+               , SQL_DBMS_VERSION     => 'DBMS Version'
+               , SQL_DRIVER_NAME      => 'Provider Name'     # XXX __FILE__
+               , SQL_DRIVER_VER       => 'Provider Version'  # XXX $DBD::ADO::VERSION
+               , SQL_PROCEDURE_TERM   => 'Procedure Term'
+               , SQL_SCHEMA_TERM      => 'Schema Term'
+               , SQL_TABLE_TERM       => 'Table Term'
+               , SQL_USER_NAME        => 'User Name'
+               );
+               if ( exists $gi{$info_type} ) {
+                       return $dbh->{ado_conn}->Properties->{$gi{$info_type}}{Value};
+               }
+               return undef;
+       }
+ 
  
        sub table_info {
                my($dbh, $attribs) = @_;

Reply via email to