tony2001                Wed Dec 24 10:01:55 2003 EDT

  Modified files:              
    /php-src/ext/oci8   oci8.c 
  Log:
  separate oci_lob_flush() to use it in oci_lob_append() etc. in the future
  
  
Index: php-src/ext/oci8/oci8.c
diff -u php-src/ext/oci8/oci8.c:1.226 php-src/ext/oci8/oci8.c:1.227
--- php-src/ext/oci8/oci8.c:1.226       Tue Dec 23 11:02:53 2003
+++ php-src/ext/oci8/oci8.c     Wed Dec 24 10:01:54 2003
@@ -22,7 +22,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: oci8.c,v 1.226 2003/12/23 16:02:53 tony2001 Exp $ */
+/* $Id: oci8.c,v 1.227 2003/12/24 15:01:54 tony2001 Exp $ */
 
 /* TODO list:
  *
@@ -234,6 +234,8 @@
 static sb4 oci_failover_callback(dvoid *svchp,dvoid* envhp,dvoid *fo_ctx,ub4 fo_type, 
ub4 fo_event);
 #endif
 
+static int oci_lob_flush(oci_descriptor*, int);
+
 /* }}} */
 /* {{{ extension function prototypes */
 
@@ -770,7 +772,7 @@
 
        php_info_print_table_start();
        php_info_print_table_row(2, "OCI8 Support", "enabled");
-       php_info_print_table_row(2, "Revision", "$Revision: 1.226 $");
+       php_info_print_table_row(2, "Revision", "$Revision: 1.227 $");
 
        sprintf(buf, "%ld", num_persistent);
        php_info_print_table_row(2, "Active Persistent Links", buf);
@@ -3185,6 +3187,46 @@
 
 /* }}} */
 
+/* {{{ oci_lob_flush() */
+static int oci_lob_flush(oci_descriptor* descr, int flush_flag) {
+    OCILobLocator *mylob;
+    oci_connection *connection;
+
+    mylob = (OCILobLocator *) descr->ocidescr;
+
+    if (! mylob) {
+        return 0;
+    }
+
+    /* do not really flush buffer, but reporting success
+     * to suppress OCI error when flushing not used buffer
+     * */
+    if (descr->buffering != 2) {
+        return 1;
+    }
+
+    connection = descr->conn;
+
+    CALL_OCI_RETURN(connection->error, OCILobFlushBuffer(
+                connection->pServiceContext,
+                connection->pError,
+                mylob,
+                flush_flag));
+
+    oci_debug("OCILobFlushBuffer: flush_flag=%d",flush_flag);
+
+    if (connection->error) {
+        oci_error(connection->pError, "OCILobFlushBuffer", connection->error);
+        oci_handle_error(connection, connection->error);
+        return 0;
+    }
+
+    /* marking buffer as enabled and not used */
+    descr->buffering = 1;
+    return 1;
+}
+/* }}} */
+
 /* {{{ php_oci_fetch_row() */
 static void php_oci_fetch_row (INTERNAL_FUNCTION_PARAMETERS, int mode, int 
expected_args)
 {
@@ -4315,27 +4357,12 @@
                        /* buffering wasn't enabled, there is nothing to flush */
                        RETURN_FALSE;
                }
-               else if (descr->buffering == 1) {
-                       /* buffering is enabled, but not used yet
-                          dunno why, but OCI returns error in this case, so I think 
we should suppress it */
-                       RETURN_TRUE;
-               }
-               
-               CALL_OCI_RETURN(connection->error, OCILobFlushBuffer(
-                                       connection->pServiceContext, 
-                                       connection->pError,
-                                       mylob,
-                                       flush_flag));
-
-               oci_debug("OCILobFlushBuffer: flush_flag=%d",flush_flag);
-
-               if (connection->error) {
-                       oci_error(connection->pError, "OCILobFlushBuffer", 
connection->error);
-                       oci_handle_error(connection, connection->error);
-                       RETURN_FALSE;
-               }
-
-               RETURN_TRUE;
+        
+        if (oci_lob_flush(descr,flush_flag) == 1) {
+            RETURN_TRUE;
+        }
+        
+        RETURN_FALSE;
        }
        
        php_error_docref(NULL TSRMLS_CC, E_NOTICE, "oci_lob_flush() should not be 
called like this. Use $somelob->flush() to flush LOB buffer");

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

Reply via email to