summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThies C. Arntzen <thies@php.net>1999-11-12 14:31:01 +0000
committerThies C. Arntzen <thies@php.net>1999-11-12 14:31:01 +0000
commite61fea3029b4b02d3c00ca9c7cec020110708e98 (patch)
treed430a1ea8f3fd2f7fb7bf666f2430a27efe4b183
parentd8d8b30972e89d2851c9a8064d6551254c73318a (diff)
downloadphp-git-e61fea3029b4b02d3c00ca9c7cec020110708e98.tar.gz
@- Fixed selecting nested-tables in OCI8. (Thies)
fixed mested-tables again (broke it when resourcified the driver)
-rw-r--r--ext/oci8/oci8.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/ext/oci8/oci8.c b/ext/oci8/oci8.c
index c96ae51f65..cedeb064e5 100644
--- a/ext/oci8/oci8.c
+++ b/ext/oci8/oci8.c
@@ -816,8 +816,9 @@ oci_make_pval(pval *value,oci_statement *statement,oci_out_column *column, char
}
if (column->is_cursor) { /* REFCURSOR -> simply return the statement id */
- value->type = IS_LONG;
+ value->type = IS_RESOURCE;
value->value.lval = column->stmtid;
+ zend_list_addref(column->stmtid);
} else if (column->is_descr) {
if ((column->data_type != SQLT_RDD) && (mode & OCI_RETURN_LOBS)) {
/* OCI_RETURN_LOBS means that we want the content of the LOB back instead of the locator */
@@ -1996,10 +1997,18 @@ _oci_close_server(oci_server *server)
if (server->open) {
if (server->pServer && OCI(pError)) {
+#if APACHE
+ void (*handler) (int);
+ handler = signal(SIGCHLD, SIG_DFL);
+#endif
OCI(error) =
OCIServerDetach(server->pServer,
OCI(pError),
OCI_DEFAULT);
+
+#if APACHE
+ signal(SIGCHLD,handler);
+#endif
if (OCI(error)) {
oci_error(OCI(pError), "oci_close_server OCIServerDetach", OCI(error));