Re: DBD::Oracle beta available for testing

2003-09-26 Thread Tim Bunce
On Thu, Sep 25, 2003 at 09:05:17PM +0200, Kristian Nielsen wrote:
> Tim Bunce <[EMAIL PROTECTED]> writes:
> 
> > But since *very* few people would need the ability to
> > share database connections with ProC/SQLLIB code my preference
> 
> Yes, I agree, I implemented this because I wanted to migrate a large
> ProC based codebase gradually to using Perl/DBI, so I am embedding Perl
> in a ProC-based application. Few people would ever find themselves in
> this unfortunate situation, and if they did, having to slightly tweak
> the DBD::Oracle build would be the least of their problems.
> 
> > right now is to just disable it entirely on Windows and
> > only enable it on other platforms for Oracle >= 9.0.
> 
> Hm, I *think* that I had this running on 8.1.7 before we upgraded to
> Oracle 9. Not absolutely sure though.

I'll probably go the route of disabling it unless "perl Makefile.PL"
is run with an option - as per the patch Steffen posted earlier.

> Sorry that I cannot help with the Windows part, but I do not have
> access to a Windows Oracle development environment.

The windows problem will disapear once the ProC interface code is
disabled. (Unless some poor soul needs ProC interface code on Windows,
but we can deal with that if it ever happens.)

Tim.


Re: DBD::Oracle beta available for testing

2003-09-26 Thread Steffen Goeldner
Tim Bunce wrote:
> 
> On Thu, Sep 25, 2003 at 12:39:05PM +0200, Steffen Goeldner wrote:
> > Steffen Goeldner wrote:
> > >
> > > [...]
> > >
> > > I try to find those symbols and the library ...
> >
> > Thanks to Andy Hassall, I found the symbols in orasql8.dll.
> > I did not install Pro*C and have a $ORACLE_HOME/precomp
> > but no $ORACLE_HOME/precomp/lib (and no orasql8.lib).
> 
> Er, so how did you find the symbols in orasql8.dll then?

The orasql8.dll is in $ORACLE_HOME/bin. You can see all exported
symbols with e.g. 'Quick View' or Borland's IMPDEF:

LIBRARY ORASQL8.DLL

EXPORTS
DSNTIAR@1   ; DSNTIAR
...
SQLEnvGet  @15  ; SQLEnvGet
...
 
> >
[...]
> > 2) Import via .def file, e.g.:
> >
> > $opts{IMPORTS} = {
> >   _SQLEnvGet=> 'orasql8.SQLEnvGet',
> >   _SQLSvcCtxGet => 'orasql8.SQLSvcCtxGet'
> > } if $os eq 'MSWin32' && $Config{cc} eq 'bcc32';  # Borland CC
> 
> Does that work for you?

Yes, DBD-Oracle-1.15/Oracle.def now contains:

LIBRARY "Oracle"
EXPORTS
  _boot_DBD__Oracle
  boot_DBD__Oracle = _boot_DBD__Oracle
  
IMPORTS
  _SQLEnvGet=orasql8.SQLEnvGet
  _SQLSvcCtxGet=orasql8.SQLSvcCtxGet

> And for other compilers?

There may be an '_' issue with other compilers/linkers.

> Wouldn't orasql8.dll still need to be installed and listed on the
> linker command line?

The orasql8.dll is installed - at least on my 'small' (82.9MB)
Oracle 8.1.7 client installation.
The linker needs either a .lib or .def file.

