tony2001                Tue Dec 16 10:58:11 2003 EDT

  Modified files:              
    /php-src/ext/oci8   config.m4 oci8.c 
  Log:
  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)
  
  
Index: php-src/ext/oci8/config.m4
diff -u php-src/ext/oci8/config.m4:1.47 php-src/ext/oci8/config.m4:1.48
--- php-src/ext/oci8/config.m4:1.47     Fri Oct  3 01:24:25 2003
+++ php-src/ext/oci8/config.m4  Tue Dec 16 10:58:10 2003
@@ -1,5 +1,5 @@
 dnl
-dnl $Id: config.m4,v 1.47 2003/10/03 05:24:25 sniper Exp $
+dnl $Id: config.m4,v 1.48 2003/12/16 15:58:10 tony2001 Exp $
 dnl
 
 AC_DEFUN(PHP_OCI_IF_DEFINED,[
@@ -138,10 +138,22 @@
     -L$OCI8_DIR/lib $OCI8_SHARED_LIBADD
   ])
 
+  dnl
+  dnl Check if we have collections
+  dnl
+  PHP_CHECK_LIBRARY(clntsh, OCICollAssign,
+  [
+    AC_DEFINE(HAVE_OCI8_COLLECTIONS,1,[ ])
+  ], [], [
+    -L$OCI8_DIR/lib $OCI8_SHARED_LIBADD
+  ])
+
+
   PHP_NEW_EXTENSION(oci8, oci8.c, $ext_shared)
   AC_DEFINE(HAVE_OCI8,1,[ ])
 
   PHP_SUBST_OLD(OCI8_SHARED_LIBADD)
   PHP_SUBST_OLD(OCI8_DIR)
   PHP_SUBST_OLD(OCI8_VERSION)
+  
 fi
Index: php-src/ext/oci8/oci8.c
diff -u php-src/ext/oci8/oci8.c:1.222 php-src/ext/oci8/oci8.c:1.223
--- php-src/ext/oci8/oci8.c:1.222       Tue Dec 16 10:48:20 2003
+++ php-src/ext/oci8/oci8.c     Tue Dec 16 10:58:10 2003
@@ -22,7 +22,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: oci8.c,v 1.222 2003/12/16 15:48:20 tony2001 Exp $ */
+/* $Id: oci8.c,v 1.223 2003/12/16 15:58:10 tony2001 Exp $ */
 
 /* TODO list:
  *
@@ -66,9 +66,6 @@
 #include "ext/standard/info.h"
 #include "php_ini.h"
 
-/* #define HAVE_OCI8_TEMP_LOB 1 */
-#define WITH_COLLECTIONS 1
-
 #if HAVE_OCI8
 
 #include "php_oci8.h"
@@ -84,13 +81,13 @@
 static int le_conn;
 static int le_stmt;
 static int le_desc;
-#ifdef WITH_COLLECTIONS 
+#ifdef PHP_OCI8_HAVE_COLLECTIONS 
 static int le_coll;
 #endif
 static int le_server;
 static int le_session;
 static zend_class_entry *oci_lob_class_entry_ptr;
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
 static zend_class_entry *oci_coll_class_entry_ptr;
 #endif
 
@@ -193,7 +190,7 @@
 static void _oci_conn_list_dtor(oci_connection *connection TSRMLS_DC);
 static void _oci_stmt_list_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC);
 static void _oci_descriptor_list_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC);
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
 static void _oci_coll_list_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC);
 #endif
 static void _oci_server_list_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC);
@@ -207,7 +204,7 @@
 static oci_connection *oci_get_conn(zval ** TSRMLS_DC);
 static oci_statement *oci_get_stmt(zval ** TSRMLS_DC);
 static oci_descriptor *oci_get_desc(int TSRMLS_DC);
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
 /* Questionable name.  Very close to oci_get_col */
 static oci_collection *oci_get_coll(int TSRMLS_DC);
 #endif
