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) = @_;