[svn:dbd-oracle] r15017 - dbd-oracle/trunk

[email protected] Thu, 24 Nov 2011 05:23:30 -0800 (PST)
Newsgroups perl.dbd.oracle.changes
Message-ID <[email protected]>
Author: mjevans
Date: Thu Nov 24 05:23:29 2011
New Revision: 15017

Modified:
   dbd-oracle/trunk/Changes
   dbd-oracle/trunk/Oracle.pm

Log:
patch for ora_server_version and dbs not open


Modified: dbd-oracle/trunk/Changes
==============================================================================
--- dbd-oracle/trunk/Changes	(original)
+++ dbd-oracle/trunk/Changes	Thu Nov 24 05:23:29 2011
@@ -1,5 +1,13 @@
 Revision history for DBD::Oracle
 
+Changes in DBD-Oracle X.XX (XX-XX-XXXX)
+
+ [BEG FIXES]
+
+ - applied patch from Charles Jardine avoiding undefined values
+   warnings in ora_server_version when the database is not open
+   [RT72623] (Martin J. Evans)
+
 Changes in DBD-Oracle 1.35_00 (18-11-2011)
 
  [BUG FIXES]

Modified: dbd-oracle/trunk/Oracle.pm
==============================================================================
--- dbd-oracle/trunk/Oracle.pm	(original)
+++ dbd-oracle/trunk/Oracle.pm	Thu Nov 24 05:23:29 2011
@@ -952,12 +952,15 @@
     sub ora_server_version {
 	my $dbh = shift;
 	return $dbh->{ora_server_version} if defined $dbh->{ora_server_version};
-	$dbh->{ora_server_version} =
-	   [ split /\./, $dbh->selectrow_array(<<'SQL', undef, 'Oracle%', 'Personal Oracle%') .''];
-SELECT version
-  FROM product_component_version
- WHERE product LIKE ? or product LIKE ?
+	my $banner = $dbh->selectrow_array(<<'SQL', undef, 'Oracle%', 'Personal Oracle%');
+SELECT banner
+  FROM v$version
+  WHERE banner LIKE ? OR banner LIKE ?
 SQL
+	if (defined $banner) {
+	    my @version = $banner =~ /(?:^|\s)(\d+)\.(\d+)\.(\d+)\.(\d+)\.(\d+)(?:\s|$)/;
+	    $dbh->{ora_server_version} = \@version if @version;
+	}
     }
 
     sub ora_nls_parameters {