RE: [PHP-DEV] php 4.3.0 ext/oci8 -- OCI_SHARED patch
| From: | Levi Dixon | Date: | Tue, 07 Jan 2003 16:46:16 +0000 |
| Subject: | RE: [PHP-DEV] php 4.3.0 ext/oci8 -- OCI_SHARED patch | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-93224@lists.php.net to get a copy of this message | ||
> > > I've modified the following files to allow for use of
> OCI_SHARED in ext/oci8
> > > module if OCI8_VERSION >= 8.1, which will provide memory
> savings by sharing
> > > connection and statement data (refer to
> > >
> CKb !qÕ
> ”Ù•http://www.csee.umbc.edu/help/oracle8/server.815/a67846/basics.htm; search
> > > for "Shared Data Mode") between connections and statments
> respectively. I
> > > only have access to ext/oci8, so I can't check this in:
>
> Haven't really played with it, but the possiblity of some thread issues
> come into my mind. How have you tested it?
>
I have tested it and it works for me. As far as thread safety, all of OCI
could suffer from thread safety problems, not just this feature. If we want
ext/oci8 to be thread safe, we should really pass the OCI_THREADED flag into
OCIInitialize(). At first glance it seems that thread safety should be
accounted for #ifdef ZTS. Is this correct? I can add it if required.
> >
> > there should be no nned to change anything outside ext/oci8/
> > to make this work. configure is auto-generated.
> >
> > just go ahead and commit the stuff to ext/oci8
>
> It should only be within the ext/oci8/oci8.c thing, I presume. We are
> talking about a flag for OCI(?)Logon function, right?
>
It's a flag to the OCIInitialize() that determines if statement data will be
shared. No other code changes are necessary, as OCI will manage the shared
data transparently.
>
> Also, since this is a ">= 8.1" thingie, you'd need to see whether it
> compiles and doesnt crash on lower versions of OCI (is OCI_SHARED
> defined in all OCIs? You need to control it for BC).
>
8.0 doens't have OCI_SHARED defined, so I modified config.m4 to define
HAVE_OCI8_SHARED_MODE for OCI8_VERSION >= 8.1 and verified that it compiles
correctly on both (8.0.5 vs 8.1.7).