A new patch for DBD::Oracle:
- get_info() now takes a numeric value
- SQL_DBMS_VERSION is supported
More info types if desired. (I don't like a blindfold
adoption of the Oracle ODBC driver results.)
Steffen
*** DBD-Oracle-1.12.orig/Oracle.pm Fri Aug 31 18:27:18 2001
--- Oracle.pm Thu Jan 31 22:33:59 2002
***************
*** 313,318 ****
--- 313,368 ----
}
+ sub get_info {
+ my($dbh, $info_type) = @_;
+ # XXX Caching
+ my $fmt = '%02d.%02d.%1d%1d%1d%1d'; # ODBC version string: ##.##.#####
+ if ($info_type == 18) { # SQL_DBMS_VERSION
+ return sprintf $fmt, @{ora_server_version($dbh)};
+ }
+ elsif ($info_type == 7) { # SQL_DRIVER_VER
+ return sprintf $fmt, split (/\./, $DBD::Oracle::VERSION);
+ }
+ my %gi = (
+ 117 => 0 # SQL_ALTER_DOMAIN
+ , 114 => 2 # SQL_CATALOG_LOCATION
+ , 10003 => 'N' # SQL_CATALOG_NAME
+ , 41 => '@' # SQL_CATALOG_NAME_SEPARATOR
+ , 42 => 'Database Link' # SQL_CATALOG_TERM
+ , 87 => 'Y' # SQL_COLUMN_ALIAS
+ , 22 => 1 # SQL_CONCAT_NULL_BEHAVIOR
+ , 130 => 0 # SQL_CREATE_DOMAIN
+ , 2 => "dbi:Oracle:$dbh->{Name}" # SQL_DATA_SOURCE_NAME
+ , 17 => 'Oracle' # SQL_DBMS_NAME
+ , 6 => __FILE__ # SQL_DRIVER_NAME
+ , 139 => 0 # SQL_DROP_DOMAIN
+ , 28 => 1 # SQL_IDENTIFIER_CASE
+ , 29 => '"' # SQL_IDENTIFIER_QUOTE_CHAR
+ , 34 => 0 # SQL_MAX_CATALOG_NAME_LEN
+ , 30 => 30 # SQL_MAX_COLUMN_NAME_LEN
+ , 10005 => 30 # SQL_MAX_IDENTIFIER_LEN
+ , 32 => 30 # SQL_MAX_OWNER_NAME_LEN
+ , 34 => 0 # SQL_MAX_QUALIFIER_NAME_LEN
+ , 32 => 30 # SQL_MAX_SCHEMA_NAME_LEN
+ , 35 => 30 # SQL_MAX_TABLE_NAME_LEN
+ , 107 => 30 # SQL_MAX_USER_NAME_LEN
+ , 39 => 'Owner' # SQL_OWNER_TERM
+ , 40 => 'Procedure' # SQL_PROCEDURE_TERM
+ , 114 => 2 # SQL_QUALIFIER_LOCATION
+ , 41 => '@' # SQL_QUALIFIER_NAME_SEPARATOR
+ , 42 => 'Database Link' # SQL_QUALIFIER_TERM
+ , 93 => 3 # SQL_QUOTED_IDENTIFIER_CASE
+ , 39 => 'Owner' # SQL_SCHEMA_TERM
+ , 14 => '\\' # SQL_SEARCH_PATTERN_ESCAPE
+ , 13 => "$dbh->{Name}" # SQL_SERVER_NAME
+ , 94 => '$#' # SQL_SPECIAL_CHARACTERS
+ , 45 => 'Table' # SQL_TABLE_TERM
+ , 47 => "$dbh->{CURRENT_USER}" # SQL_USER_NAME # XXX OPS$
+ );
+ return $gi{$info_type};
+ }
+
+
sub table_info {
my($dbh, $attr) = @_;
# XXX add knowledge of temp tables, etc