> > (There is an empty! 'Oracle 817 Production.rgs' in my
> > $OH/ORAINST directory. I don't know how portable that is.)
> 
> There might be a version number in the registry.

That's not really better, see attachment.

> But since *very* few people would need the ability to
> share database connections with ProC/SQLLIB code my preference
> right now is to just disable it entirely on Windows and
> only enable it on other platforms for Oracle >= 9.0.

That's o.k. for me.


Steffen

Oracle.reg
Description: application/unknown-content-type-regfile


Re: DBD::Oracle beta available for testing

2003-09-25 Thread Kristian Nielsen
Tim Bunce <[EMAIL PROTECTED]> writes:

> But since *very* few people would need the ability to
> share database connections with ProC/SQLLIB code my preference

Yes, I agree, I implemented this because I wanted to migrate a large
ProC based codebase gradually to using Perl/DBI, so I am embedding Perl
in a ProC-based application. Few people would ever find themselves in
this unfortunate situation, and if they did, having to slightly tweak
the DBD::Oracle build would be the least of their problems.

> right now is to just disable it entirely on Windows and
> only enable it on other platforms for Oracle >= 9.0.

Hm, I *think* that I had this running on 8.1.7 before we upgraded to
Oracle 9. Not absolutely sure though.

Sorry that I cannot help with the Windows part, but I do not have
access to a Windows Oracle development environment.

 - Kristian.

-- 
Kristian Nielsen   [EMAIL PROTECTED]
Development Manager, Sifira A/S



Re: DBD::Oracle beta available for testing

2003-09-25 Thread Andy Hassall
Tim Bunce wrote:
> On Wed, Sep 24, 2003 at 10:27:02PM +0100, Andy Hassall wrote:
>>
>> Adding D:/oracle/ora92/precomp/lib/MSVC/oraSQL9.LIB to that link.exe
>> command makes it link OK - and tests pass (except the usual trailing
>> space one):
>
> Great. Thanks. Any chance you could send me a patch to Makefile.PL?

Attached patch does a version and compiler search similar to the one done
for the OCI libraries.

(Although the way this, and the OCI search, does the sort may have to be
revised when 10G is released, if they keep the same library naming
convention; oci10.lib will sort after oci9.lib - but then again, do Oracle
homes ever have both libraries present? I assume at some point they did
which is why the code's there in the first place?)

Probably needs to take into account the option Steffen added as well?
(patch is against Makefile.PL after Steffen's patch applied, but there's no
overlaps so it applies to the original beta version too)

With patch, compiles+links OK on Windows 2000, Microsoft VC++ 6.0SP5, with
following client versions:

9.2.0.4
8.1.7.0
8.1.7.4

8i was installed as Client, using the Custom option, cutting it down to
basically just Net8 support and Pro*C.

Tests were done against a 9.2.0.4 database; I've only got the client bit of
8.1 installed, haven't got a database handy.

With client version 8.1.7.[0,4], but not 9.2.0.4, the long test fails as
Steffen described:

Failed 1/9 test scripts, 88.89% okay. 12/1530 subtests failed, 99.22% okay.
Failed Test Stat Wstat Total Fail  Failed  List of Failed

---
t\long.t 372   12   3.23%  60 68 76 86 88 90 153 161 169 179
   181 183
-- 
Andy Hassall ([EMAIL PROTECTED]) icq(5747695) (http://www.andyh.co.uk)
Space: disk usage analysis tool (http://www.andyhsoftware.co.uk/space)


DBD-Oracle-1.15-Makefile.PL.diff
Description: Binary data


Re: DBD::Oracle beta available for testing

2003-09-25 Thread Tim Bunce
On Thu, Sep 25, 2003 at 12:39:05PM +0200, Steffen Goeldner wrote:
> Steffen Goeldner wrote:
> > 
> > [...]
> >
> > I try to find those symbols and the library ...
> 
> Thanks to Andy Hassall, I found the symbols in orasql8.dll.
> I did not install Pro*C and have a $ORACLE_HOME/precomp
> but no $ORACLE_HOME/precomp/lib (and no orasql8.lib).

Er, so how did you find the symbols in orasql8.dll then?

> Even if, Borland C++ is no longer supported:
> 
>   
> 
> I see 2 options:
> 
> 1) Make an orasql8.lib:
> 
>  implib -a ORASQL8 /Oracle/Ora81/bin/ORASQL8.DLL
> 
>and add it to $opts{LIBS} in Makefile.PL.
> 
> 2) Import via .def file, e.g.:
> 
> $opts{IMPORTS} = {
>   _SQLEnvGet=> 'orasql8.SQLEnvGet',
>   _SQLSvcCtxGet => 'orasql8.SQLSvcCtxGet'
> } if $os eq 'MSWin32' && $Config{cc} eq 'bcc32';  # Borland CC

Does that work for you? And for other compilers?
Wouldn't orasql8.dll still need to be installed and listed on the
linker command line?

> The remaining question is: how to find out the correct
> version number? Maybe something like that:
> 
>   if ( $os eq 'MSWin32' ) {
> for ( glob "$OH/ORAINST/*.rgs") {
>   my $rgs = substr $_, length "$OH/ORAINST/";
>   $rgs =~ /(\d)(\d)(\d)/;
>   $inspdver{RDBMS} = join '.', $1, $2, $3;
> }
>   }
> 
> (There is an empty! 'Oracle 817 Production.rgs' in my
> $OH/ORAINST directory. I don't know how portable that is.)

There might be a version number in the registry.

But since *very* few people would need the ability to
share database connections with ProC/SQLLIB code my preference
right now is to just disable it entirely on Windows and
only enable it on other platforms for Oracle >= 9.0.

Tim.


Re: DBD::Oracle beta available for testing

2003-09-25 Thread Tim Bunce
On Thu, Sep 25, 2003 at 04:09:57PM +0200, Steffen Goeldner wrote:
> Steffen Goeldner wrote:
> >
> > Perl 5.6.1, MSWin32, Borland 5.5, Oracle 8.1.7
> >
> [...]
> > 
> > error: ORA-24801: illegal parameter value in OCI lob function (DBD ERROR: 
> > OCILobWriteAppend)
> 
> Metalink lists such an error as Bug #886191, fixed
> in 8.1.7. Hmmm.

Hmm indeed :-)

Tim.


Re: DBD::Oracle beta available for testing

2003-09-25 Thread Steffen Goeldner
Steffen Goeldner wrote:
>
> Perl 5.6.1, MSWin32, Borland 5.5, Oracle 8.1.7
>
[...]
> 
> error: ORA-24801: illegal parameter value in OCI lob function (DBD ERROR: 
> OCILobWriteAppend)

Metalink lists such an error as Bug #886191, fixed
in 8.1.7. Hmmm.


Steffen


Re: DBD::Oracle beta available for testing

2003-09-25 Thread Steffen Goeldner
Tim Bunce wrote:
> 
> Is it an alpha or a beta? Who knows? Probably more alpha than beta
> but it it what it is and you're welcome to hit on it.

Perl 5.6.1, MSWin32, Borland 5.5, Oracle 8.1.7

dmake test:

t\base...ok
t\cursor.ok
t\generalok
t\long...ok 53/372# failed test 60 at line 328.
t\long...ok 58/372# failed test 68 at line 328.
t\long...ok 62/372# failed test 76 at line 328.
t\long...ok 70/372# failed test 86 at line 342.
# failed test 88 at line 342.
t\long...ok 79/372# failed test 90 at line 342.
t\long...ok 145/372# failed test 153 at line 328.
t\long...ok 147/372# failed test 161 at line 328.
t\long...ok 155/372# failed test 169 at line 328.
t\long...ok 163/372# failed test 179 at line 342.
# failed test 181 at line 342.
t\long...ok 171/372# failed test 183 at line 342.
t\long...ok 343/372
Some tests for LONG data type handling failed. These are generally Oracle bugs.
Please report this to the dbi-users mailing list, and include the
Oracle version number of both the client and the server.
Please also include the output of the 'perl -V' command.
(If you can, please study t/long.t to investigate the cause.
Feel free to edit the tests to see what's happening in more detail.
Especially by adding trace() calls around the failing tests.
Run the tests manually using the command "perl -Mblib t/long.t")
Meanwhile, if the other tests have passed you can use DBD::Oracle.

t\long...dubious
Test returned status 4 (wstat 1024, 0x400)
DIED. FAILED tests 60, 68, 76, 86, 88, 90, 153, 161, 169, 179, 181, 183
Failed 12/372 tests, 96.77% okay
t\meta...ok
t\ph_typeok
t\plsql..ok
t\reauth.skipped test on this platform
t\select.ok
Failed Test Stat Wstat Total Fail  Failed  List of Failed
---
t\long.t   4  1024   372   12   3.23%  60 68 76 86 88 90 153 161 169 179
   181 183
1 test skipped.
Failed 1/9 test scripts, 88.89% okay. 12/1490 subtests failed, 99.19% okay.
dmake.exe:  Error code 32, while making 'test_dynamic'

--

Verbose output for t/long attached. Hints welcome!

BTW: I have a core dump after the last test. If I add
an '$dbh->disconnect;' to the END {}, it says

  t\longok 372/372DBI::db=HASH(0x180be8c)->disconnect
invalidates 5 active statement handles (either destroy
statement handles or call finish on them before
disconnecting) at t\long.t line 380.

and still crashes ...


SteffenUsing C:/temp/DBD-Oracle-1.15/blib
t\longcreate table dbd_ora__drop_me ( idx integer, lng LONG, dt date )
1..372
long_data0 length 10240
long_data1 length 81920
long_data2 length 71680
create table dbd_ora__drop_me ( idx integer, lng BLOB, dt date )
 --- insert some BLOB data (ora_type 113)
ok 1
ok 2
ok 3
ok 4
ok 5
 --- fetch BLOB data back again -- truncated - LongTruncOk == 1
LongReadLen 20, LongTruncOk 1
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
 --- fetch BLOB data back again -- truncated - LongTruncOk == 0
LongReadLen 81910, LongTruncOk
ok 14
ok 15
ok 16
ok 17
ok 18
ok 19
 --- fetch BLOB data back again -- complete - LongTruncOk == 0
LongReadLen 82920, LongTruncOk
ok 20
ok 21
ok 22
ok 23
ok 24
ok 25
ok 26
ok 27
 --- fetch BLOB data back again -- via blob_read
ok 28
ok 29
ok 30
ok 31
ok 32
ok 33
ok 34
ok 35
ok 36
ok 37
ok 38
 --- testing ora_auto_lob to access BLOB LobLocator
ok 39
40: OCILobLocatorPtr=SCALAR(0x22ad698)
ok 40
ok 41
ok 42
ok 43
41: OCILobLocatorPtr=SCALAR(0x22ad6bc)
ok 44
ok 45
ok 46
ok 47
42: OCILobLocatorPtr=SCALAR(0x22ad698)
ok 48
# failed test 60 at line 328.
ok 49
ok 50
ok 51
43: undef
ok 52
40 locator: OCILobLocatorPtr=SCALAR(0x22ad698)
ok 53
ok 54
# failed test 68 at line 328.
40 content: '040 foo!.X0.x.X0.x.X'
ok 55
ok 56
ok 57
ok 58
ok 59
not ok 60
error: ORA-24801: illegal parameter value in OCI lob function (DBD ERROR: 
OCILobWriteAppend)
41 locator: OCILobLocatorPtr=SCALAR(0x22ad6bc)
ok 61
ok 62
# failed test 76 at line 328.
41 content: '041 foo!901234567890'
ok 63
ok 64
ok 65
ok 66
ok 67
not ok 68
error: ORA-24801: illegal parameter value in OCI lob function (DBD ERROR: 
OCILobWriteAppend)
42 locator: OCILobLocatorPtr=SCALAR(0x22ad698)
ok 69
ok 70
42 content: '042 foo!cd2bcdefabcd'
# failed test 86 at line 342.
# failed test 88 at line 342.
ok 71
ok 72
ok 73
ok 74
ok 75
not ok 76
error: ORA-24801: illegal parameter value in OCI lob function (DBD ERROR: 
OCILobWriteAppend)
43 locator: undef
ok 77
ok 78
ok 79
ok 80
# failed test 90 at line 342.
ok 81
ok 82
ok 83
round again to check the length...
ok 84
40 locator: OCILobLocatorPtr=SCALAR(0x22ad728)
ok 85
not ok 86
41 locator: OCILobLocatorPtr=SCALAR(0x22ad6bc)
ok 87
not ok 88
42 locator: OCILobLocatorPtr=SCALAR(0x22ad728)
ok 89
not ok 90
43 locator: undef
ok 91
ok 92
ok 93
long_data0 length 10240
long_data1 length 81920
long_data2 length 71680
create table dbd_ora__drop_me ( idx integer, lng CLOB, dt date )
 ---

Re: DBD::Oracle beta available for testing

2003-09-25 Thread Steffen Goeldner
Steffen Goeldner wrote:
> 
> [...]
>
> I try to find those symbols and the library ...

Thanks to Andy Hassall, I found the symbols in orasql8.dll.
I did not install Pro*C and have a $ORACLE_HOME/precomp
but no $ORACLE_HOME/precomp/lib (and no orasql8.lib).
Even if, Borland C++ is no longer supported:

  

I see 2 options:

1) Make an orasql8.lib:

 implib -a ORASQL8 /Oracle/Ora81/bin/ORASQL8.DLL

   and add it to $opts{LIBS} in Makefile.PL.

2) Import via .def file, e.g.:

