Commit Graph

366 Commits

Author SHA1 Message Date
Antony Dovgal
1789473eba minor CS/WS fixes 2006-08-15 13:08:18 +00:00
Antony Dovgal
43aab65e86 error message might be NULL 2006-08-15 12:27:04 +00:00
Antony Dovgal
7f2e2b105a OCIBreak() is not supported on Windows 2006-08-15 12:19:39 +00:00
Antony Dovgal
4e792c3ead improve connection character set detection:
* output a warning if invalid character set was passed to the function
* use NLS_LANG by default
2006-08-10 12:15:24 +00:00
Antony Dovgal
689f3a92b5 fix #8112 (Persistent connections misbehave when Apache process times out) 2006-08-09 10:16:20 +00:00
Antony Dovgal
3e0a13fa9f long -> int 2006-08-06 14:09:46 +00:00
Antony Dovgal
688975a519 fix PECL bug #7827
add small optimization - no need to do anything if hash lookup failed, just move along
2006-08-05 20:56:12 +00:00
Antony Dovgal
0c2449923c improve error message on Win32 2006-08-01 12:08:10 +00:00
Antony Dovgal
06aa83600e fix #37581 (oci_bind_array_by_name clobbers input array when using SQLT_AFC, AVC) 2006-07-31 10:28:46 +00:00
Antony Dovgal
b14af30ed0 improve connection timeout check (implements FR #38210) 2006-07-26 07:00:42 +00:00
Antony Dovgal
310903208a fix #37931 (possible crash after database restart when using persistent connections) 2006-06-28 15:03:16 +00:00
Antony Dovgal
d9de0eac85 fix typo and bug #37886 2006-06-23 08:25:58 +00:00
Antony Dovgal
9af1ea3883 fix compile failure with <s>ancient</s> older PHP versions caused by new globals management code 2006-06-21 10:51:55 +00:00
Antony Dovgal
3210771d31 display oci8 version in phpinfo() 2006-06-19 18:21:19 +00:00
Dmitry Stogov
943960c324 Added automatic module globals management 2006-06-13 13:12:20 +00:00
Antony Dovgal
0ab0cf61db fix OCIPasswordChange() parameters (patch by pholdaway at technocom-wireless dot com)
prevent username. password and new password from being empty
2006-06-05 07:34:00 +00:00
Antony Dovgal
c051139ad5 fix #37531 (oci8 persistent connection corruption) 2006-05-29 10:59:15 +00:00
Antony Dovgal
10c2fc97df fix #37487 (oci_fetch_array() array-type should always default to OCI_BOTH) 2006-05-18 13:20:00 +00:00
Antony Dovgal
6fc10a0acd fix #37392 (Unnecessary call to OCITransRollback() at the end of request) 2006-05-10 10:06:57 +00:00
Antony Dovgal
000cf5ca7f MF51: fix #37059 (oci_bind_by_name() doesn't support RAW and LONG RAW fields)
add tests
2006-04-12 19:22:12 +00:00
Antony Dovgal
a892880c1c MF51: correct fix for bug #37055 2006-04-12 17:59:57 +00:00
Antony Dovgal
33a2dc7495 MF51: fix #37055 (incorrect reference counting for persistent OCI8 connections) 2006-04-12 13:38:05 +00:00
Antony Dovgal
49b16f7254 MF51: fix #36820 (Privileged connection with an Oracle password file fails) 2006-03-22 09:46:13 +00:00
Antony Dovgal
af792fbcc2 add workaround for Oracle server crash, use OCIServerVersion() instead of OCIPing()
fix #36250 (PHP Causes ORA-07445 Core dump in Oracle server 9.2.x)
2006-03-07 07:45:59 +00:00
Antony Dovgal
9e03537d90 reorganize resource destruction.
- use one helper function for all resource types
- destroy all resources when connections are still available
2006-01-18 10:11:12 +00:00
Antony Dovgal
38beafe629 fix #36055 (possible OCI8 crash in multithreaded environment) 2006-01-17 23:44:11 +00:00
Antony Dovgal
c9d6bb5b9f silence compile warning in non-ZTS mode 2006-01-10 08:32:49 +00:00
Antony Dovgal
9bd3c360ba destroy regular connections in RSHUTDOWN if ZTS is used
this fixes problem with Oracle9 (not Oracle10) and Apache2/worker - connections are not being closed correctly
see #35205 and similar issues
2006-01-10 08:29:19 +00:00
Antony Dovgal
1e3efec941 delete descriptor from the hash and avoid crashes on commit/rollback 2006-01-05 13:40:10 +00:00
foobar
251c5173fd bump year and license version 2006-01-01 13:10:10 +00:00
foobar
34ad5ab731 - list_entry -> zend_rsrc_list_entry 2005-12-05 23:31:09 +00:00
Antony Dovgal
9fdd2b6940 show OIC version in phpinfo(); if possible
fix build with older versions: SQLT_BDOUBLE & SQLT_BFLOAT first appeared in Oracle 10
2005-11-26 17:34:35 +00:00
Antony Dovgal
d31cd8bf85 change handles destruction order (based on the patch by Chris Jones) and fix typo 2005-11-25 10:16:55 +00:00
Antony Dovgal
eb40be874a fix #35322 (oci_connect() after oci_close() gives unknown resource) 2005-11-24 15:15:28 +00:00
Antony Dovgal
066fb72fdd Initial implementation of oci_bind_array_by_name()
At the moment we support only these types:
SQLT_NUM, SQLT_INT, SQLT_LNG - integer/long
SQLT_FLT - float
SQLT_AFC, SQLT_CHR, SQLT_VCS, SQLT_AVC, SQLT_STR, SQLT_LVC - char/varchar
SQLT_ODT - date

More supported types may follow.
2005-11-22 16:30:36 +00:00
Antony Dovgal
9846ceeab6 fix PECL bug #5986 (connections use case sensitive hashed details) 2005-11-19 21:36:06 +00:00
Antony Dovgal
00ee8a036c typo 2005-10-18 13:39:51 +00:00
Antony Dovgal
f15f20ffa2 fix #33383 (crash when retrieving empty BLOBs) 2005-10-10 10:16:58 +00:00
Antony Dovgal
de50d0275c fix 64bit issues caused by wrong "long" usage 2005-09-25 21:44:32 +00:00
Antony Dovgal
5ec597013e fix arguments-by-ref with 5.x (problem appeared after the last 4.x compat patch)
make sure username_len is always initialized
2005-09-25 18:24:52 +00:00
Antony Dovgal
0b57661b2d .. and the fix 2005-09-22 16:42:21 +00:00
Antony Dovgal
6a956b3d43 fix Win32 builds for PHP_4_4
(patch by Edin)
2005-09-22 16:25:59 +00:00
Antony Dovgal
034e794fe9 use "connections" instead of "links" everywhere to avoid possible confusion 2005-09-08 13:16:24 +00:00
Antony Dovgal
4a2b8cb6d0 fix credits 2005-09-06 21:42:26 +00:00
Edin Kadribasic
e18b812ba6 Remove utf-8 chars 2005-09-06 21:30:28 +00:00
Antony Dovgal
3df94e1112 Updated OCI8 driver
This updated fixes (this list is not complete):
-------------------
#33915 - crash in _oci_close_session
#26393 - Segfault during request shutdown in _oci_close_session() (oci8.c:2443)

#32741 - hang on ociexecute() with collections (only with 10g, works with 9i)
#32325 - can't retrieve collection using OCI8
#33583 - Apache1.3.33 Segmentation fault with php5 & OCI_New_Collection

#32361 - connection oci_connect stay persist after process the php
#29013 - multiple logins cause handles become invalid
#28944 - OCITypeByName: OCI-21522 with two connections

Fixed by connection handling rewrite.

#32140 - NVARCHAR columns are truncated
#31042 - oci_fetch_* sets field value to false
#27156 - OCIFetchInto returns false as column value when column contains >1 umlaut

Fixed by multiplying buffer size by 3.

#33866 - OCIlogon do not returns conn resource for account with expired paswd
#33365 - logon fails when password expires

Fixed by adding new oci_password_change() call syntax.

#33159 - DB-connect via webserver fails after DB-restart ORA-24327
#30808 - oci8 cannot connect after restarting DB
#30127 - lost oracle connection. need restart apache.
#29902 - oci8 doesn't disconnect sessions, overloads oracle server
#29779 - (the same issue with the Oracle server going offline)
#26829 - Killed Oracle Sessions openned with OCIPLogon()

Fixed by adding oci8.ping_interval option.

#32988ext/oci8: OCI doesn't support DB external authentication

Fixed by adding support of external credentials (turned off by default).

Added new INI options:
----------------------
oci8.ping_interval
oci8.max_persistent
oci8.persistent_timeout
oci8.privileged_connect
oci8.statement_cache_size
oci8.default_prefetch
oci8.old_oci_close_semantics

See the updated docs for the detailed descriptions.

Major changes:
--------------
- connection handling algorithm rewritten. That should add stability and fix all non-reproducible crashes etc;
- extension refactored and divided into several files to improve readability and to make it easier to maintain;
- added support of statement caching;
- added support of privileged connections using external credentials;
- added new INI options to manage persistent connections;
- fixed oci_close() to close connections correctly.
2005-09-06 19:31:59 +00:00
foobar
03cec74a0d Nuked EOLs from error messages 2005-08-18 13:34:04 +00:00
foobar
23e671a51e - Bumber up year 2005-08-03 14:08:58 +00:00
Antony Dovgal
2a128504a2 destroy session after destroying error handle
SQLT_CHR is allowed too
2005-06-13 09:30:49 +00:00
Antony Dovgal
5ca4b8383e handle unsupported datatype (OCIBindByName segfaults somewhere in OCI lib when
unknown type is provided)
2005-04-28 14:10:42 +00:00
Antony Dovgal
d0427feee4 fix bug #31623 (OCILogin does not support password grace period) 2005-01-20 18:39:48 +00:00
Andi Gutmans
7c3eaef39d - Don't reuse Oracle connections in multi-threaded environments until
- 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.
2004-11-22 21:44:42 +00:00
Andi Gutmans
737568997b *** empty log message *** 2004-11-21 06:17:32 +00:00
Antony Dovgal
07f84de680 commit fixes by <mikael dot suvi at trigger dot ee>
(segfaults under heavy load)
2004-10-23 09:32:44 +00:00
Antony Dovgal
3a5822585e fix possible segfault 2004-10-10 15:04:21 +00:00
Antony Dovgal
b0b4b6eff2 prevent deadlocks when re-using previously established persistent connection 2004-10-10 10:54:26 +00:00
Antony Dovgal
454b9659c5 fix bug #29652 (number of FD to ocius.msb is growing)
many thanks to Sergei V. Rozinov <S dot Rozinov at sibron dot ru> for testing
2004-09-28 16:59:10 +00:00
Antony Dovgal
cbd5396cbb fix build 2004-07-19 07:35:41 +00:00
Andi Gutmans
56f8195fe5 - Nuke empty_string. It is a reminanent from the time where RETURN_FALSE()
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.
2004-07-19 07:19:50 +00:00
Antony Dovgal
f6eb507b2c fix #29012 (Potential race during first connection) thanks to cjbj at hotmail dot com 2004-07-15 11:00:14 +00:00
Antony Dovgal
08486a0ea3 fix #28978 (multiple OCIBindByName on the same placeholder eats memory) 2004-07-12 07:40:05 +00:00
Antony Dovgal
af96ad84b5 hmm. this comma is supposed to be a semicolon. 2004-04-26 14:49:41 +00:00
Ard Biesheuvel
81f05c18f5 Wordsize fixes 2004-02-25 20:16:27 +00:00
Antony Dovgal
7837416c2b this should really fix compile failure with gcc 2.96 2004-02-20 12:47:56 +00:00
foobar
26332c0436 Fix compile failure 2004-02-20 03:16:51 +00:00
foobar
6e15162724 Only use Z_TYPE* with zvals.. 2004-02-20 03:05:42 +00:00
Stig Bakken
4127b304ea * email address update 2004-02-12 19:05:41 +00:00
Stig Bakken
f8125ed92d * update my email address 2004-02-12 19:03:03 +00:00
Antony Dovgal
d3cd05c95a fix bug #27149
(offset should start with 1)
2004-02-05 08:29:16 +00:00
Antony Dovgal
f1c40a4a22 -remove obsolete types
-changes in config.m4 to make oci8 to compile with Oracle 10g
(thanks to cjbj at hotmail dot com for reporting both problems)
2004-02-03 14:21:09 +00:00
Antony Dovgal
c7699856fc add missing alias for ocifreecursor() 2004-02-02 08:26:15 +00:00
Antony Dovgal
fec01159b1 fix yet another possible segfault 2004-02-02 08:09:53 +00:00
Antony Dovgal
fab593566e two fixes:
-oci_lob_load shouldn't reset LOB's length to zero
-Oracle feels bad, but reports no error, when trying to erase LOB with offset bigger than LOB
2004-01-28 07:15:55 +00:00
Antony Dovgal
6fe26e966d change to use different allocator (Sascha, thanks =) ) 2004-01-26 15:42:24 +00:00
Antony Dovgal
83a1eaf75a fix this annoying notice about limited range 2004-01-26 15:25:32 +00:00
Antony Dovgal
f64928bdce improve debug messages 2004-01-26 15:21:52 +00:00
Antony Dovgal
9fcb1dd2c9 oops =(
forgot these brackets..
2004-01-26 14:02:08 +00:00
Antony Dovgal
15f22a5796 fix oci_field_type_raw's proto
oci_collection_element_get should return FALSE only if there is no such element and NULL, if it's null
2004-01-26 13:59:42 +00:00
Antony Dovgal
dbb29baefe add missing protos
and some minor changes
2004-01-22 08:39:50 +00:00
Antony Dovgal
261726099c MFB
oci_lob_save() should be removed indeed, but we're already in feature freeze =(
2004-01-22 08:05:14 +00:00
Antony Dovgal
02ded9766a *change constant name, coz it doesn't comply with others
*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.
2004-01-21 16:18:58 +00:00
Antony Dovgal
c375c68073 fix potential segfault in oci_lob_write()
change oci_lob_trim() - truncate length should be 0 by default.
2004-01-21 12:30:05 +00:00
Antony Dovgal
649b844c3c Fix bug #26892, ORA-21301 in ocinewcollection() call.
pEnv should be initialized in object mode too.
2004-01-15 15:06:57 +00:00
foobar
ad11617f29 Fix typo 2004-01-15 06:30:23 +00:00
Andi Gutmans
dbeb4158d2 - A belated happy holidays and PHP 5 2004-01-08 08:18:22 +00:00
foobar
0eead3672c ws + cs 2004-01-02 15:32:09 +00:00
foobar
2cf5871377 another ZTS fix 2004-01-02 14:09:49 +00:00
foobar
3c73c91e7a fix ZTS build 2004-01-02 02:21:44 +00:00
Antony Dovgal
12c7ae9f55 workaround for possible ORA-22280 warning if buffers were not flushed 2003-12-25 13:54:50 +00:00
Antony Dovgal
f95db00d6c separate oci_lob_flush() to use it in oci_lob_append() etc. in the future 2003-12-24 15:01:54 +00:00
Antony Dovgal
107221252c add oci_fetch_assoc(), oci_fetch_object(), oci_fetch_array() & oci_fetch_row()
change ocifetchinto() to use php_oci_fetch_row()
2003-12-23 16:02:53 +00:00
Antony Dovgal
7aac9069d4 huge patch
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
2003-12-23 15:45:36 +00:00
Antony Dovgal
cf45beedb5 do not delete connection ids, we need them 2003-12-23 09:21:14 +00:00
Antony Dovgal
c002553d7c fix bug #26133 (thanks to Harald)
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)
2003-12-16 15:58:10 +00:00
Antony Dovgal
c0e519e6ea fix warning, concerned to second _oci_close_server() call 2003-12-16 15:48:20 +00:00
Harald Radi
e0a0e9d831 fix non-zts build errors 2003-12-16 11:15:55 +00:00
Harald Radi
85b4b63a47 @- fixed #20006, #22674 and #24531 (harald)
@- 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)
2003-12-16 10:29:11 +00:00
Antony Dovgal
18096396d2 add new functions:
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
2003-12-15 13:53:01 +00:00
Sascha Schumann
db56268231 WS 2003-11-06 14:31:33 +00:00
Sascha Schumann
5a32c21f46 Fix a format string
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.)
2003-11-06 14:29:09 +00:00