@@ -297,7 +294,7 @@
 PHP_FUNCTION(ociwritetemporarylob);
 PHP_FUNCTION(ocicloselob);
 #endif
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
 PHP_FUNCTION(ocinewcollection);
 PHP_FUNCTION(ocifreecollection);
 PHP_FUNCTION(ocicollappend);
@@ -327,7 +324,7 @@
                RETURN_FALSE; \
        }
 
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
 #define OCI_GET_COLL(collection,index) \
        collection = oci_get_coll(index TSRMLS_CC); \
        if (collection == NULL) { \
@@ -418,7 +415,7 @@
        PHP_FE(ocinewdescriptor,       NULL)
        PHP_FE(ocisetprefetch,         NULL)
        PHP_FE(ocipasswordchange,      NULL)
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
        PHP_FE(ocifreecollection,      NULL)
        PHP_FE(ocicollappend,          NULL)
        PHP_FE(ocicollgetelem,         NULL)
@@ -461,7 +458,7 @@
        {NULL,NULL,NULL}
 };
 
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
 static zend_function_entry php_oci_coll_class_functions[] = {
        PHP_FALIAS(append,        ocicollappend,        NULL)
        PHP_FALIAS(getelem,       ocicollgetelem,       NULL)
@@ -534,28 +531,34 @@
 PHP_MINIT_FUNCTION(oci)
 {
        zend_class_entry oci_lob_class_entry;
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
        zend_class_entry oci_coll_class_entry;
 #endif
 
 #ifdef HAVE_OCI8_SHARED_MODE
 
-#ifdef WITH_COLLECTIONS
-#define PHP_OCI_INIT_MODE OCI_SHARED | OCI_OBJECT
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
+#define PHP_OCI_INIT_MODE_TMP OCI_SHARED | OCI_OBJECT
 #else
-#define PHP_OCI_INIT_MODE OCI_SHARED
+#define PHP_OCI_INIT_MODE_TMP OCI_SHARED
 #endif
 
 #else
 
-#ifdef WITH_COLLECTIONS
-#define PHP_OCI_INIT_MODE OCI_DEFAULT | OCI_OBJECT
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
+#define PHP_OCI_INIT_MODE_TMP OCI_DEFAULT | OCI_OBJECT
 #else
-#define PHP_OCI_INIT_MODE OCI_DEFAULT
+#define PHP_OCI_INIT_MODE_TMP OCI_DEFAULT
 #endif
 
 #endif
 
+#ifdef ZTS
+#define PHP_OCI_INIT_MODE PHP_OCI_INIT_MODE_TMP | OCI_THREADED
+#else
+#define PHP_OCI_INIT_MODE PHP_OCI_INIT_MODE_TMP
+#endif
+    
        mutex_alloc(mx_lock);
 
        persistent_servers = malloc(sizeof(TsHashTable));
@@ -574,19 +577,19 @@
        le_stmt = zend_register_list_destructors_ex(_oci_stmt_list_dtor, NULL, "oci8 
statement", module_number);
        le_conn = zend_register_list_destructors_ex(php_oci_free_conn_list, NULL, 
"oci8 connection", module_number);
        le_desc = zend_register_list_destructors_ex(_oci_descriptor_list_dtor, NULL, 
"oci8 descriptor", module_number);
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
        le_coll = zend_register_list_destructors_ex(_oci_coll_list_dtor, NULL, "oci8 
collection", module_number);
 #endif
        le_server = zend_register_list_destructors_ex(_oci_server_list_dtor, NULL, 
"oci8 server", module_number);
        le_session = zend_register_list_destructors_ex(_oci_session_list_dtor, NULL, 
"oci8 session", module_number);
 
        INIT_CLASS_ENTRY(oci_lob_class_entry, "OCI-Lob", php_oci_lob_class_functions);
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
        INIT_CLASS_ENTRY(oci_coll_class_entry, "OCI-Collection", 
php_oci_coll_class_functions);
 #endif
 
        oci_lob_class_entry_ptr = zend_register_internal_class(&oci_lob_class_entry 
TSRMLS_CC);
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
        oci_coll_class_entry_ptr = zend_register_internal_class(&oci_coll_class_entry 
TSRMLS_CC);
 #endif
 
@@ -611,7 +614,7 @@
        REGISTER_LONG_CONSTANT("SQLT_BLOB",SQLT_BLOB, CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("SQLT_RDD",SQLT_RDD, CONST_CS | CONST_PERSISTENT);
 
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
        REGISTER_LONG_CONSTANT("OCI_B_SQLT_NTY",SQLT_NTY, CONST_CS | CONST_PERSISTENT);
        REGISTER_STRING_CONSTANT("OCI_SYSDATE","SYSDATE",CONST_PERSISTENT);
 #endif
@@ -712,7 +715,7 @@
 
        php_info_print_table_start();
        php_info_print_table_row(2, "OCI8 Support", "enabled");
-       php_info_print_table_row(2, "Revision", "$Revision: 1.222 $");
+       php_info_print_table_row(2, "Revision", "$Revision: 1.223 $");
 
        sprintf(buf, "%ld", num_persistent);
        php_info_print_table_row(2, "Active Persistent Links", buf);
@@ -724,6 +727,19 @@
        php_info_print_table_row(2, "Compile-time ORACLE_HOME", PHP_OCI8_DIR );
        php_info_print_table_row(2, "Libraries Used", PHP_OCI8_SHARED_LIBADD );
 #endif
+
+#ifdef HAVE_OCI8_TEMP_LOB
+       php_info_print_table_row(2, "Temporary Lob support", "enabled" );
+#else
+       php_info_print_table_row(2, "Temporary Lob support", "disabled" );
+#endif
+
+#ifdef HAVE_OCI8_COLLECTIONS
+       php_info_print_table_row(2, "Collections support", "enabled" );
+#else
+       php_info_print_table_row(2, "Collections support", "disabled" );
+#endif
+    
        php_info_print_table_end();
 
 }
@@ -940,7 +956,7 @@
 }
 /* }}} */
 
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
 
 /* {{{ _oci_coll_list_dtor()
  */
@@ -972,8 +988,6 @@
        oci_descriptor *descr = (oci_descriptor *)rsrc->ptr;
        oci_debug("START _oci_descriptor_list_dtor: %d",descr->id);
 
-       zend_list_delete(descr->conn->id);
-
        CALL_OCI(OCIDescriptorFree(
                                descr->ocidescr, 
                                Z_TYPE_P(descr)));
@@ -1286,7 +1300,7 @@
        return descr;
 }
 
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
 
 /* {{{ _oci_get_ocicoll() */
 
@@ -3192,7 +3206,7 @@
        oci_statement *bindstmt;
        oci_bind bind, *bindp;
        oci_descriptor *descr;
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
        oci_collection *coll;
        dvoid *mycoll = 0;
 #endif
@@ -3221,7 +3235,7 @@
        OCI_GET_STMT(statement,stmt);
 
        switch (ocitype) {
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
                case SQLT_NTY:
                        if(Z_TYPE_PP(var) != IS_OBJECT) {
                                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Variable 
must be allocated using OCINewCollection()");
@@ -3334,7 +3348,7 @@
                }
        }
 
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
        if (ocitype == SQLT_NTY) {
                /* Bind object */
                CALL_OCI_RETURN(statement->error, OCIBindObject(
@@ -5880,7 +5894,7 @@
 
 /* }}} */
 
-#ifdef WITH_COLLECTIONS
+#ifdef PHP_OCI8_HAVE_COLLECTIONS
 /* {{{ oci_get_coll() */
 
 static oci_collection *oci_get_coll(int ind TSRMLS_DC)

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to