- we decide to either not support ZTS connection pooling (kind of
- pointless as PHP isn't stable in ZTS mode) or fix the 100% reproducable
- crash bug on oci_connect() under Windows most probably due to this
- problem.
used to return "" and not bool(false). It's not worth keeping it because
STR_FREE() and zval_dtor() always have to check for it and it slows down
the general case. In addition, it seems that empty_string has been abused
quite a lot, and was used not only for setting zval's but generally in
PHP code instead of "", which wasn't the intention. Last but not least,
nuking empty_string should improve stability as I doubt every place
correctly checked if they are not mistakenly erealloc()'ing it or
calling efree() on it.
NOTE: Some code is probably broken. Each extension maintainer should
check and see that my changes are OK. Also, I haven't had time to touch
PECL yet. Will try and do it tomorrow.
Adding a package.xml to a bundled extension does not only
ease the transition to PECL whereever suitable but also
allows to build and install an extension as "shared" using
the PEAR installer without having to deal with phpize and
friends by hand
*add constant's alias, coz others do have aliases
*change protos (oops =))
*add notices to collection functions
*change coll_element_get & coll_assign to inform user, that this type of element is not supported yet.
change almost all func names to match naming conventions
keep ocifetchinto & *buffering for awhile - they will be rewritten soon
old names are kept as aliases
rename constant and add library check to config.m4
add info lines to see if Collection & Temp Lob support enabled or not
add OCI_THREADED to use thread safe OCI mode with ZTS (should fix bug #26558)
@- added ZTS connection pooling support to the oci extension
@ connections will now be pooled per process and not
@ per thread anymore. the number of persistent and active
@ connections is now also shown in the phpinfo() output (harald)
ocitelllob(); [ OCI_Lob->tell(); ] - ftell(); analogue for Lobs
ociwritelob(); [ OCI_Lob->write(); ] - fwrite(); analogue for Lobs
ocitruncatelob(); [ OCI_Lob->truncate(); ] - ftruncate(); analogue for Lobs
ocieraselob(); [ OCI_Lob->erase(); ] - erases specified part of a Lob (for BLOBs it means zero-filling, for CLOBs - space-filling)
ociflushlob(); [ OCI_Lob->flush(); ] - flushes Lob buffer (if buffering was enabled before)
ocisetbufferinglob(); [ OCI_Lob->setBuffering(); ] - turns on/off buffering for the current Lob
ocigetbufferinglob(); [ OCI_Lob->getBuffering(); ] - gets buffering' current state
ocirewindlob(); [ OCI_Lob->rewind(); ] - rewind(); analogue for Lobs
ocireadlob(); [ OCI_Lob->read(); ] - fread(); analogue for Lobs
ocieoflob(); [ OCI_Lob->eof(); ] - feof(); analogue for Lobs
ociseeklob(); [ OCI_Lob->seek(); ] - fseek(); analogue for Lobs
ocilobgetlength(); [ OCI_Lob->getLength(); ] - filesize(); analogue for Lobs
ociappendlob(); - appends data from a Lob to another Lob
ocicopylob(); - copies data from a Lob to another Lob
ociisequallob(); - compares 2 Lobs and checks if they are equal
TODO cleanup
and other minor fixes
Nuke a sprintf (slooow)
And embed the charset as part of the hashed details (persistent conn key),
because the function otherwise happily returns incompatible connections.
(e.g. US7ASCII vs. UTF8; the client-side charset is not alterable once a
connection has been established.)