mbeccati                Tue May 12 21:35:22 2009 UTC

  Removed files:               
    /php-src/ext/pdo_oci        package.xml 

  Modified files:              
    /php-src/ext/pdo_oci        package2.xml oci_driver.c oci_statement.c 
                                pdo_oci.c php_pdo_oci.h php_pdo_oci_int.h 
    /php-src/ext/pdo_oci/tests  bug_33707.phpt bug41996.phpt 
                                pdo_oci_attr_case.phpt 
                                pdo_oci_attr_client.phpt 
                                pdo_oci_attr_drivername.phpt 
                                pdo_oci_attr_nulls_1.phpt 
                                pdo_oci_attr_server.phpt 
                                pdo_oci_quote1.phpt pecl_bug_6364.phpt 
  Log:
  MFB
  - Updated PDO_OCI to the latest version (from PHP_5_3 branch)
  # This commit reverts some changes to the tests. Given the very high
  # failure ratio of the current tests on HEAD I'm not going to fix them
  # now. Keeping ext/pdo_oci in sync with 5.3 will be much more helpful when
  # merging. The effort to fix the tests can start when 5.3 is out.
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/package2.xml?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/pdo_oci/package2.xml
diff -u /dev/null php-src/ext/pdo_oci/package2.xml:1.2
--- /dev/null   Tue May 12 21:35:21 2009
+++ php-src/ext/pdo_oci/package2.xml    Tue May 12 21:35:20 2009
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package packagerversion="1.4.2" version="2.0" 
xmlns="http://pear.php.net/dtd/package-2.0"; 
xmlns:tasks="http://pear.php.net/dtd/tasks-1.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
+http://pear.php.net/dtd/tasks-1.0.xsd
+http://pear.php.net/dtd/package-2.0
+http://pear.php.net/dtd/package-2.0.xsd";>
+ <name>PDO_OCI</name>
+ <channel>pecl.php.net</channel>
+ <summary>Oracle Call Interface driver for PDO</summary>
+ <description>This extension provides an Oracle driver for PDO.
+ </description>
+ <lead>
+  <name>Wez Furlong</name>
+  <user>wez</user>
+  <email>w...@php.net</email>
+  <active>yes</active>
+ </lead>
+ <date>2006-05-01</date>
+ <version>
+  <release>1.0.1</release>
+  <api>1.0.1</api>
+ </version>
+ <stability>
+  <release>stable</release>
+  <api>stable</api>
+ </stability>
+ <license uri="http://www.php.net/license";>PHP</license>
+ <notes>
+- Added support for BINARY_DOUBLE and BINARY_FLOAT to PDO_OCI and OCI8
+  (also fixes bug #36764). (Tony)
+- Fixed bug #35907 (PDO_OCI uses hardcoded lib path $ORACLE_HOME/lib). (Tony)
+- Repackage with package2.xml
+- Improved handling of long columns
+- Fixed PECL Bug #5722; implemented LOB support.
+
+You require Oracle OCI 8 or higher client libraries (instantclient is also
+supported) installed on the machine where you intend to build and/or use this
+package.
+   
+If you are running on windows, you can download the binary from here:
+http://pecl4win.php.net/ext.php/php_pdo_oci.dll
+ </notes>
+ <contents>
+  <dir name="/">
+   <file name="config.m4" role="src" />
+   <file name="config.w32" role="src" />
+   <file name="CREDITS" role="doc" />
+   <file name="oci_driver.c" role="src" />
+   <file name="oci_statement.c" role="src" />
+   <file name="pdo_oci.c" role="src" />
+   <file name="php_pdo_oci.h" role="src" />
+   <file name="php_pdo_oci_int.h" role="src" />
+  </dir> <!-- / -->
+ </contents>
+ <dependencies>
+  <required>
+   <php>
+    <min>5.0.3</min>
+   </php>
+   <pearinstaller>
+    <min>1.4.0</min>
+   </pearinstaller>
+   <package>
+    <name>pdo</name>
+    <channel>pecl.php.net</channel>
+    <min>1.0.3</min>
+    <providesextension>PDO</providesextension>
+   </package>
+  </required>
+ </dependencies>
+ <providesextension>PDO_OCI</providesextension>
+ <extsrcrelease />
+</package>
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/oci_driver.c?r1=1.39&r2=1.40&diff_format=u
Index: php-src/ext/pdo_oci/oci_driver.c
diff -u php-src/ext/pdo_oci/oci_driver.c:1.39 
php-src/ext/pdo_oci/oci_driver.c:1.40
--- php-src/ext/pdo_oci/oci_driver.c:1.39       Tue Mar 10 23:39:28 2009
+++ php-src/ext/pdo_oci/oci_driver.c    Tue May 12 21:35:20 2009
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: oci_driver.c,v 1.39 2009/03/10 23:39:28 helly Exp $ */
+/* $Id: oci_driver.c,v 1.40 2009/05/12 21:35:20 mbeccati Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -65,7 +65,7 @@
        pdo_oci_error_info *einfo;
        pdo_oci_stmt *S = NULL;
        pdo_error_type *pdo_err = &dbh->error_code;
-       
+
        if (stmt) {
                S = (pdo_oci_stmt*)stmt->driver_data;
                einfo = &S->einfo;
@@ -80,12 +80,12 @@
                        pefree(einfo->errmsg, dbh->is_persistent);
                }
        }
-       
+
        einfo->errmsg = NULL;
        einfo->errcode = 0;
        einfo->file = file;
        einfo->line = line;
-       
+
        if (isinit) { /* Initialization error */
                strcpy(*pdo_err, "HY000");
                slprintf(tmp_buf, sizeof(tmp_buf), "%s (%s:%d)", what, file, 
line);
@@ -98,45 +98,52 @@
                                break;
                        case OCI_ERROR:
                                OCIErrorGet(err, (ub4)1, NULL, &einfo->errcode, 
errbuf, (ub4)sizeof(errbuf), OCI_HTYPE_ERROR);
-                               spprintf(&einfo->errmsg, 0, "%s: %s (%s:%d)", 
what, errbuf, file, line);
+                               slprintf(tmp_buf, sizeof(tmp_buf), "%s: %s 
(%s:%d)", what, errbuf, file, line);
+                               einfo->errmsg = pestrdup(tmp_buf, 
dbh->is_persistent);
                                break;
                        case OCI_SUCCESS_WITH_INFO:
                                OCIErrorGet(err, (ub4)1, NULL, &einfo->errcode, 
errbuf, (ub4)sizeof(errbuf), OCI_HTYPE_ERROR);
-                               spprintf(&einfo->errmsg, 0, "%s: 
OCI_SUCCESS_WITH_INFO: %s (%s:%d)", what, errbuf, file, line);
+                               slprintf(tmp_buf, sizeof(tmp_buf), "%s: 
OCI_SUCCESS_WITH_INFO: %s (%s:%d)", what, errbuf, file, line);
+                               einfo->errmsg = pestrdup(tmp_buf, 
dbh->is_persistent);
                                break;
                        case OCI_NEED_DATA:
-                               spprintf(&einfo->errmsg, 0, "%s: OCI_NEED_DATA 
(%s:%d)", what, file, line);
+                               slprintf(tmp_buf, sizeof(tmp_buf), "%s: 
OCI_NEED_DATA (%s:%d)", what, file, line);
+                               einfo->errmsg = pestrdup(tmp_buf, 
dbh->is_persistent);
                                break;
                        case OCI_NO_DATA:
-                               spprintf(&einfo->errmsg, 0, "%s: OCI_NO_DATA 
(%s:%d)", what, file, line);
+                               slprintf(tmp_buf, sizeof(tmp_buf), "%s: 
OCI_NO_DATA (%s:%d)", what, file, line);
+                               einfo->errmsg = pestrdup(tmp_buf, 
dbh->is_persistent);
                                break;
                        case OCI_INVALID_HANDLE:
-                               spprintf(&einfo->errmsg, 0, "%s: 
OCI_INVALID_HANDLE (%s:%d)", what, file, line);
+                               slprintf(tmp_buf, sizeof(tmp_buf), "%s: 
OCI_INVALID_HANDLE (%s:%d)", what, file, line);
+                               einfo->errmsg = pestrdup(tmp_buf, 
dbh->is_persistent);
                                break;
                        case OCI_STILL_EXECUTING:
-                               spprintf(&einfo->errmsg, 0, "%s: 
OCI_STILL_EXECUTING (%s:%d)", what, file, line);
+                               slprintf(tmp_buf, sizeof(tmp_buf), "%s: 
OCI_STILL_EXECUTING (%s:%d)", what, file, line);
+                               einfo->errmsg = pestrdup(tmp_buf, 
dbh->is_persistent);
                                break;
                        case OCI_CONTINUE:
-                               spprintf(&einfo->errmsg, 0, "%s: OCI_CONTINUE 
(%s:%d)", what, file, line);
+                               slprintf(tmp_buf, sizeof(tmp_buf), "%s: 
OCI_CONTINUE (%s:%d)", what, file, line);
+                               einfo->errmsg = pestrdup(tmp_buf, 
dbh->is_persistent);
                                break;
                }
-               
+
                if (einfo->errcode) {
                        switch (einfo->errcode) {
                                case 1013:      /* user requested cancel of 
current operation */
                                        zend_bailout();
                                        break;
-                                       
+
 #if 0
                                case 955:       /* ORA-00955: name is already 
used by an existing object */
                                        *pdo_err = PDO_ERR_ALREADY_EXISTS;
                                        break;
 #endif
-                                       
+
                                case 12154:     /* ORA-12154: TNS:could not 
resolve service name */
                                        strcpy(*pdo_err, "42S02");
                                        break;
-                                       
+
                                case 22:        /* ORA-00022: invalid session 
id */
                                case 1012:      /* ORA-01012: */
                                case 3113:      /* ORA-03133: end of file on 
communication channel */
@@ -147,12 +154,12 @@
                                        H->attached = 0;
                                        strcpy(*pdo_err, "01002"); /* FIXME */
                                        break;
-                                       
+
                                default:
                                        strcpy(*pdo_err, "HY000");
                        }
                }
-               
+
                if (stmt) {
                        /* always propogate the error code back up to the dbh,
                         * so that we can catch the error information when 
execute
@@ -168,11 +175,7 @@
 
        /* little mini hack so that we can use this code from the dbh ctor */
        if (!dbh->methods) {
-#if PHP_VERSION_ID > 50200
                zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC, 
"SQLSTATE[%s]: %s", *pdo_err, einfo->errmsg);
-#else
-               zend_throw_exception_ex(php_pdo_get_exception(TSRMLS_C), 0 
TSRMLS_CC, "SQLSTATE[%s]: %s", *pdo_err, einfo->errmsg);
-#endif
        }
 
        return einfo->errcode;
@@ -182,7 +185,7 @@
 static int oci_handle_closer(pdo_dbh_t *dbh TSRMLS_DC) /* {{{ */
 {
        pdo_oci_db_handle *H = (pdo_oci_db_handle *)dbh->driver_data;
-       
+
        if (H->svc) {
                /* rollback any outstanding work */
                OCITransRollback(H->svc, H->err, 0);
@@ -197,7 +200,7 @@
                OCIHandleFree(H->svc, OCI_HTYPE_SVCCTX);
                H->svc = NULL;
        }
-       
+
        if (H->server && H->attached) {
                H->last_err = OCIServerDetach(H->server, H->err, OCI_DEFAULT);
                if (H->last_err) {
@@ -218,12 +221,12 @@
                OCIHandleFree(H->env, OCI_HTYPE_ENV);
                H->env = NULL;
        }
-       
+
        if (H->einfo.errmsg) {
                pefree(H->einfo.errmsg, dbh->is_persistent);
                H->einfo.errmsg = NULL;
        }
- 
+
        pefree(H, dbh->is_persistent);
 
        return 0;
@@ -261,7 +264,7 @@
                efree(S);
                return 0;
        }
-       
+
        /* create an OCI statement handle */
        OCIHandleAlloc(H->env, (dvoid*)&S->stmt, OCI_HTYPE_STMT, 0, NULL);
 
@@ -287,11 +290,11 @@
        prefetch = pdo_oci_sanitize_prefetch(pdo_attr_lval(driver_options, 
PDO_ATTR_PREFETCH, PDO_OCI_PREFETCH_DEFAULT TSRMLS_CC));
        if (prefetch) {
                H->last_err = OCIAttrSet(S->stmt, OCI_HTYPE_STMT, &prefetch, 0,
-                                                                
OCI_ATTR_PREFETCH_ROWS, H->err);
+                       OCI_ATTR_PREFETCH_ROWS, H->err);
                if (!H->last_err) {
                        prefetch *= PDO_OCI_PREFETCH_ROWSIZE;
                        H->last_err = OCIAttrSet(S->stmt, OCI_HTYPE_STMT, 
&prefetch, 0,
-                                                                        
OCI_ATTR_PREFETCH_MEMORY, H->err);
+                               OCI_ATTR_PREFETCH_MEMORY, H->err);
                }
        }
 
@@ -301,7 +304,7 @@
                efree(nsql);
                nsql = NULL;
        }
-       
+
        return 1;
 }
 /* }}} */
@@ -322,7 +325,7 @@
                OCIHandleFree(stmt, OCI_HTYPE_STMT);
                return -1;
        }
-       
+
        H->last_err = OCIAttrGet(stmt, OCI_HTYPE_STMT, &stmt_type, 0, 
OCI_ATTR_STMT_TYPE, H->err);
 
        if (stmt_type == OCI_STMT_SELECT) {
@@ -345,7 +348,7 @@
        }
 
        OCIHandleFree(stmt, OCI_HTYPE_STMT);
-       
+
        return ret;
 }
 /* }}} */
@@ -384,7 +387,6 @@
        (*quoted)[*quotedlen]   = '\0';
        
        return 1;
-
 }
 /* }}} */
 
@@ -542,10 +544,10 @@
        };
 
        php_pdo_parse_data_source(dbh->data_source, dbh->data_source_len, vars, 
2);
-       
+
        H = pecalloc(1, sizeof(*H), dbh->is_persistent);
        dbh->driver_data = H;
-       
+
        /* allocate an environment */
 #if HAVE_OCIENVNLSCREATE
        if (vars[0].optval) {
@@ -568,10 +570,10 @@
 
        /* something to hold errors */
        OCIHandleAlloc(H->env, (dvoid **)&H->err, OCI_HTYPE_ERROR, 0, NULL);
-       
+
        /* handle for the server */
        OCIHandleAlloc(H->env, (dvoid **)&H->server, OCI_HTYPE_SERVER, 0, NULL);
-       
+
        H->last_err = OCIServerAttach(H->server, H->err, (text*)vars[1].optval,
                        strlen(vars[1].optval), OCI_DEFAULT);
 
@@ -625,7 +627,7 @@
        }
 
        /* Now fire up the session */
-       H->last_err = OCISessionBegin(H->svc, H->err, H->session, 
OCI_CRED_RDBMS, OCI_DEFAULT); 
+       H->last_err = OCISessionBegin(H->svc, H->err, H->session, 
OCI_CRED_RDBMS, OCI_DEFAULT);
        if (H->last_err) {
                oci_drv_error("OCISessionBegin");
                goto cleanup;
@@ -637,13 +639,13 @@
                oci_drv_error("OCIAttrSet: OCI_ATTR_SESSION");
                goto cleanup;
        }
-       
+
        dbh->methods = &oci_methods;
        dbh->alloc_own_columns = 1;
        dbh->native_case = PDO_CASE_UPPER;
 
        ret = 1;
-       
+
 cleanup:
        for (i = 0; i < sizeof(vars)/sizeof(vars[0]); i++) {
                if (vars[i].freeme) {
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/oci_statement.c?r1=1.29&r2=1.30&diff_format=u
Index: php-src/ext/pdo_oci/oci_statement.c
diff -u php-src/ext/pdo_oci/oci_statement.c:1.29 
php-src/ext/pdo_oci/oci_statement.c:1.30
--- php-src/ext/pdo_oci/oci_statement.c:1.29    Tue Mar 10 23:39:28 2009
+++ php-src/ext/pdo_oci/oci_statement.c Tue May 12 21:35:20 2009
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: oci_statement.c,v 1.29 2009/03/10 23:39:28 helly Exp $ */
+/* $Id: oci_statement.c,v 1.30 2009/05/12 21:35:20 mbeccati Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -41,7 +41,7 @@
        } while(0)
 
 #define STMT_CALL_MSG(name, msg, params)                                       
                        \
-       do {                                                                    
                                                        \
+       do {                                                                    
                                                        \
                S->last_err = name params;                                      
                                        \
                S->last_err = _oci_error(S->err, stmt->dbh, stmt, #name ": " 
#msg, S->last_err, FALSE, __FILE__, __LINE__ TSRMLS_CC); \
                if (S->last_err) {                                              
                                                \
@@ -49,13 +49,14 @@
                }                                                               
                                                                \
        } while(0)
 
+static php_stream *oci_create_lob_stream(pdo_stmt_t *stmt, OCILobLocator *lob 
TSRMLS_DC);
 
 static int oci_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */
 {
        pdo_oci_stmt *S = (pdo_oci_stmt*)stmt->driver_data;
        HashTable *BC = stmt->bound_columns;
        HashTable *BP = stmt->bound_params;
-       
+
        int i;
 
        if (S->stmt) {
@@ -78,22 +79,29 @@
                FREE_HASHTABLE(stmt->bound_columns);
                stmt->bound_columns = NULL;
        }
-       
+
        if (BP) {
                zend_hash_destroy(BP);
                FREE_HASHTABLE(stmt->bound_params);
                stmt->bound_params = NULL;
        }
-       
+
        if (S->einfo.errmsg) {
                pefree(S->einfo.errmsg, stmt->dbh->is_persistent);
                S->einfo.errmsg = NULL;
        }
-       
+
        if (S->cols) {
                for (i = 0; i < stmt->column_count; i++) {
                        if (S->cols[i].data) {
-                               efree(S->cols[i].data);
+                               switch (S->cols[i].dtype) {
+                                       case SQLT_BLOB:
+                                       case SQLT_CLOB:
+                                               /* do nothing */
+                                               break;
+                                       default:
+                                               efree(S->cols[i].data);
+                               }
                        }
                }
                efree(S->cols);
@@ -134,7 +142,7 @@
        }
 
        STMT_CALL(OCIStmtExecute, (S->H->svc, S->stmt, S->err,
-                               S->stmt_type == OCI_STMT_SELECT ? 0 : 1, 0, 
NULL, NULL,
+                               (S->stmt_type == OCI_STMT_SELECT && 
!S->have_blobs) ? 0 : 1, 0, NULL, NULL,
                                mode));
 
        if (!stmt->executed) {
@@ -147,9 +155,26 @@
 
                stmt->column_count = (int)colcount;
 
+               if (S->cols) {
+                       int i;
+                       for (i = 0; i < stmt->column_count; i++) {
+                               if (S->cols[i].data) {
+                                       switch (S->cols[i].dtype) {
+                                               case SQLT_BLOB:
+                                               case SQLT_CLOB:
+                                                       /* do nothing */
+                                                       break;
+                                               default:
+                                                       efree(S->cols[i].data);
+                                       }
+                               }
+                       }
+                       efree(S->cols);
+               }
+
                S->cols = ecalloc(colcount, sizeof(pdo_oci_column));
        }
-       
+
        STMT_CALL_MSG(OCIAttrGet, "ATTR_ROW_COUNT",
                        (S->stmt, OCI_HTYPE_STMT, &rowcount, 0, 
OCI_ATTR_ROW_COUNT, S->err));
        stmt->row_count = (long)rowcount;
@@ -167,10 +192,13 @@
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "param is NULL in 
oci_bind_input_cb; this should not happen");
                return OCI_ERROR;
        }
-       
+
        *indpp = &P->indicator;
 
-       if (ZVAL_IS_NULL(param->parameter)) {
+       if (P->thing) {
+               *bufpp = P->thing;
+               *alenp = sizeof(void*);
+       } else if (ZVAL_IS_NULL(param->parameter)) {
                /* insert a NULL value into the column */
                P->indicator = -1; /* NULL */
                *bufpp = 0;
@@ -180,9 +208,6 @@
                convert_to_string(param->parameter);
                *bufpp = Z_STRVAL_P(param->parameter);
                *alenp = Z_STRLEN_P(param->parameter);
-       } else {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "P->thing should 
not be set??");
-               return OCI_ERROR;
        }
 
        *piecep = OCI_ONE_PIECE;
@@ -199,7 +224,17 @@
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "param is NULL in 
oci_bind_output_cb; this should not happen");
                return OCI_ERROR;
        }
-       
+
+       if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB) {
+               P->actual_len = sizeof(OCILobLocator*);
+               *bufpp = P->thing;
+               *alenpp = &P->actual_len;
+               *piecep = OCI_ONE_PIECE;
+               *rcodepp = &P->retcode;
+               *indpp = &P->indicator;
+               return OCI_CONTINUE;
+       }
+
        if (Z_TYPE_P(param->parameter) == IS_OBJECT || 
Z_TYPE_P(param->parameter) == IS_RESOURCE) {
                return OCI_CONTINUE;
        }
@@ -211,7 +246,7 @@
        Z_STRVAL_P(param->parameter) = ecalloc(1, 
Z_STRLEN_P(param->parameter)+1);
        P->used_for_output = 1;
 
-       P->actual_len = Z_STRLEN_P(param->parameter);   
+       P->actual_len = Z_STRLEN_P(param->parameter);
        *alenpp = &P->actual_len;
        *bufpp = Z_STRVAL_P(param->parameter);
        *piecep = OCI_ONE_PIECE;
@@ -229,7 +264,7 @@
        if (param->is_param) {
                pdo_oci_bound_param *P;
                sb4 value_sz = -1;
-               
+
                P = (pdo_oci_bound_param*)param->driver_data;
 
                switch (event_type) {
@@ -243,23 +278,28 @@
                        case PDO_PARAM_EVT_ALLOC:
                                P = (pdo_oci_bound_param*)ecalloc(1, 
sizeof(pdo_oci_bound_param));
                                param->driver_data = P;
-                       
+
                                /* figure out what we're doing */
                                switch (PDO_PARAM_TYPE(param->param_type)) {
-                                       case PDO_PARAM_LOB:
                                        case PDO_PARAM_STMT:
                                                return 0;
 
+                                       case PDO_PARAM_LOB:
+                                               /* P->thing is now an 
OCILobLocator * */
+                                               P->oci_type = SQLT_BLOB;
+                                               value_sz = 
sizeof(OCILobLocator*);
+                                               break;
+
                                        case PDO_PARAM_STR:
                                        default:
                                                P->oci_type = SQLT_CHR;
-                                               value_sz = param->max_value_len 
+ 1;
+                                               value_sz = param->max_value_len;
                                                if (param->max_value_len == 0) {
-                                                       value_sz = 4000; /* 
maximum size before value is interpreted as a LONG value */
+                                                       value_sz = 1332; /* 
maximum size before value is interpreted as a LONG value */
                                                }
-                                               
+
                                }
-                               
+
                                if (param->name) {
                                        STMT_CALL(OCIBindByName, (S->stmt,
                                                        &P->bind, S->err, 
(text*)param->name,
@@ -273,7 +313,7 @@
                                                        &P->indicator, 0, 
&P->retcode, 0, 0,
                                                        OCI_DATA_AT_EXEC));
                                }
-                       
+
                                STMT_CALL(OCIBindDynamic, (P->bind,
                                                        S->err,
                                                        param, 
oci_bind_input_cb,
@@ -284,6 +324,12 @@
                        case PDO_PARAM_EVT_EXEC_PRE:
                                P->indicator = 0;
                                P->used_for_output = 0;
+                               if (PDO_PARAM_TYPE(param->param_type) == 
PDO_PARAM_LOB) {
+                                       ub4 empty = 0;
+                                       STMT_CALL(OCIDescriptorAlloc, 
(S->H->env, &P->thing, OCI_DTYPE_LOB, 0, NULL));
+                                       STMT_CALL(OCIAttrSet, (P->thing, 
OCI_DTYPE_LOB, &empty, 0, OCI_ATTR_LOBEMPTY, S->err));
+                                       S->have_blobs = 1;
+                               }
                                return 1;
 
                        case PDO_PARAM_EVT_EXEC_POST:
@@ -310,12 +356,76 @@
                                                Z_STRVAL_P(param->parameter) = 
erealloc(Z_STRVAL_P(param->parameter), P->actual_len+1);
                                                
Z_STRVAL_P(param->parameter)[P->actual_len] = '\0';
                                        }
+                               } else if (PDO_PARAM_TYPE(param->param_type) == 
PDO_PARAM_LOB && P->thing) {
+                                       php_stream *stm;
+
+                                       if (Z_TYPE_P(param->parameter) == 
IS_NULL) {
+                                               /* if the param is NULL, then 
we assume that they
+                                                * wanted to bind a lob locator 
into it from the query
+                                                * */
+
+                                               stm = 
oci_create_lob_stream(stmt, (OCILobLocator*)P->thing TSRMLS_CC);
+                                               if (stm) {
+                                                       OCILobOpen(S->H->svc, 
S->err, (OCILobLocator*)P->thing, OCI_LOB_READWRITE);
+                                                       php_stream_to_zval(stm, 
param->parameter);
+                                                       P->thing = NULL;
+                                               }
+                                       } else {
+                                               /* we're a LOB being used for 
insert; transfer the data now */
+                                               size_t n;
+                                               ub4 amt, offset = 1;
+                                               char *consume;
+
+                                               
php_stream_from_zval_no_verify(stm, &param->parameter);
+                                               if (stm) {
+                                                       OCILobOpen(S->H->svc, 
S->err, (OCILobLocator*)P->thing, OCI_LOB_READWRITE);
+                                                       do {
+                                                               char buf[8192];
+                                                               n = 
php_stream_read(stm, buf, sizeof(buf));
+                                                               if ((int)n <= 
0) {
+                                                                       break;
+                                                               }
+                                                               consume = buf;
+                                                               do {
+                                                                       amt = n;
+                                                                       
OCILobWrite(S->H->svc, S->err, (OCILobLocator*)P->thing,
+                                                                               
        &amt, offset, consume, n,
+                                                                               
        OCI_ONE_PIECE,
+                                                                               
        NULL, NULL, 0, SQLCS_IMPLICIT);
+                                                                       offset 
+= amt;
+                                                                       n -= 
amt;
+                                                                       consume 
+= amt;
+                                                               } while (n);
+                                                       } while (1);
+                                                       OCILobClose(S->H->svc, 
S->err, (OCILobLocator*)P->thing);
+                                                       
OCILobFlushBuffer(S->H->svc, S->err, (OCILobLocator*)P->thing, 0);
+                                               } else if 
(Z_TYPE_P(param->parameter) == IS_STRING) {
+                                                       /* stick the string 
into the LOB */
+                                                       consume = 
Z_STRVAL_P(param->parameter);
+                                                       n = 
Z_STRLEN_P(param->parameter);
+                                                       if (n) {
+                                                               
OCILobOpen(S->H->svc, S->err, (OCILobLocator*)P->thing, OCI_LOB_READWRITE);
+                                                               while (n) {
+                                                                       amt = n;
+                                                                       
OCILobWrite(S->H->svc, S->err, (OCILobLocator*)P->thing,
+                                                                               
        &amt, offset, consume, n,
+                                                                               
        OCI_ONE_PIECE,
+                                                                               
        NULL, NULL, 0, SQLCS_IMPLICIT);
+                                                                       consume 
+= amt;
+                                                                       n -= 
amt;
+                                                               }
+                                                               
OCILobClose(S->H->svc, S->err, (OCILobLocator*)P->thing);
+                                                       }
+                                               }
+                                               OCIDescriptorFree(P->thing, 
OCI_DTYPE_LOB);
+                                               P->thing = NULL;
+                                       }
                                }
 
                                return 1;
                }
        }
-       
+
        return 1;
 } /* }}} */
 
@@ -353,12 +463,36 @@
        if (S->last_err == OCI_SUCCESS_WITH_INFO || S->last_err == OCI_SUCCESS) 
{
                return 1;
        }
-       
+
        oci_stmt_error("OCIStmtFetch");
 
        return 0;
 } /* }}} */
 
+static sb4 oci_define_callback(dvoid *octxp, OCIDefine *define, ub4 iter, 
dvoid **bufpp,
+               ub4 **alenpp, ub1 *piecep, dvoid **indpp, ub2 **rcodepp)
+{
+       pdo_oci_column *col = (pdo_oci_column*)octxp;
+       TSRMLS_FETCH();
+
+       switch (col->dtype) {
+               case SQLT_BLOB:
+               case SQLT_CLOB:
+                       *piecep = OCI_ONE_PIECE;
+                       *bufpp = col->data;
+                       *alenpp = &col->datalen;
+                       *indpp = (dvoid *)&col->indicator;
+                       break;
+
+               default:
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING,
+                               "unhandled datatype in oci_define_callback; 
this should not happen");
+                       return OCI_ERROR;
+       }
+
+       return OCI_CONTINUE;
+}
+
 static int oci_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC) /* {{{ */
 {
        pdo_oci_stmt *S = (pdo_oci_stmt*)stmt->driver_data;
@@ -397,11 +531,12 @@
        col->namelen = namelen;
        col->name = estrndup((char *)colname, namelen);
 
+       S->cols[colno].dtype = dtype;
+
        /* how much room do we need to store the field */
        switch (dtype) {
                case SQLT_LBI:
                case SQLT_LNG:
-                       dyn = FALSE;
                        if (dtype == SQLT_LBI) {
                                dtype = SQLT_BIN;
                        } else {
@@ -411,10 +546,17 @@
                        S->cols[colno].data = emalloc(S->cols[colno].datalen + 
1);
                        col->param_type = PDO_PARAM_STR;
                        break;
-                                                                               
                                                                                
                                                                                
                
+
+               case SQLT_BLOB:
+               case SQLT_CLOB:
+                       col->param_type = PDO_PARAM_LOB;
+                       STMT_CALL(OCIDescriptorAlloc, (S->H->env, 
(dvoid**)&S->cols[colno].data, OCI_DTYPE_LOB, 0, NULL));
+                       S->cols[colno].datalen = sizeof(OCILobLocator*);
+                       dyn = TRUE;
+                       break;
+
                case SQLT_BIN:
                default:
-                       dyn = FALSE;
                        if (dtype == SQLT_DAT || dtype == SQLT_NUM || dtype == 
SQLT_RDD
 #ifdef SQLT_TIMESTAMP
                                        || dtype == SQLT_TIMESTAMP
@@ -442,15 +584,127 @@
                        col->param_type = PDO_PARAM_STR;
        }
 
-       if (!dyn) {
-               STMT_CALL(OCIDefineByPos, (S->stmt, &S->cols[colno].def, 
S->err, colno+1,
-                                       S->cols[colno].data, 
S->cols[colno].datalen, dtype, &S->cols[colno].indicator,
-                                       &S->cols[colno].fetched_len, 
&S->cols[colno].retcode, OCI_DEFAULT));
+       STMT_CALL(OCIDefineByPos, (S->stmt, &S->cols[colno].def, S->err, 
colno+1,
+                               S->cols[colno].data, S->cols[colno].datalen, 
dtype, &S->cols[colno].indicator,
+                               &S->cols[colno].fetched_len, 
&S->cols[colno].retcode, dyn ? OCI_DYNAMIC_FETCH : OCI_DEFAULT));
+
+       if (dyn) {
+               STMT_CALL(OCIDefineDynamic, (S->cols[colno].def, S->err, 
&S->cols[colno],
+                               oci_define_callback));
        }
-       
+
        return 1;
 } /* }}} */
 
+struct oci_lob_self {
+       pdo_stmt_t *stmt;
+       pdo_oci_stmt *S;
+       OCILobLocator *lob;
+       ub4 offset;
+};
+
+static size_t oci_blob_write(php_stream *stream, const char *buf, size_t count 
TSRMLS_DC)
+{
+       struct oci_lob_self *self = (struct oci_lob_self*)stream->abstract;
+       ub4 amt;
+       sword r;
+
+       amt = count;
+       r = OCILobWrite(self->S->H->svc, self->S->err, self->lob,
+               &amt, self->offset, (char*)buf, count,
+               OCI_ONE_PIECE,
+               NULL, NULL, 0, SQLCS_IMPLICIT);
+
+       if (r != OCI_SUCCESS) {
+               return (size_t)-1;
+       }
+
+       self->offset += amt;
+       return amt;
+}
+
+static size_t oci_blob_read(php_stream *stream, char *buf, size_t count 
TSRMLS_DC)
+{
+       struct oci_lob_self *self = (struct oci_lob_self*)stream->abstract;
+       ub4 amt;
+       sword r;
+
+       amt = count;
+       r = OCILobRead(self->S->H->svc, self->S->err, self->lob,
+               &amt, self->offset, buf, count,
+               NULL, NULL, 0, SQLCS_IMPLICIT);
+
+       if (r != OCI_SUCCESS) {
+               return (size_t)-1;
+       }
+
+       self->offset += amt;
+       return amt;
+}
+
+static int oci_blob_close(php_stream *stream, int close_handle TSRMLS_DC)
+{
+       struct oci_lob_self *self = (struct oci_lob_self*)stream->abstract;
+       pdo_stmt_t *stmt = self->stmt;
+
+       if (close_handle) {
+               OCILobClose(self->S->H->svc, self->S->err, self->lob);
+               OCIDescriptorFree(self->lob, OCI_DTYPE_LOB);
+               efree(self);
+       }
+
+       php_pdo_stmt_delref(stmt TSRMLS_CC);
+       return 0;
+}
+
+static int oci_blob_flush(php_stream *stream TSRMLS_DC)
+{
+       struct oci_lob_self *self = (struct oci_lob_self*)stream->abstract;
+       OCILobFlushBuffer(self->S->H->svc, self->S->err, self->lob, 0);
+       return 0;
+}
+
+/* TODO: implement
+static int oci_blob_seek(php_stream *stream, off_t offset, int whence, off_t 
*newoffset TSRMLS_DC)
+{
+       struct oci_lob_self *self = (struct oci_lob_self*)stream->abstract;
+
+       return -1;
+}
+*/
+
+static php_stream_ops oci_blob_stream_ops = {
+       oci_blob_write,
+       oci_blob_read,
+       oci_blob_close,
+       oci_blob_flush,
+       "pdo_oci blob stream",
+       NULL, /*oci_blob_seek,*/
+       NULL,
+       NULL,
+       NULL
+};
+
+static php_stream *oci_create_lob_stream(pdo_stmt_t *stmt, OCILobLocator *lob 
TSRMLS_DC)
+{
+       php_stream *stm;
+       struct oci_lob_self *self = ecalloc(1, sizeof(*self));
+       self->lob = lob;
+       self->offset = 1; /* 1-based */
+       self->stmt = stmt;
+       self->S = (pdo_oci_stmt*)stmt->driver_data;
+
+       stm = php_stream_alloc(&oci_blob_stream_ops, self, 0, "r+b");
+
+       if (stm) {
+               php_pdo_stmt_addref(stmt TSRMLS_CC);
+               return stm;
+       }
+
+       efree(self);
+       return NULL;
+}
+
 static int oci_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned 
long *len, int *caller_frees TSRMLS_DC) /* {{{ */
 {
        pdo_oci_stmt *S = (pdo_oci_stmt*)stmt->driver_data;
@@ -464,6 +718,16 @@
                return 1;
        } else if (C->indicator == 0) {
                /* it was stored perfectly */
+
+               if (C->dtype == SQLT_BLOB || C->dtype == SQLT_CLOB) {
+                       if (C->data) {
+                               *ptr = (char*)oci_create_lob_stream(stmt, 
(OCILobLocator*)C->data TSRMLS_CC);
+                               OCILobOpen(S->H->svc, S->err, 
(OCILobLocator*)C->data, OCI_LOB_READONLY);
+                       }
+                       *len = 0;
+                       return *ptr ? 1 : 0;
+               }
+
                *ptr = C->data;
                *len = C->fetched_len;
                return 1;
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/pdo_oci.c?r1=1.13&r2=1.14&diff_format=u
Index: php-src/ext/pdo_oci/pdo_oci.c
diff -u php-src/ext/pdo_oci/pdo_oci.c:1.13 php-src/ext/pdo_oci/pdo_oci.c:1.14
--- php-src/ext/pdo_oci/pdo_oci.c:1.13  Tue Mar 10 23:39:28 2009
+++ php-src/ext/pdo_oci/pdo_oci.c       Tue May 12 21:35:20 2009
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: pdo_oci.c,v 1.13 2009/03/10 23:39:28 helly Exp $ */
+/* $Id: pdo_oci.c,v 1.14 2009/05/12 21:35:20 mbeccati Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -59,7 +59,7 @@
        NULL,
        NULL,
        PHP_MINFO(pdo_oci),
-       "0.9",
+       "1.0.1",
        STANDARD_MODULE_PROPERTIES
 };
 /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/php_pdo_oci.h?r1=1.8&r2=1.9&diff_format=u
Index: php-src/ext/pdo_oci/php_pdo_oci.h
diff -u php-src/ext/pdo_oci/php_pdo_oci.h:1.8 
php-src/ext/pdo_oci/php_pdo_oci.h:1.9
--- php-src/ext/pdo_oci/php_pdo_oci.h:1.8       Tue Mar 10 23:39:28 2009
+++ php-src/ext/pdo_oci/php_pdo_oci.h   Tue May 12 21:35:20 2009
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: php_pdo_oci.h,v 1.8 2009/03/10 23:39:28 helly Exp $ */
+/* $Id: php_pdo_oci.h,v 1.9 2009/05/12 21:35:20 mbeccati Exp $ */
 
 #ifndef PHP_PDO_OCI_H
 #define PHP_PDO_OCI_H
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/php_pdo_oci_int.h?r1=1.12&r2=1.13&diff_format=u
Index: php-src/ext/pdo_oci/php_pdo_oci_int.h
diff -u php-src/ext/pdo_oci/php_pdo_oci_int.h:1.12 
php-src/ext/pdo_oci/php_pdo_oci_int.h:1.13
--- php-src/ext/pdo_oci/php_pdo_oci_int.h:1.12  Tue Mar 10 23:39:28 2009
+++ php-src/ext/pdo_oci/php_pdo_oci_int.h       Tue May 12 21:35:20 2009
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: php_pdo_oci_int.h,v 1.12 2009/03/10 23:39:28 helly Exp $ */
+/* $Id: php_pdo_oci_int.h,v 1.13 2009/05/12 21:35:20 mbeccati Exp $ */
 
 #include <oci.h>
 
@@ -38,8 +38,8 @@
        ub2                     charset;
        sword           last_err;
 
-       unsigned attached:1;
-       unsigned _reserved:31;
+       unsigned        attached:1;
+       unsigned        _reserved:31;
 
        pdo_oci_error_info einfo;
 } pdo_oci_db_handle;
@@ -51,7 +51,9 @@
        sb2                     indicator;
 
        char *data;
-       unsigned long datalen;
+       ub4 datalen;
+
+       ub2 dtype;
 
 } pdo_oci_column;
 
@@ -60,10 +62,11 @@
        OCIStmt         *stmt;
        OCIError        *err;
        sword           last_err;
-       ub2             stmt_type;
-       ub4             exec_type;
+       ub2                     stmt_type;
+       ub4                     exec_type;
        pdo_oci_column *cols;
        pdo_oci_error_info einfo;
+       unsigned int have_blobs:1;
 } pdo_oci_stmt;
 
 typedef struct {
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/tests/bug_33707.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/pdo_oci/tests/bug_33707.phpt
diff -u /dev/null php-src/ext/pdo_oci/tests/bug_33707.phpt:1.2
--- /dev/null   Tue May 12 21:35:21 2009
+++ php-src/ext/pdo_oci/tests/bug_33707.phpt    Tue May 12 21:35:21 2009
@@ -0,0 +1,29 @@
+--TEST--
+PDO OCI Bug #33707 (Errors in select statements not reported)
+--SKIPIF--
+<?php
+if (!extension_loaded('pdo') || !extension_loaded('pdo_oci')) die('skip not 
loaded');
+require dirname(__FILE__).'/../../pdo/tests/pdo_test.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+require 'ext/pdo/tests/pdo_test.inc';
+$db = PDOTest::test_factory('ext/pdo_oci/tests/common.phpt');
+$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
+
+$rs = $db->query('select blah from a_table_that_doesnt_exist');
+var_dump($rs);
+var_dump($db->errorInfo());
+
+--EXPECTF--
+bool(false)
+array(3) {
+  [0]=>
+  string(5) "HY000"
+  [1]=>
+  int(942)
+  [2]=>
+  string(%d) "OCIStmtExecute: ORA-00942: table or view does not exist
+ (%s:%d)"
+}
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/tests/bug41996.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/pdo_oci/tests/bug41996.phpt
diff -u php-src/ext/pdo_oci/tests/bug41996.phpt:1.1 
php-src/ext/pdo_oci/tests/bug41996.phpt:1.2
--- php-src/ext/pdo_oci/tests/bug41996.phpt:1.1 Mon Jul 21 17:17:58 2008
+++ php-src/ext/pdo_oci/tests/bug41996.phpt     Tue May 12 21:35:21 2009
@@ -2,7 +2,7 @@
 PDO OCI Bug #41996 (Problem accessing Oracle ROWID)
 --SKIPIF--
 <?php
-/* $Id: bug41996.phpt,v 1.1 2008/07/21 17:17:58 pajoye Exp $ */
+/* $Id: bug41996.phpt,v 1.2 2009/05/12 21:35:21 mbeccati Exp $ */
 if (!extension_loaded('pdo') || !extension_loaded('pdo_oci')) die('skip not 
loaded');
 require dirname(__FILE__).'/../../pdo/tests/pdo_test.inc';
 PDOTest::skip();
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/tests/pdo_oci_attr_case.phpt?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/pdo_oci/tests/pdo_oci_attr_case.phpt
diff -u php-src/ext/pdo_oci/tests/pdo_oci_attr_case.phpt:1.3 
php-src/ext/pdo_oci/tests/pdo_oci_attr_case.phpt:1.4
--- php-src/ext/pdo_oci/tests/pdo_oci_attr_case.phpt:1.3        Tue May 27 
13:16:27 2008
+++ php-src/ext/pdo_oci/tests/pdo_oci_attr_case.phpt    Tue May 12 21:35:21 2009
@@ -57,25 +57,25 @@
 Test 1 - Force column names to lower case
 int(2)
 array(1) {
-  [u"dummy"]=>
-  unicode(1) "X"
+  ["dummy"]=>
+  string(1) "X"
 }
 Test 2 - Leave column names as returned by the database driver
 int(0)
 array(1) {
-  [u"DUMMY"]=>
-  unicode(1) "X"
+  ["DUMMY"]=>
+  string(1) "X"
 }
 Test 3 - Force column names to upper case
 int(1)
 array(1) {
-  [u"DUMMY"]=>
-  unicode(1) "X"
+  ["DUMMY"]=>
+  string(1) "X"
 }
 Test 4 - Setting on statement has no effect.  Attempt lower case but get upper
 Mode desired is 2
 array(1) {
-  [u"DUMMY"]=>
-  unicode(1) "X"
+  ["DUMMY"]=>
+  string(1) "X"
 }
 Done
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/tests/pdo_oci_attr_client.phpt?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/pdo_oci/tests/pdo_oci_attr_client.phpt
diff -u php-src/ext/pdo_oci/tests/pdo_oci_attr_client.phpt:1.3 
php-src/ext/pdo_oci/tests/pdo_oci_attr_client.phpt:1.4
--- php-src/ext/pdo_oci/tests/pdo_oci_attr_client.phpt:1.3      Tue May 27 
13:16:27 2008
+++ php-src/ext/pdo_oci/tests/pdo_oci_attr_client.phpt  Tue May 12 21:35:21 2009
@@ -38,6 +38,6 @@
 
 ?>
 --EXPECTF--
-ATTR_CLIENT_VERSION: unicode(%d) "%d.%s"
+ATTR_CLIENT_VERSION: string(%d) "%d.%s"
 Version OK, so far as can be portably checked
 Done
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/tests/pdo_oci_attr_drivername.phpt?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/pdo_oci/tests/pdo_oci_attr_drivername.phpt
diff -u php-src/ext/pdo_oci/tests/pdo_oci_attr_drivername.phpt:1.3 
php-src/ext/pdo_oci/tests/pdo_oci_attr_drivername.phpt:1.4
--- php-src/ext/pdo_oci/tests/pdo_oci_attr_drivername.phpt:1.3  Tue May 27 
13:16:27 2008
+++ php-src/ext/pdo_oci/tests/pdo_oci_attr_drivername.phpt      Tue May 12 
21:35:21 2009
@@ -17,5 +17,5 @@
 echo "Done\n";
 ?>
 --EXPECT--
-unicode(3) "oci"
+string(3) "oci"
 Done
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/tests/pdo_oci_attr_nulls_1.phpt?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/pdo_oci/tests/pdo_oci_attr_nulls_1.phpt
diff -u php-src/ext/pdo_oci/tests/pdo_oci_attr_nulls_1.phpt:1.3 
php-src/ext/pdo_oci/tests/pdo_oci_attr_nulls_1.phpt:1.4
--- php-src/ext/pdo_oci/tests/pdo_oci_attr_nulls_1.phpt:1.3     Tue May 27 
13:16:27 2008
+++ php-src/ext/pdo_oci/tests/pdo_oci_attr_nulls_1.phpt Tue May 12 21:35:21 2009
@@ -56,6 +56,6 @@
 NULL
 NULL
 PDO::ATTR_ORACLE_NULLS: PDO::NULL_TO_STRING: int(2)
-unicode(0) ""
-unicode(0) ""
-Done
+string(0) ""
+string(0) ""
+Done
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/tests/pdo_oci_attr_server.phpt?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/pdo_oci/tests/pdo_oci_attr_server.phpt
diff -u php-src/ext/pdo_oci/tests/pdo_oci_attr_server.phpt:1.3 
php-src/ext/pdo_oci/tests/pdo_oci_attr_server.phpt:1.4
--- php-src/ext/pdo_oci/tests/pdo_oci_attr_server.phpt:1.3      Tue May 27 
13:16:27 2008
+++ php-src/ext/pdo_oci/tests/pdo_oci_attr_server.phpt  Tue May 12 21:35:21 2009
@@ -33,7 +33,7 @@
 ?>
 --EXPECTF--
 Test 1
-ATTR_SERVER_VERSION: unicode(%d) "%d.%d.%d.%d.%d"
+ATTR_SERVER_VERSION: string(%d) "%d.%d.%d.%d.%d"
 Test 2
 ATTR_SERVER_INFO
 Found 'Oracle' at position 0 as expected
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/tests/pdo_oci_quote1.phpt?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/pdo_oci/tests/pdo_oci_quote1.phpt
diff -u php-src/ext/pdo_oci/tests/pdo_oci_quote1.phpt:1.3 
php-src/ext/pdo_oci/tests/pdo_oci_quote1.phpt:1.4
--- php-src/ext/pdo_oci/tests/pdo_oci_quote1.phpt:1.3   Tue May 27 13:16:27 2008
+++ php-src/ext/pdo_oci/tests/pdo_oci_quote1.phpt       Tue May 12 21:35:21 2009
@@ -2,7 +2,6 @@
 Test PDO->quote() for PDO_OCI
 --SKIPIF--
 <?php
-die('skip triggers query errors');
 if (!extension_loaded('pdo') || !extension_loaded('pdo_oci')) die('skip not 
loaded');
 require(dirname(__FILE__).'/../../pdo/tests/pdo_test.inc');
 PDOTest::skip();
@@ -42,7 +41,7 @@
 ?>
 --EXPECTF--
 Unquoted : NULL
-Quoted   : unicode(2) "''"
+Quoted   : string(2) "''"
 array(1) {
   [0]=>
   array(1) {
@@ -50,8 +49,8 @@
     NULL
   }
 }
-Unquoted : unicode(0) ""
-Quoted   : unicode(2) "''"
+Unquoted : string(0) ""
+Quoted   : string(2) "''"
 array(1) {
   [0]=>
   array(1) {
@@ -59,106 +58,106 @@
     NULL
   }
 }
-Unquoted : unicode(1) "a"
-Quoted   : unicode(3) "'a'"
+Unquoted : string(1) "a"
+Quoted   : string(3) "'a'"
 array(1) {
   [0]=>
   array(1) {
     ["t"]=>
-    unicode(1) "a"
+    string(1) "a"
   }
 }
-Unquoted : unicode(2) "ab"
-Quoted   : unicode(4) "'ab'"
+Unquoted : string(2) "ab"
+Quoted   : string(4) "'ab'"
 array(1) {
   [0]=>
   array(1) {
     ["t"]=>
-    unicode(2) "ab"
+    string(2) "ab"
   }
 }
-Unquoted : unicode(3) "abc"
-Quoted   : unicode(5) "'abc'"
+Unquoted : string(3) "abc"
+Quoted   : string(5) "'abc'"
 array(1) {
   [0]=>
   array(1) {
     ["t"]=>
-    unicode(3) "abc"
+    string(3) "abc"
   }
 }
-Unquoted : unicode(5) "ab'cd"
-Quoted   : unicode(8) "'ab''cd'"
+Unquoted : string(5) "ab'cd"
+Quoted   : string(8) "'ab''cd'"
 array(1) {
   [0]=>
   array(1) {
     ["t"]=>
-    unicode(5) "ab'cd"
+    string(5) "ab'cd"
   }
 }
-Unquoted : unicode(4) "a\b
+Unquoted : string(4) "a\b
 "
-Quoted   : unicode(6) "'a\b
+Quoted   : string(6) "'a\b
 '"
 array(1) {
   [0]=>
   array(1) {
     ["t"]=>
-    unicode(4) "a\b
+    string(4) "a\b
 "
   }
 }
-Unquoted : unicode(1) "'"
-Quoted   : unicode(4) "''''"
+Unquoted : string(1) "'"
+Quoted   : string(4) "''''"
 array(1) {
   [0]=>
   array(1) {
     ["t"]=>
-    unicode(1) "'"
+    string(1) "'"
   }
 }
-Unquoted : unicode(2) "''"
-Quoted   : unicode(6) "''''''"
+Unquoted : string(2) "''"
+Quoted   : string(6) "''''''"
 array(1) {
   [0]=>
   array(1) {
     ["t"]=>
-    unicode(2) "''"
+    string(2) "''"
   }
 }
-Unquoted : unicode(2) "a'"
-Quoted   : unicode(5) "'a'''"
+Unquoted : string(2) "a'"
+Quoted   : string(5) "'a'''"
 array(1) {
   [0]=>
   array(1) {
     ["t"]=>
-    unicode(2) "a'"
+    string(2) "a'"
   }
 }
-Unquoted : unicode(2) "'z"
-Quoted   : unicode(5) "'''z'"
+Unquoted : string(2) "'z"
+Quoted   : string(5) "'''z'"
 array(1) {
   [0]=>
   array(1) {
     ["t"]=>
-    unicode(2) "'z"
+    string(2) "'z"
   }
 }
-Unquoted : unicode(4) "a''b"
-Quoted   : unicode(8) "'a''''b'"
+Unquoted : string(4) "a''b"
+Quoted   : string(8) "'a''''b'"
 array(1) {
   [0]=>
   array(1) {
     ["t"]=>
-    unicode(4) "a''b"
+    string(4) "a''b"
   }
 }
-Unquoted : unicode(1) """
-Quoted   : unicode(3) "'"'"
+Unquoted : string(1) """
+Quoted   : string(3) "'"'"
 array(1) {
   [0]=>
   array(1) {
     ["t"]=>
-    unicode(1) """
+    string(1) """
   }
 }
 Done
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/tests/pecl_bug_6364.phpt?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/pdo_oci/tests/pecl_bug_6364.phpt
diff -u php-src/ext/pdo_oci/tests/pecl_bug_6364.phpt:1.3 
php-src/ext/pdo_oci/tests/pecl_bug_6364.phpt:1.4
--- php-src/ext/pdo_oci/tests/pecl_bug_6364.phpt:1.3    Tue May 27 13:16:27 2008
+++ php-src/ext/pdo_oci/tests/pecl_bug_6364.phpt        Tue May 12 21:35:21 2009
@@ -44,21 +44,21 @@
 ?>
 
 --EXPECTF--
-unicode(4) "val4"
-unicode(4) "val5"
+string(4) "val4"
+string(4) "val5"
 array(10) {
   ["c1"]=>
-  unicode(2) "p1"
+  string(2) "p1"
   [0]=>
-  unicode(2) "p1"
+  string(2) "p1"
   ["c2"]=>
-  unicode(2) "p2"
+  string(2) "p2"
   [1]=>
-  unicode(2) "p2"
+  string(2) "p2"
   ["c3"]=>
-  unicode(2) "p3"
+  string(2) "p3"
   [2]=>
-  unicode(2) "p3"
+  string(2) "p3"
   ["c4"]=>
   NULL
   [3]=>

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

Reply via email to