$opts{IMPORTS} = {
  _SQLEnvGet=> 'orasql8.SQLEnvGet',
  _SQLSvcCtxGet => 'orasql8.SQLSvcCtxGet'
} if $os eq 'MSWin32' && $Config{cc} eq 'bcc32';# Borland CC

The remaining question is: how to find out the correct
version number? Maybe something like that:

  if ( $os eq 'MSWin32' ) {
for ( glob "$OH/ORAINST/*.rgs") {
  my $rgs = substr $_, length "$OH/ORAINST/";
  $rgs =~ /(\d)(\d)(\d)/;
  $inspdver{RDBMS} = join '.', $1, $2, $3;
}
  }

(There is an empty! 'Oracle 817 Production.rgs' in my
$OH/ORAINST directory. I don't know how portable that is.)


Steffen


Re: DBD::Oracle beta available for testing

2003-09-25 Thread Tim Bunce
On Wed, Sep 24, 2003 at 11:06:37PM +0100, Andy Hassall wrote:
> Tim Bunce wrote:
> > On Wed, Sep 24, 2003 at 10:27:02PM +0100, Andy Hassall wrote:
> >>
> >> Adding D:/oracle/ora92/precomp/lib/MSVC/oraSQL9.LIB to that link.exe
> >> command makes it link OK - and tests pass (except the usual trailing
> >> space one):
> >
> > Great. Thanks. Any chance you could send me a patch to Makefile.PL?
> 
> I'll try and put one together tommorrow - haven't got Oracle 8i on this
> Windows machine at the moment - and I did the link manually by editing the
> link command rather than the makefile.
> 
> Presumably it's going to need a similar version sort to the $OCILIB variable
> as it'll be oraSQL8.lib on 8i?

Maybe. I don't know.

> FYI 1.15 on Linux / 9.2.0.4 compiles and links, all tests but ph_type pass.

Thanks.

Tim.


Re: DBD::Oracle beta available for testing

2003-09-25 Thread Tim Bunce
Thanks!

Tim.

On Thu, Sep 25, 2003 at 10:11:20AM +0200, Steffen Goeldner wrote:
> Tim Bunce wrote:
> > 
> > On Wed, Sep 24, 2003 at 11:24:17AM +0200, Steffen Goeldner wrote:
> > 
> [...]
> > 
> > > dmake
> > >  ...
> > >  Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
> > >  Error: Unresolved external '_SQLEnvGet' referenced from 
> > > C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ
> > >  Error: Unresolved external '_SQLSvcCtxGet' referenced from 
> > > C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ
> > 
> > If you (or someone else) are familar enough with windows, could you
> > check if those symbols are in some other oracle library that we're
> > not linking with?
> > 
> > (Otherwise you could just remove the if(use_proc_connection){...} blocks
> > so you can continue testing the rest of the code.)
> 
> O.k., to continue I added an option for Makefile.PL and some #ifdef's in
> dbdimp.c. I'm not sure if this option (and its name) is a good idea. Thus
> I try to find those symbols and the library ...
> 
> 
> Steffen
> diff -cb DBD-Oracle-1.15-orig/Makefile.PL DBD-Oracle-1.15/Makefile.PL
> *** DBD-Oracle-1.15-orig/Makefile.PL  Tue Sep 23 00:31:19 2003
> --- DBD-Oracle-1.15/Makefile.PL   Wed Sep 24 20:39:07 2003
> ***
> *** 84,92 
>   $::opt_f = 0;   # include text of oracle's .mk file within generated Makefile
>   $::opt_F = 0;   # force - ignore errors
>   $::opt_W = 0;   # just write a basic default Makefile (won't build)
>   
>   Getopt::Long::config( qw( no_ignore_case ) );
> ! GetOptions(qw(b! v! d! g! p! l! c! 8! f! F! W! m=s n=s s=s S=s))
>   or die "Invalid arguments";
>   
>   $::opt_g &&= '-g';  # convert to actual string
> --- 84,93 
>   $::opt_f = 0;   # include text of oracle's .mk file within generated Makefile
>   $::opt_F = 0;   # force - ignore errors
>   $::opt_W = 0;   # just write a basic default Makefile (won't build)
> + $::opt_ProC = 1;# use ProC
>   
>   Getopt::Long::config( qw( no_ignore_case ) );
> ! GetOptions(qw(b! v! d! g! p! l! c! 8! f! F! W! m=s n=s s=s S=s ProC!))
>   or die "Invalid arguments";
>   
>   $::opt_g &&= '-g';  # convert to actual string
> ***
> *** 581,586 
> --- 582,589 
>   
>   $opts{DEFINE} .= ' -Xa' if $Config{cc} eq 'clcc';   # CenterLine CC
>   
> + $opts{DEFINE} .= ' -DHAVE_NO_PRO_C' unless $::opt_ProC;
> + 
>   if ($::opt_8) {
>   $opts{DEFINE} .= ' -DNO_OCI8';
>   print "\n**\n";
> Common subdirectories: DBD-Oracle-1.15-orig/Oracle.ex and DBD-Oracle-1.15/Oracle.ex
> diff -cb DBD-Oracle-1.15-orig/dbdimp.c DBD-Oracle-1.15/dbdimp.c
> *** DBD-Oracle-1.15-orig/dbdimp.c Thu Jun 12 01:04:35 2003
> --- DBD-Oracle-1.15/dbdimp.c  Wed Sep 24 20:44:11 2003
> ***
> *** 17,23 
>   #include "Oracle.h"
>   
>   /* #include  for SQL_SINGLE_RCTX but causes clashes */
> ! #if !defined(SQL_SINGLE_RCTX) && defined(OCI_V8_SYNTAX)
>   #define SQL_SINGLE_RCTX (dvoid *)0 /* from precomp/public/sqlcpr.h */
>   #endif
>   
> --- 17,23 
>   #include "Oracle.h"
>   
>   /* #include  for SQL_SINGLE_RCTX but causes clashes */
> ! #if !defined(SQL_SINGLE_RCTX) && defined(OCI_V8_SYNTAX) && !defined(HAVE_NO_PRO_C)
>   #define SQL_SINGLE_RCTX (dvoid *)0 /* from precomp/public/sqlcpr.h */
>   #endif
>   
> ***
> *** 321,328 
>   init_mode |= OCI_THREADED;
>   #endif
>   
> - #ifdef SQL_SINGLE_RCTX
>   if(use_proc_connection) {
>   /* Use existing SQLLIB connection. Do not call OCIInitialize(), */
>   /* since presumably SQLLIB already did that.*/
>   status = SQLEnvGet(SQL_SINGLE_RCTX, &imp_drh->envhp);
> --- 321,328 
>   init_mode |= OCI_THREADED;
>   #endif
>   
>   if(use_proc_connection) {
> + #ifdef SQL_SINGLE_RCTX
>   /* Use existing SQLLIB connection. Do not call OCIInitialize(), */
>   /* since presumably SQLLIB already did that.*/
>   status = SQLEnvGet(SQL_SINGLE_RCTX, &imp_drh->envhp);
> ***
> *** 332,340 
> "SQLEnvGet. Failed to load ProC environment.");
>   return 0;
>   }
>   }
>   else {  /* Normal connect. */
> - #endif /* SQL_SINGLE_RCTX*/
>   
>   imp_drh->proc_handles = 0;
>   /* XXX recent oracle docs recommend using OCIEnvCreate() instead of */
> --- 332,340 
> "SQLEnvGet. Failed to load ProC environment.");
>   return 0;
>   }
> + #endif /* SQL_SINGLE_RCTX*/
>   }
>   else {  /* Normal connect. */
>   
>   imp_drh->proc_handles = 0;
>   /* XXX recent oracle docs recommend using OCIEnvCreate() instead of */
> ***
> *** 356,361 
> --- 356,362 
>   if (shared_dbh_ssv) {
>   if (!imp_dbh->envhp) {
>   if(use_proc_connection) {
> + #ifdef SQL_SINGLE_RCTX
>

Re: DBD::Oracle beta available for testing

2003-09-25 Thread Steffen Goeldner
Tim Bunce wrote:
> 
> On Wed, Sep 24, 2003 at 11:24:17AM +0200, Steffen Goeldner wrote:
> 
[...]
> 
> > dmake
> >  ...
> >  Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
> >  Error: Unresolved external '_SQLEnvGet' referenced from 
> > C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ
> >  Error: Unresolved external '_SQLSvcCtxGet' referenced from 
> > C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ
> 
> If you (or someone else) are familar enough with windows, could you
> check if those symbols are in some other oracle library that we're
> not linking with?
> 
> (Otherwise you could just remove the if(use_proc_connection){...} blocks
> so you can continue testing the rest of the code.)

O.k., to continue I added an option for Makefile.PL and some #ifdef's in
dbdimp.c. I'm not sure if this option (and its name) is a good idea. Thus
I try to find those symbols and the library ...


Steffendiff -cb DBD-Oracle-1.15-orig/Makefile.PL DBD-Oracle-1.15/Makefile.PL
*** DBD-Oracle-1.15-orig/Makefile.PLTue Sep 23 00:31:19 2003
--- DBD-Oracle-1.15/Makefile.PL Wed Sep 24 20:39:07 2003
***
*** 84,92 
  $::opt_f = 0; # include text of oracle's .mk file within generated Makefile
  $::opt_F = 0; # force - ignore errors
  $::opt_W = 0; # just write a basic default Makefile (won't build)
  
  Getopt::Long::config( qw( no_ignore_case ) );
! GetOptions(qw(b! v! d! g! p! l! c! 8! f! F! W! m=s n=s s=s S=s))
or die "Invalid arguments";
  
  $::opt_g &&= '-g';# convert to actual string
--- 84,93 
  $::opt_f = 0; # include text of oracle's .mk file within generated Makefile
  $::opt_F = 0; # force - ignore errors
  $::opt_W = 0; # just write a basic default Makefile (won't build)
+ $::opt_ProC = 1;  # use ProC
  
  Getopt::Long::config( qw( no_ignore_case ) );
! GetOptions(qw(b! v! d! g! p! l! c! 8! f! F! W! m=s n=s s=s S=s ProC!))
or die "Invalid arguments";
  
  $::opt_g &&= '-g';# convert to actual string
***
*** 581,586 
--- 582,589 
  
  $opts{DEFINE} .= ' -Xa' if $Config{cc} eq 'clcc'; # CenterLine CC
  
+ $opts{DEFINE} .= ' -DHAVE_NO_PRO_C' unless $::opt_ProC;
+ 
  if ($::opt_8) {
  $opts{DEFINE} .= ' -DNO_OCI8';
  print "\n**\n";
Common subdirectories: DBD-Oracle-1.15-orig/Oracle.ex and DBD-Oracle-1.15/Oracle.ex
diff -cb DBD-Oracle-1.15-orig/dbdimp.c DBD-Oracle-1.15/dbdimp.c
*** DBD-Oracle-1.15-orig/dbdimp.c   Thu Jun 12 01:04:35 2003
--- DBD-Oracle-1.15/dbdimp.cWed Sep 24 20:44:11 2003
***
*** 17,23 
  #include "Oracle.h"
  
  /* #include  for SQL_SINGLE_RCTX but causes clashes */
! #if !defined(SQL_SINGLE_RCTX) && defined(OCI_V8_SYNTAX)
  #define SQL_SINGLE_RCTX (dvoid *)0 /* from precomp/public/sqlcpr.h */
  #endif
  
--- 17,23 
  #include "Oracle.h"
  
  /* #include  for SQL_SINGLE_RCTX but causes clashes */
! #if !defined(SQL_SINGLE_RCTX) && defined(OCI_V8_SYNTAX) && !defined(HAVE_NO_PRO_C)
  #define SQL_SINGLE_RCTX (dvoid *)0 /* from precomp/public/sqlcpr.h */
  #endif
  
***
*** 321,328 
init_mode |= OCI_THREADED;
  #endif
  
- #ifdef SQL_SINGLE_RCTX
if(use_proc_connection) {
/* Use existing SQLLIB connection. Do not call OCIInitialize(), */
/* since presumably SQLLIB already did that.*/
status = SQLEnvGet(SQL_SINGLE_RCTX, &imp_drh->envhp);
--- 321,328 
init_mode |= OCI_THREADED;
  #endif
  
if(use_proc_connection) {
+ #ifdef SQL_SINGLE_RCTX
/* Use existing SQLLIB connection. Do not call OCIInitialize(), */
/* since presumably SQLLIB already did that.*/
status = SQLEnvGet(SQL_SINGLE_RCTX, &imp_drh->envhp);
***
*** 332,340 
  "SQLEnvGet. Failed to load ProC environment.");
return 0;
}
}
else {  /* Normal connect. */
- #endif /* SQL_SINGLE_RCTX*/
  
imp_drh->proc_handles = 0;
/* XXX recent oracle docs recommend using OCIEnvCreate() instead of */
--- 332,340 
  "SQLEnvGet. Failed to load ProC environment.");
return 0;
}
+ #endif /* SQL_SINGLE_RCTX*/
}
else {  /* Normal connect. */
  
imp_drh->proc_handles = 0;
/* XXX recent oracle docs recommend using OCIEnvCreate() instead of */
***
*** 356,361 
--- 356,362 
  if (shared_dbh_ssv) {
  if (!imp_dbh->envhp) {
if(use_proc_connection) {
+ #ifdef SQL_SINGLE_RCTX
status = SQLEnvGet(SQL_SINGLE_RCTX, &imp_dbh->envhp);
imp_dbh->proc_handles = 1;
if (status != SQL_SUCCESS) {
***
*** 363,368 
--- 364,370 
  "SQLEnvGet. Failed to load ProC environment.");
return 0;
   

Re: DBD::Oracle beta available for testing

2003-09-24 Thread Andy Hassall
Tim Bunce wrote:
> On Wed, Sep 24, 2003 at 10:27:02PM +0100, Andy Hassall wrote:
>>
>> Adding D:/oracle/ora92/precomp/lib/MSVC/oraSQL9.LIB to that link.exe
>> command makes it link OK - and tests pass (except the usual trailing
>> space one):
>
> Great. Thanks. Any chance you could send me a patch to Makefile.PL?

I'll try and put one together tommorrow - haven't got Oracle 8i on this
Windows machine at the moment - and I did the link manually by editing the
link command rather than the makefile.

Presumably it's going to need a similar version sort to the $OCILIB variable
as it'll be oraSQL8.lib on 8i?

FYI 1.15 on Linux / 9.2.0.4 compiles and links, all tests but ph_type pass.

-- 
Andy Hassall ([EMAIL PROTECTED]) icq(5747695) (http://www.andyh.co.uk)
Space: disk usage analysis tool (http://www.andyhsoftware.co.uk/space)



Re: DBD::Oracle beta available for testing

2003-09-24 Thread Tim Bunce
On Wed, Sep 24, 2003 at 10:27:02PM +0100, Andy Hassall wrote:
> 
> Adding D:/oracle/ora92/precomp/lib/MSVC/oraSQL9.LIB to that link.exe command
> makes it link OK - and tests pass (except the usual trailing space one):

Great. Thanks. Any chance you could send me a patch to Makefile.PL?

Tim.


Re: DBD::Oracle beta available for testing

2003-09-24 Thread Andy Hassall
Tim Bunce wrote:
> On Wed, Sep 24, 2003 at 08:08:51PM +0100, Andy Hassall wrote:
>> Tim Bunce wrote:
>>> On Wed, Sep 24, 2003 at 11:24:17AM +0200, Steffen Goeldner wrote:
 dmake
  ...
  Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
  Error: Unresolved external '_SQLEnvGet' referenced from
  C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ Error: Unresolved external
 '_SQLSvcCtxGet' referenced from C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ
>>>
>>> If you (or someone else) are familar enough with windows, could you
>>> check if those symbols are in some other oracle library that we're
>>> not linking with?
>>
>> Those symbols are part of SQLLIB:
>>
>>
http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a97269/pc_01int.htm#1174
>>
>> $ORACLE_HOME/precomp/lib/oraSQL9.LIB has those symbols (and the other
>> version in the msvc subdirectory):
>
> Okay. You're using Oracle 9.x but Steffen was using Oracle 8.1.7.
>
> I know the code that uses those symbols isn't properly #ifdef'd
> out on older versions of Oracle so I need to fix that.
>
> But I also need to know if DBD::Oracle builds okay on Windows
> for Oracle 9.x users. Does it? If not then I presume the problem
> is that we need to link to oraSQL9.LIB. Does that fix it?
>
> If DBD::Oracle does work ok on windows with Oracle 9.c then I'm
> just left with the problem of working out a) the oldest Oracle
> version that supports SQLEnvGet etc, and b) how to tell that
> version from the header files (sadly Oracle doesn't provide a
> simple way to do that).

It also fails building against 9.2.0.4:

[EMAIL PROTECTED] /cygdrive/d/Temp/DBD-Oracle-1.15
$ nmake

Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

cp Oracle.h blib\arch\auto\DBD\Oracle/Oracle.h
cp Oracle.pm blib\lib\DBD\Oracle.pm
cp oraperl.ph blib\lib/oraperl.ph
cp dbdimp.h blib\arch\auto\DBD\Oracle/dbdimp.h
cp ocitrace.h blib\arch\auto\DBD\Oracle/ocitrace.h
cp Oraperl.pm blib\lib/Oraperl.pm
cp lib/DBD/Oracle/GetInfo.pm blib\lib\DBD/Oracle/GetInfo.pm
cp mk.pm blib\arch\auto\DBD\Oracle/mk.pm
 rem
 rem
D:\Perl\bin\perl.exe -p -e "s/~DRIVER~/Oracle/g"
d:/Perl/site/lib/auto/DBI/Driver.xst > Oracle.xsi
D:\Perl\bin\perl.exe D:\Perl\lib\ExtUtils/xsubpp  -typemap
D:\Perl\lib\ExtUtils\typemap -typemap typemap  Oracle.xs > Oracle.xsc &&
D:\Perl\bin\perl.exe -MExtUtils::Command -e mv Oracle.xsc Oracle.c








cl -c  -ID:/oracle/ora92/oci/include -ID:/oracle/ora92/rdbms/demo -ID:/oracl
e/ora92/precomp/public -Id:/Perl/site/lib/auto/DBI  -nologo -Gf -W3 -MD -Zi 
-DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICI
T_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DN
DEBUG -O1-DVERSION=\"1.15\"  -DXS_VERSION=\"1.15\"
"-ID:\Perl\lib\CORE"  -DUTF8_SUPPORT Oracle.c
Oracle.c
Oracle.xs(99) : warning C4013: 'ora_st_cancel' undefined; assuming extern
returning int
Oracle.xs(273) : warning C4013: 'dbd_init_oci_drh' undefined; assuming
extern returning int








cl -c  -ID:/oracle/ora92/oci/include -ID:/oracle/ora92/rdbms/demo -ID:/oracl
e/ora92/precomp/public -Id:/Perl/site/lib/auto/DBI  -nologo -Gf -W3 -MD -Zi 
-DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICI
T_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DN
DEBUG -O1-DVERSION=\"1.15\"  -DXS_VERSION=\"1.15\"
"-ID:\Perl\lib\CORE"  -DUTF8_SUPPORT dbdimp.c
dbdimp.c
dbdimp.c(328) : warning C4013: 'SQLEnvGet' undefined; assuming extern
returning int
dbdimp.c(386) : warning C4013: 'SQLSvcCtxGet' undefined; assuming extern
returning int
dbdimp.c(1100) : warning C4018: '>' : signed/unsigned mismatch
dbdimp.c(1641) : warning C4018: '!=' : signed/unsigned mismatch








cl -c  -ID:/oracle/ora92/oci/include -ID:/oracle/ora92/rdbms/demo -ID:/oracl
e/ora92/precomp/public -Id:/Perl/site/lib/auto/DBI  -nologo -Gf -W3 -MD -Zi 
-DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICI
T_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DN
DEBUG -O1-DVERSION=\"1.15\"  -DXS_VERSION=\"1.15\"
"-ID:\Perl\lib\CORE"  -DUTF8_SUPPORT oci7.c
oci7.c








cl -c  -ID:/oracle/ora92/oci/include -ID:/oracle/ora92/rdbms/demo -ID:/oracl
e/ora92/precomp/public -Id:/Perl/site/lib/auto/DBI  -nologo -Gf -W3 -MD -Zi 
-DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICI
T_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DN
DEBUG -O1-DVERSION=\"1.15\"  -DXS_VERSION=\"1.15\"
"-ID:\Perl\lib\CORE"  -DUTF8_SUPPORT oci8.c
oci8.c
oci8.c(524) : warning C4018: '>' : signed/unsigned mismatch
oci8.c(658) : warning C4013: 'pp_rebind_ph_rset_in' undefined; assuming
extern returning int
oci8.c(738) : warning C4018: '>' : signed/unsigned mismatch
oci8.c(819) : warning C4018: '>' : signed/unsigned mismatch
oci8.c(889) : warning C4018: '>' : signed/unsigned mismatch
oci8.c(891) : warning C4

Re: DBD::Oracle beta available for testing

2003-09-24 Thread Tim Bunce
On Wed, Sep 24, 2003 at 08:08:51PM +0100, Andy Hassall wrote:
> Tim Bunce wrote:
> > On Wed, Sep 24, 2003 at 11:24:17AM +0200, Steffen Goeldner wrote:
> >> dmake
> >>  ...
> >>  Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
> >>  Error: Unresolved external '_SQLEnvGet' referenced from
> >>  C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ Error: Unresolved external
> >> '_SQLSvcCtxGet' referenced from C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ
> >
> > If you (or someone else) are familar enough with windows, could you
> > check if those symbols are in some other oracle library that we're
> > not linking with?
> 
> Those symbols are part of SQLLIB:
> 
> http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a97269/pc_01int.htm#1174
> 
> $ORACLE_HOME/precomp/lib/oraSQL9.LIB has those symbols (and the other
> version in the msvc subdirectory):

Okay. You're using Oracle 9.x but Steffen was using Oracle 8.1.7.

I know the code that uses those symbols isn't properly #ifdef'd
out on older versions of Oracle so I need to fix that.

But I also need to know if DBD::Oracle builds okay on Windows
for Oracle 9.x users. Does it? If not then I presume the problem
is that we need to link to oraSQL9.LIB. Does that fix it?

If DBD::Oracle does work ok on windows with Oracle 9.c then I'm
just left with the problem of working out a) the oldest Oracle
version that supports SQLEnvGet etc, and b) how to tell that
version from the header files (sadly Oracle doesn't provide a
simple way to do that).

Tim.


Re: DBD::Oracle beta available for testing

2003-09-24 Thread Andy Hassall
Tim Bunce wrote:
> On Wed, Sep 24, 2003 at 11:24:17AM +0200, Steffen Goeldner wrote:
>> dmake
>>  ...
>>  Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
>>  Error: Unresolved external '_SQLEnvGet' referenced from
>>  C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ Error: Unresolved external
>> '_SQLSvcCtxGet' referenced from C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ
>
> If you (or someone else) are familar enough with windows, could you
> check if those symbols are in some other oracle library that we're
> not linking with?

Those symbols are part of SQLLIB:

http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a97269/pc_01int.htm#1174

$ORACLE_HOME/precomp/lib/oraSQL9.LIB has those symbols (and the other
version in the msvc subdirectory):

[EMAIL PROTECTED] /cygdrive/d/Oracle/ora92/precomp/lib
$ nm oraSQL9.LIB  | grep SQLSvcCtxGet
 T _SQLSvcCtxGet
 I __imp__SQLSvcCtxGet

[EMAIL PROTECTED] /cygdrive/d/Oracle/ora92/precomp/lib
$ nm oraSQL9.LIB  | grep SQLEnvGet
 T _SQLEnvGet
 I __imp__SQLEnvGet

[EMAIL PROTECTED] /cygdrive/d/Oracle/ora92/precomp/lib/msvc
$ nm oraSQL9.LIB  | grep SQLEnvGet
 T _SQLEnvGet
 I __imp__SQLEnvGet

[EMAIL PROTECTED] /cygdrive/d/Oracle/ora92/precomp/lib/msvc
$ nm oraSQL9.LIB  | grep SQLSvcCtxGet
 T _SQLSvcCtxGet
 I __imp__SQLSvcCtxGet


-- 
Andy Hassall ([EMAIL PROTECTED]) icq(5747695) (http://www.andyh.co.uk)
Space: disk usage analysis tool (http://www.andyhsoftware.co.uk/space)



RE: DBD::Oracle beta available for testing

2003-09-24 Thread Jeff Urlwin
> 
> 
> On Wed, Sep 24, 2003 at 11:24:17AM +0200, Steffen Goeldner wrote:
> > Tim Bunce wrote:
> > > 
> > > Is it an alpha or a beta? Who knows? Probably more alpha 
> than beta 
> > > but it it what it is and you're welcome to hit on it.
> > 
> > Perl 5.6.1, MSWin32, Borland 5.5, Oracle 8.1.7
> > 
> > Makefile.PL
> > 
> >   Use of uninitialized value in numeric ge (>=) at 
> > C:\temp\DBD-Oracle-1.15\Makefile.PL line 678.
> 
> Got it.
> 
> > dmake
> >  ...
> >  Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
> >  Error: Unresolved external '_SQLEnvGet' referenced from 
> > C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ
> >  Error: Unresolved external '_SQLSvcCtxGet' referenced from 
> C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ
> 
> If you (or someone else) are familar enough with windows, 
> could you check if those symbols are in some other oracle 
> library that we're not linking with?

Tim -- I don't see an obvious lib to link with that contains any SQLxxx
functions (at least not on my Windows 9.2 Personal Edition).


Regards,

Jeff




Re: DBD::Oracle beta available for testing

2003-09-24 Thread Tim Bunce
On Wed, Sep 24, 2003 at 11:24:17AM +0200, Steffen Goeldner wrote:
> Tim Bunce wrote:
> > 
> > Is it an alpha or a beta? Who knows? Probably more alpha than beta
> > but it it what it is and you're welcome to hit on it.
> 
> Perl 5.6.1, MSWin32, Borland 5.5, Oracle 8.1.7
> 
> Makefile.PL
> 
>   Use of uninitialized value in numeric ge (>=) at 
> C:\temp\DBD-Oracle-1.15\Makefile.PL line 678.

Got it.

> dmake
>  ...
>  Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
>  Error: Unresolved external '_SQLEnvGet' referenced from 
> C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ
>  Error: Unresolved external '_SQLSvcCtxGet' referenced from 
> C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ

If you (or someone else) are familar enough with windows, could you
check if those symbols are in some other oracle library that we're
not linking with?

(Otherwise you could just remove the if(use_proc_connection){...} blocks
so you can continue testing the rest of the code.)

Thanks.

Tim.


Re: DBD::Oracle beta available for testing

2003-09-24 Thread Steffen Goeldner
Tim Bunce wrote:
> 
> Is it an alpha or a beta? Who knows? Probably more alpha than beta
> but it it what it is and you're welcome to hit on it.

Perl 5.6.1, MSWin32, Borland 5.5, Oracle 8.1.7

Makefile.PL

  Use of uninitialized value in numeric ge (>=) at C:\temp\DBD-Oracle-1.15\Makefile.PL 
line 678.

dmake

 ...
 Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
 Error: Unresolved external '_SQLEnvGet' referenced from 
C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ
 Error: Unresolved external '_SQLSvcCtxGet' referenced from 
C:\TEMP\DBD-ORACLE-1.15\DBDIMP.OBJ


Steffen


DBD::Oracle beta available for testing

2003-09-22 Thread Tim Bunce
Is it an alpha or a beta? Who knows? Probably more alpha than beta
but it it what it is and you're welcome to hit on it.

  http://homepage.eircom.net/~timbunce/DBD-Oracle-1.15-20030922beta.tar.gz

=head1 Changes in DBD-Oracle 1.14_90   22nd September 2003

  (WARNING: beta release, awaiting 64bit lib and hpux fixups, calls itself 1.15)

  DBD::Oracle now requires DBI version 1.28 (June 2002) or later.

  Fixed Makefile.PL for HPUX thanks to H.Merijn Brand & Sweth Chandramouli.
  Fixed Makefile.PL error typo thanks to Martijn Koster.
  Fixed to build okay for Oracle 8.0.x and for older C compilers.
  Fixed minor omission in t/ph_test.t thanks to Tom Malaher.
  Fixed for extproc (http://search.cpan.org/author/JHORWITZ/extproc_perl/)
  Fixed Oraperl handling of ora_errno and ora_errstr thanks to Martin Busik.

  Added direct access to LOB Locators and major LOB Locator functions
such as $sth->ora_lob_read(...), $sth->ora_lob_write(...) etc.
This work was sponsored by Geospiza Inc.
  Added LOB Locator example docs thanks to Mark Dilger at Geospiza.
  Added warning for bad DSN string format thanks to Michael A Chase.
  Added /*+RULE*/ hint to metadata method SQL thanks to Andy Hassall.
  Added README.linux thanks to William Fishburne, Stephen Clouse and Brent LaVelle.
  Added README.aix thanks to KC, Mike Paladino and Rafael Caceres.
  Added connect example using OS authentication thanks to Bob Thomson.
  Added prepare("...", { ora_placeholders => 0 }) to disable placeholders.
  Added docs for returning a recordset (table/array) using Oracle >=9.0.1
via "FUNCTION foo RETURN type PIPELINED" thanks to Steve Baldwin.
  Added docs on ora_check_sql=>0 in prepare() to avoid server-side parses.
  Added support for sharing database connections with ProC/SQLLIB code
via ora_use_proc_connection attribute, thanks to Kristian Nielsen.
  Added (restored) the error "possibly near <*> indicator" marker for
syntax errors thanks to Jason Hitt and Andy Hassall.
  Added $dbh->{ora_parse_error_offset} attribute thanks to Andy Hassall.
  Updated README.macosx thanks to Danial Pearce and William Goedicke.

=cut

Enjoy!

Tim.