On Sat, Mar 29, 2003 at 08:30:37AM +0100, H.Merijn Brand wrote:
> On Fri 28 Mar 2003 21:05, Tim Bunce <[EMAIL PROTECTED]> wrote:
> > > > > This will fix the lot:
> > > >
> > > > > -($inspdver{rdbms_ver} = $inspdver{RDBMS}) =~ s/^(\d+\.\d+)\.(\d+)/${1}0$2/;
> > > > > +($inspdver{rdbms_ver} = $inspdver{RDBMS}) =~
> > > > > s/^(\d+\.\d+)\.(\d+)(.\d+)*/${1}0$2/;
> > > >
> > > > Why was that change needed?
> > >
> > > Argument "8.107.0.0" isn't numeric in numeric ge (>=) at Makefile.PL line 846.
> >
> > Ah. Wouldn't a simple .* instead of (.\d+)* be more general?
>
> Yes, but less defensive. If Some clueless user now for some dark reason gets
> 9.321i.h3-12 I *think* it'll be better for us that he mails this `error'
Umm, good point. But at that point in the code we've passed the
"could not decode oracle version" message and so if the regex fails
the user will just get cryptic warnings about "invalid number",
as someone recently reported on dbi-users.
I think the patch below will take care of that.
Tim.
p.s. Would be nice if we could extend the version detection to VMS
and MSWin32 as well.
--- Makefile.PL 2003/03/27 16:44:15 1.105
+++ Makefile.PL 2003/03/31 09:01:05
@@ -161,7 +161,13 @@
elsif ( "$OH/" =~ m!\D(1?\d)(\d)(\d)\D!) { # scary but handy
$inspdver{RDBMS} = join ".", $1, $2, $3;
}
- else {
+
+ # hack up a simple floating point form of the version: 8.1.6 => 8.106
+ ($inspdver{rdbms_ver} = $inspdver{RDBMS}) =~ s/^(\d+\.\d+)\.(\d+)(.\d+)*/${1}0$2/;
+
+ print "Oracle version $inspdver{RDBMS} ($inspdver{rdbms_ver})\n" if
$inspdver{RDBMS};
+
+ if (!DBI::looks_like_number($inspdver{rdbms_ver}) || $inspdver{rdbms_ver} < 7 ||
$inspdver{rdbms_ver} > 10) {
print qq{
WARNING: could not decode oracle version from
$OH/orainst/inspdver, or $OH/install/unix.rgs
@@ -177,10 +183,6 @@
sleep 5;
}
}
-print "Oracle version $inspdver{RDBMS}\n" if $inspdver{RDBMS};
-# hack up a simple floating point form of the version: 8.1.6 => 8.106
-($inspdver{rdbms_ver} = $inspdver{RDBMS}) =~ s/^(\d+\.\d+)\.(\d+)/${1}0$2/;
-#print "\ninspdver{rdbms_ver}=". $inspdver{rdbms_ver} ."\n";
# Check for symbol table problem in libclntsh.dylib.9.0 on MacOS X
if ($os eq 'darwin') {