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