[svn:dbd-oracle] r15467 - in dbd-oracle/trunk: . lib/DBD
[email protected] Fri, 2 Nov 2012 12:59:11 -0700 (PDT)
| Newsgroups | perl.dbd.oracle.changes |
|---|---|
| Message-ID | <[email protected]> |
Author: mjevans
Date: Fri Nov 2 12:59:09 2012
New Revision: 15467
Modified:
dbd-oracle/trunk/Changes
dbd-oracle/trunk/lib/DBD/Oracle.pm
Log:
Fix RT 80566 - patch from Steffen
Modified: dbd-oracle/trunk/Changes
==============================================================================
--- dbd-oracle/trunk/Changes (original)
+++ dbd-oracle/trunk/Changes Fri Nov 2 12:59:09 2012
@@ -27,6 +27,10 @@
- ora_server_version was not documented.
+ - Fix RT80566. 70meta.t test fails with Oracle 8 because
+ ALL_TAB_COLUMNS.CHAR_LENGTH is new in Oracle 9. Use DATA_LENGTH
+ instead on pre-9 versions. Thanks to Steffen Goeldner.
+
[MISCELLANEOUS]
- The original 26exe_array test was replaced some time ago with a
Modified: dbd-oracle/trunk/lib/DBD/Oracle.pm
==============================================================================
--- dbd-oracle/trunk/lib/DBD/Oracle.pm (original)
+++ dbd-oracle/trunk/lib/DBD/Oracle.pm Fri Nov 2 12:59:09 2012
@@ -606,8 +606,9 @@
my $dbh = shift;
my $attr = ( ref $_[0] eq 'HASH') ? $_[0] : {
'TABLE_SCHEM' => $_[1],'TABLE_NAME' => $_[2],'COLUMN_NAME' => $_[3] };
+ my $ora_server_version = ora_server_version($dbh);
my($typecase,$typecaseend) = ('','');
- if (ora_server_version($dbh)->[0] >= 8) {
+ if ($ora_server_version->[0] >= 8) {
$typecase = <<'SQL';
CASE WHEN tc.DATA_TYPE LIKE 'TIMESTAMP% WITH% TIME ZONE' THEN 95
WHEN tc.DATA_TYPE LIKE 'TIMESTAMP%' THEN 93
@@ -617,6 +618,7 @@
SQL
$typecaseend = 'END';
}
+ my $char_length = $ora_server_version->[0] < 9 ? 'DATA_LENGTH':'CHAR_LENGTH';
my $SQL = <<"SQL";
SELECT *
FROM
@@ -661,10 +663,10 @@
)
, 'FLOAT' , tc.DATA_PRECISION
, 'DATE' , 19
- , 'VARCHAR2' , tc.CHAR_LENGTH
- , 'CHAR' , tc.CHAR_LENGTH
- , 'NVARCHAR2', tc.CHAR_LENGTH
- , 'NCHAR' , tc.CHAR_LENGTH
+ , 'VARCHAR2' , tc.$char_length
+ , 'CHAR' , tc.$char_length
+ , 'NVARCHAR2', tc.$char_length
+ , 'NCHAR' , tc.$char_length
, tc.DATA_LENGTH
) COLUMN_SIZE
, decode( tc.DATA_TYPE