Ah, I know what that was. It's got to the point where it's
easier for me to do it than explain it so I'll look after it for you.
Just make a note to test in the next release.
Thanks for your help!
Tim.
> Tue, Jan 06, 2004 at 05:26:34PM -0500, Eric Lenio wrote:
> Hi Tim,
>
> I added your code (verbatim) immediately before the returned $dbh at the end of
> DBD::Oracle::connect, but got results like this for all the test scripts:
>
> t/select.....Can't set DBI::db=HASH(0x1d266c)->{USER}: unrecognised attribute
> or invalid value at
> /opt/perl/.cpan/build/DBD-Oracle-1.14/blib/lib/DBD/Oracle.pm line 284.
> Issuing rollback() for database handle being DESTROY'd without explicit
> disconnect(). t/select.....dubious
>
> Test returned status 2 (wstat 512, 0x200)
>
> Thoughts?
>
> --Eric.
>
> On Mon, Jan 05, 2004 at 10:31:21PM +0000, Tim Bunce wrote:
> >
> > Having thought about this some more I think the right fix is for
> > DBD::Oracle's connect() method to set the Username, USER, and
> > CURRENT_USER attributes to the result of that query.
> >
> > So just before the end of the connect sub in Oracle.pm add something
> > like this:
> >
> > unless (length $user_only) {
> > $user_only = $dbh->selectrow_array(qq{
> > select sys_context('userenv','current_schema') from dual
> > });
> > $attr->{Username} = $user_only if $attr;
> > $dbh->{Username} = $user_only;
> > # these are temporary for backwards compatibility
> > $dbh->{USER} = $user_only;
> > $dbh->{CURRENT_USER} = $user_only;
> > }
> >
> > and then the test script need not be changed.
> >
> > (There ought to be a more efficient way of asking OCI for the name
> > but I don't know what it is off-hand.)
> >
> > Can you try that for me, Eric, and send me a patch?
> > Thanks.
> >
> > Tim.