sniper Fri Nov 25 10:40:15 2005 EDT Modified files: /php-src/ext/pdo pdo.c /php-src/ext/pdo_dblib pdo_dblib.c /php-src/ext/pdo_mysql pdo_mysql.c /php-src/ext/pdo_oci oci_statement.c pdo_oci.c php_pdo_oci_int.h /php-src/ext/pdo_pgsql pdo_pgsql.c /php-src/ext/pdo_sqlite pdo_sqlite.c /php-src/ext/sqlite sqlite.c /php-src/ext/xmlreader php_xmlreader.c Log: - Use right define: ZEND_MODULE_API_NO as these are PHP modules, not Zend extensions
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo.c?r1=1.67&r2=1.68&ty=u Index: php-src/ext/pdo/pdo.c diff -u php-src/ext/pdo/pdo.c:1.67 php-src/ext/pdo/pdo.c:1.68 --- php-src/ext/pdo/pdo.c:1.67 Thu Oct 6 15:32:27 2005 +++ php-src/ext/pdo/pdo.c Fri Nov 25 10:40:10 2005 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo.c,v 1.67 2005/10/06 19:32:27 helly Exp $ */ +/* $Id: pdo.c,v 1.68 2005/11/25 15:40:10 sniper Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -115,7 +115,7 @@ /* }}} */ /* {{{ pdo_functions[] */ -#if ZEND_EXTENSION_API_NO >= 220050617 +#if ZEND_MODULE_API_NO >= 20050922 static zend_module_dep pdo_deps[] = { #ifdef HAVE_SPL ZEND_MOD_REQUIRED("spl") @@ -127,7 +127,7 @@ /* {{{ pdo_module_entry */ zend_module_entry pdo_module_entry = { -#if ZEND_EXTENSION_API_NO >= 220050617 +#if ZEND_MODULE_API_NO >= 20050922 STANDARD_MODULE_HEADER_EX, NULL, pdo_deps, #else http://cvs.php.net/diff.php/php-src/ext/pdo_dblib/pdo_dblib.c?r1=1.9&r2=1.10&ty=u Index: php-src/ext/pdo_dblib/pdo_dblib.c diff -u php-src/ext/pdo_dblib/pdo_dblib.c:1.9 php-src/ext/pdo_dblib/pdo_dblib.c:1.10 --- php-src/ext/pdo_dblib/pdo_dblib.c:1.9 Tue Jul 26 23:12:43 2005 +++ php-src/ext/pdo_dblib/pdo_dblib.c Fri Nov 25 10:40:13 2005 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_dblib.c,v 1.9 2005/07/27 03:12:43 wez Exp $ */ +/* $Id: pdo_dblib.c,v 1.10 2005/11/25 15:40:13 sniper Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" @@ -38,7 +38,7 @@ {NULL, NULL, NULL} }; -#if ZEND_EXTENSION_API_NO >= 220050617 +#if ZEND_MODULE_API_NO >= 20050922 static zend_module_dep pdo_dblib_deps[] = { ZEND_MOD_REQUIRED("pdo") {NULL, NULL, NULL} @@ -46,7 +46,7 @@ #endif zend_module_entry pdo_dblib_module_entry = { -#if ZEND_EXTENSION_API_NO >= 220050617 +#if ZEND_MODULE_API_NO >= 20050922 STANDARD_MODULE_HEADER_EX, NULL, pdo_dblib_deps, #else http://cvs.php.net/diff.php/php-src/ext/pdo_mysql/pdo_mysql.c?r1=1.11&r2=1.12&ty=u Index: php-src/ext/pdo_mysql/pdo_mysql.c diff -u php-src/ext/pdo_mysql/pdo_mysql.c:1.11 php-src/ext/pdo_mysql/pdo_mysql.c:1.12 --- php-src/ext/pdo_mysql/pdo_mysql.c:1.11 Thu Oct 27 13:33:43 2005 +++ php-src/ext/pdo_mysql/pdo_mysql.c Fri Nov 25 10:40:13 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_mysql.c,v 1.11 2005/10/27 17:33:43 tony2001 Exp $ */ +/* $Id: pdo_mysql.c,v 1.12 2005/11/25 15:40:13 sniper Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -37,7 +37,7 @@ /* }}} */ /* {{{ pdo_mysql_functions[] */ -#if ZEND_EXTENSION_API_NO >= 220050617 +#if ZEND_MODULE_API_NO >= 20050922 static zend_module_dep pdo_mysql_deps[] = { ZEND_MOD_REQUIRED("pdo") {NULL, NULL, NULL} @@ -47,7 +47,7 @@ /* {{{ pdo_mysql_module_entry */ zend_module_entry pdo_mysql_module_entry = { -#if ZEND_EXTENSION_API_NO >= 220050617 +#if ZEND_MODULE_API_NO >= 20050922 STANDARD_MODULE_HEADER_EX, NULL, pdo_mysql_deps, #else http://cvs.php.net/diff.php/php-src/ext/pdo_oci/oci_statement.c?r1=1.17&r2=1.18&ty=u Index: php-src/ext/pdo_oci/oci_statement.c diff -u php-src/ext/pdo_oci/oci_statement.c:1.17 php-src/ext/pdo_oci/oci_statement.c:1.18 --- php-src/ext/pdo_oci/oci_statement.c:1.17 Fri Oct 28 11:01:47 2005 +++ php-src/ext/pdo_oci/oci_statement.c Fri Nov 25 10:40:13 2005 @@ -1,488 +1,488 @@ -/* - +----------------------------------------------------------------------+ - | PHP Version 5 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2005 The PHP Group | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.0 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.php.net/license/3_0.txt. | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | [EMAIL PROTECTED] so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: Wez Furlong <[EMAIL PROTECTED]> | - +----------------------------------------------------------------------+ -*/ - -/* $Id: oci_statement.c,v 1.17 2005/10/28 15:01:47 tony2001 Exp $ */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "php.h" -#include "php_ini.h" -#include "ext/standard/info.h" -#include "pdo/php_pdo.h" -#include "pdo/php_pdo_driver.h" -#include "php_pdo_oci.h" -#include "php_pdo_oci_int.h" -#include "Zend/zend_extensions.h" - -#define STMT_CALL(name, params) \ - S->last_err = name params; \ - S->last_err = _oci_error(S->err, stmt->dbh, stmt, #name, S->last_err, __FILE__, __LINE__ TSRMLS_CC); \ - if (S->last_err) { \ - return 0; \ - } - -#define STMT_CALL_MSG(name, msg, params) \ - S->last_err = name params; \ - S->last_err = _oci_error(S->err, stmt->dbh, stmt, #name ": " #msg, S->last_err, __FILE__, __LINE__ TSRMLS_CC); \ - if (S->last_err) { \ - return 0; \ - } - - -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) { - /* cancel server side resources for the statement if we didn't - * fetch it all */ - OCIStmtFetch(S->stmt, S->err, 0, OCI_FETCH_NEXT, OCI_DEFAULT); - - /* free the handle */ - OCIHandleFree(S->stmt, OCI_HTYPE_STMT); - S->stmt = NULL; - } - if (S->err) { - OCIHandleFree(S->err, OCI_HTYPE_ERROR); - S->err = NULL; - } - - /* need to ensure these go away now */ - if (BC) { - zend_hash_destroy(BC); - 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) { - efree(S->einfo.errmsg); - 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); - } - } - efree(S->cols); - S->cols = NULL; - } - efree(S); - - stmt->driver_data = NULL; - - return 1; -} /* }}} */ - -static int oci_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */ -{ - pdo_oci_stmt *S = (pdo_oci_stmt*)stmt->driver_data; - ub4 rowcount; - b4 mode; - - if (!S->stmt_type) { - STMT_CALL_MSG(OCIAttrGet, "OCI_ATTR_STMT_TYPE", - (S->stmt, OCI_HTYPE_STMT, &S->stmt_type, 0, OCI_ATTR_STMT_TYPE, S->err)); - } - - if (stmt->executed) { - /* ensure that we cancel the cursor from a previous fetch */ - OCIStmtFetch(S->stmt, S->err, 0, OCI_FETCH_NEXT, OCI_DEFAULT); - } - -#ifdef OCI_STMT_SCROLLABLE_READONLY /* needed for oci8 ? */ - if (S->exec_type == OCI_STMT_SCROLLABLE_READONLY) { - mode = OCI_STMT_SCROLLABLE_READONLY; - } else -#endif - if (stmt->dbh->auto_commit && !stmt->dbh->in_txn) { - mode = OCI_COMMIT_ON_SUCCESS; - } else { - mode = OCI_DEFAULT; - } - - STMT_CALL(OCIStmtExecute, (S->H->svc, S->stmt, S->err, - S->stmt_type == OCI_STMT_SELECT ? 0 : 1, 0, NULL, NULL, - mode)); - - if (!stmt->executed) { - ub4 colcount; - /* do first-time-only definition of bind/mapping stuff */ - - /* how many columns do we have ? */ - STMT_CALL_MSG(OCIAttrGet, "ATTR_PARAM_COUNT", - (S->stmt, OCI_HTYPE_STMT, &colcount, 0, OCI_ATTR_PARAM_COUNT, S->err)); - - stmt->column_count = (int)colcount; - - 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; - - return 1; -} /* }}} */ - -static sb4 oci_bind_input_cb(dvoid *ctx, OCIBind *bindp, ub4 iter, ub4 index, dvoid **bufpp, ub4 *alenp, ub1 *piecep, dvoid **indpp) /* {{{ */ -{ - struct pdo_bound_param_data *param = (struct pdo_bound_param_data*)ctx; - pdo_oci_bound_param *P = (pdo_oci_bound_param*)param->driver_data; - TSRMLS_FETCH(); - - if (!param || !param->parameter) { - 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)) { - /* insert a NULL value into the column */ - P->indicator = -1; /* NULL */ - *bufpp = 0; - *alenp = -1; - } else if (!P->thing) { - /* regular string bind */ - 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; - return OCI_CONTINUE; -} /* }}} */ - -static sb4 oci_bind_output_cb(dvoid *ctx, OCIBind *bindp, ub4 iter, ub4 index, dvoid **bufpp, ub4 **alenpp, ub1 *piecep, dvoid **indpp, ub2 **rcodepp) /* {{{ */ -{ - struct pdo_bound_param_data *param = (struct pdo_bound_param_data*)ctx; - pdo_oci_bound_param *P = (pdo_oci_bound_param*)param->driver_data; - TSRMLS_FETCH(); - - if (!param || !param->parameter) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "param is NULL in oci_bind_output_cb; this should not happen"); - return OCI_ERROR; - } - - if (Z_TYPE_P(param->parameter) == IS_OBJECT || Z_TYPE_P(param->parameter) == IS_RESOURCE) { - return OCI_CONTINUE; - } - - convert_to_string(param->parameter); - zval_dtor(param->parameter); - - Z_STRLEN_P(param->parameter) = param->max_value_len; - Z_STRVAL_P(param->parameter) = emalloc(Z_STRLEN_P(param->parameter)+1); - P->used_for_output = 1; - - P->actual_len = Z_STRLEN_P(param->parameter); - *alenpp = &P->actual_len; - *bufpp = Z_STRVAL_P(param->parameter); - *piecep = OCI_ONE_PIECE; - *rcodepp = &P->retcode; - *indpp = &P->indicator; - - return OCI_CONTINUE; -} /* }}} */ - -static int oci_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *param, enum pdo_param_event event_type TSRMLS_DC) /* {{{ */ -{ - pdo_oci_stmt *S = (pdo_oci_stmt*)stmt->driver_data; - - /* we're only interested in parameters for prepared SQL right now */ - if (param->is_param) { - pdo_oci_bound_param *P; - sb4 value_sz = -1; - - P = (pdo_oci_bound_param*)param->driver_data; - - switch (event_type) { - case PDO_PARAM_EVT_FREE: - P = param->driver_data; - if (P) { - efree(P); - } - break; - - 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_STR: - default: - P->oci_type = SQLT_CHR; - value_sz = param->max_value_len + 1; - if (param->max_value_len == 0) { - value_sz = 4000; /* 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, - param->namelen, 0, value_sz, P->oci_type, - &P->indicator, 0, &P->retcode, 0, 0, - OCI_DATA_AT_EXEC)); - } else { - STMT_CALL(OCIBindByPos, (S->stmt, - &P->bind, S->err, param->paramno+1, - 0, value_sz, P->oci_type, - &P->indicator, 0, &P->retcode, 0, 0, - OCI_DATA_AT_EXEC)); - } - - STMT_CALL(OCIBindDynamic, (P->bind, - S->err, - param, oci_bind_input_cb, - param, oci_bind_output_cb)); - - return 1; - - case PDO_PARAM_EVT_EXEC_PRE: - P->indicator = 0; - P->used_for_output = 0; - return 1; - - case PDO_PARAM_EVT_EXEC_POST: - /* fixup stuff set in motion in oci_bind_output_cb */ - if (P->used_for_output) { - if (P->indicator == -1) { - /* set up a NULL value */ - if (Z_TYPE_P(param->parameter) == IS_STRING -#if ZEND_EXTENSION_API_NO < 220040718 - && Z_STRVAL_P(param->parameter) != empty_string -#endif - ) { - /* OCI likes to stick non-terminated strings in things */ - *Z_STRVAL_P(param->parameter) = '\0'; - } - zval_dtor(param->parameter); - ZVAL_NULL(param->parameter); - } else if (Z_TYPE_P(param->parameter) == IS_STRING -#if ZEND_EXTENSION_API_NO < 220040718 - && Z_STRVAL_P(param->parameter) != empty_string -#endif - ) { - Z_STRLEN_P(param->parameter) = P->actual_len; - Z_STRVAL_P(param->parameter) = erealloc(Z_STRVAL_P(param->parameter), P->actual_len+1); - Z_STRVAL_P(param->parameter)[P->actual_len] = '\0'; - } - } - - return 1; - } - } - - return 1; -} /* }}} */ - -static int oci_stmt_fetch(pdo_stmt_t *stmt, enum pdo_fetch_orientation ori, long offset TSRMLS_DC) /* {{{ */ -{ -#if HAVE_OCISTMTFETCH2 - ub4 ociori; -#endif - pdo_oci_stmt *S = (pdo_oci_stmt*)stmt->driver_data; - -#if HAVE_OCISTMTFETCH2 - switch (ori) { - case PDO_FETCH_ORI_NEXT: ociori = OCI_FETCH_NEXT; break; - case PDO_FETCH_ORI_PRIOR: ociori = OCI_FETCH_PRIOR; break; - case PDO_FETCH_ORI_FIRST: ociori = OCI_FETCH_FIRST; break; - case PDO_FETCH_ORI_LAST: ociori = OCI_FETCH_LAST; break; - case PDO_FETCH_ORI_ABS: ociori = OCI_FETCH_ABSOLUTE; break; - case PDO_FETCH_ORI_REL: ociori = OCI_FETCH_RELATIVE; break; - } - S->last_err = OCIStmtFetch2(S->stmt, S->err, 1, ociori, offset, OCI_DEFAULT); -#else - S->last_err = OCIStmtFetch(S->stmt, S->err, 1, OCI_FETCH_NEXT, OCI_DEFAULT); -#endif - - if (S->last_err == OCI_NO_DATA) { - /* no (more) data */ - return 0; - } - - if (S->last_err == OCI_NEED_DATA) { - oci_stmt_error("OCI_NEED_DATA"); - return 0; - } - - if (S->last_err == OCI_SUCCESS_WITH_INFO || S->last_err == OCI_SUCCESS) { - return 1; - } - - oci_stmt_error("OCIStmtFetch"); - - return 0; -} /* }}} */ - -static int oci_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC) /* {{{ */ -{ - pdo_oci_stmt *S = (pdo_oci_stmt*)stmt->driver_data; - OCIParam *param = NULL; - text *colname; - ub2 dtype, data_size, scale, precis; - ub4 namelen; - struct pdo_column_data *col = &stmt->columns[colno]; - zend_bool dyn = FALSE; - - /* describe the column */ - STMT_CALL(OCIParamGet, (S->stmt, OCI_HTYPE_STMT, S->err, (dvoid*)¶m, colno+1)); - - /* what type ? */ - STMT_CALL_MSG(OCIAttrGet, "OCI_ATTR_DATA_TYPE", - (param, OCI_DTYPE_PARAM, &dtype, 0, OCI_ATTR_DATA_TYPE, S->err)); - - /* how big ? */ - STMT_CALL_MSG(OCIAttrGet, "OCI_ATTR_DATA_SIZE", - (param, OCI_DTYPE_PARAM, &data_size, 0, OCI_ATTR_DATA_SIZE, S->err)); - - /* scale ? */ - STMT_CALL_MSG(OCIAttrGet, "OCI_ATTR_SCALE", - (param, OCI_DTYPE_PARAM, &scale, 0, OCI_ATTR_SCALE, S->err)); - - /* precision ? */ - STMT_CALL_MSG(OCIAttrGet, "OCI_ATTR_PRECISION", - (param, OCI_DTYPE_PARAM, &precis, 0, OCI_ATTR_PRECISION, S->err)); - - /* name ? */ - STMT_CALL_MSG(OCIAttrGet, "OCI_ATTR_NAME", - (param, OCI_DTYPE_PARAM, &colname, &namelen, OCI_ATTR_NAME, S->err)); - - col->precision = scale; - col->maxlen = data_size; - col->namelen = namelen; - col->name = estrndup(colname, namelen); - - /* 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 { - dtype = SQLT_CHR; - } - S->cols[colno].datalen = 512; /* XXX should be INT_MAX and fetched by pieces */ - S->cols[colno].data = emalloc(S->cols[colno].datalen + 1); - col->param_type = PDO_PARAM_STR; - break; - - case SQLT_BIN: - default: - dyn = FALSE; - if (dtype == SQLT_DAT || dtype == SQLT_NUM -#ifdef SQLT_TIMESTAMP - || dtype == SQLT_TIMESTAMP -#endif -#ifdef SQLT_TIMESTAMP_TZ - || dtype == SQLT_TIMESTAMP_TZ -#endif - ) { - /* should be big enough for most date formats and numbers */ - S->cols[colno].datalen = 512; - } else { - S->cols[colno].datalen = col->maxlen; - } - if (dtype == SQLT_BIN) { - S->cols[colno].datalen *= 3; - } - S->cols[colno].data = emalloc(S->cols[colno].datalen + 1); - dtype = SQLT_CHR; - - /* returning data as a string */ - 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)); - } - - return 1; -} /* }}} */ - -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; - pdo_oci_column *C = &S->cols[colno]; - - /* check the indicator to ensure that the data is intact */ - if (C->indicator == -1) { - /* A NULL value */ - *ptr = NULL; - *len = 0; - return 1; - } else if (C->indicator == 0) { - /* it was stored perfectly */ - *ptr = C->data; - *len = C->fetched_len; - return 1; - } else { - /* it was truncated */ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "column %d data was too large for buffer and was truncated to fit it", colno); - - *ptr = C->data; - *len = C->fetched_len; - return 1; - } -} /* }}} */ - -struct pdo_stmt_methods oci_stmt_methods = { - oci_stmt_dtor, - oci_stmt_execute, - oci_stmt_fetch, - oci_stmt_describe, - oci_stmt_get_col, - oci_stmt_param_hook -}; - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: noet sw=4 ts=4 fdm=marker - * vim<600: noet sw=4 ts=4 - */ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2005 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.0 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_0.txt. | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | [EMAIL PROTECTED] so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: Wez Furlong <[EMAIL PROTECTED]> | + +----------------------------------------------------------------------+ +*/ + +/* $Id: oci_statement.c,v 1.18 2005/11/25 15:40:13 sniper Exp $ */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "php.h" +#include "php_ini.h" +#include "ext/standard/info.h" +#include "pdo/php_pdo.h" +#include "pdo/php_pdo_driver.h" +#include "php_pdo_oci.h" +#include "php_pdo_oci_int.h" +#include "Zend/zend_extensions.h" + +#define STMT_CALL(name, params) \ + S->last_err = name params; \ + S->last_err = _oci_error(S->err, stmt->dbh, stmt, #name, S->last_err, __FILE__, __LINE__ TSRMLS_CC); \ + if (S->last_err) { \ + return 0; \ + } + +#define STMT_CALL_MSG(name, msg, params) \ + S->last_err = name params; \ + S->last_err = _oci_error(S->err, stmt->dbh, stmt, #name ": " #msg, S->last_err, __FILE__, __LINE__ TSRMLS_CC); \ + if (S->last_err) { \ + return 0; \ + } + + +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) { + /* cancel server side resources for the statement if we didn't + * fetch it all */ + OCIStmtFetch(S->stmt, S->err, 0, OCI_FETCH_NEXT, OCI_DEFAULT); + + /* free the handle */ + OCIHandleFree(S->stmt, OCI_HTYPE_STMT); + S->stmt = NULL; + } + if (S->err) { + OCIHandleFree(S->err, OCI_HTYPE_ERROR); + S->err = NULL; + } + + /* need to ensure these go away now */ + if (BC) { + zend_hash_destroy(BC); + 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) { + efree(S->einfo.errmsg); + 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); + } + } + efree(S->cols); + S->cols = NULL; + } + efree(S); + + stmt->driver_data = NULL; + + return 1; +} /* }}} */ + +static int oci_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */ +{ + pdo_oci_stmt *S = (pdo_oci_stmt*)stmt->driver_data; + ub4 rowcount; + b4 mode; + + if (!S->stmt_type) { + STMT_CALL_MSG(OCIAttrGet, "OCI_ATTR_STMT_TYPE", + (S->stmt, OCI_HTYPE_STMT, &S->stmt_type, 0, OCI_ATTR_STMT_TYPE, S->err)); + } + + if (stmt->executed) { + /* ensure that we cancel the cursor from a previous fetch */ + OCIStmtFetch(S->stmt, S->err, 0, OCI_FETCH_NEXT, OCI_DEFAULT); + } + +#ifdef OCI_STMT_SCROLLABLE_READONLY /* needed for oci8 ? */ + if (S->exec_type == OCI_STMT_SCROLLABLE_READONLY) { + mode = OCI_STMT_SCROLLABLE_READONLY; + } else +#endif + if (stmt->dbh->auto_commit && !stmt->dbh->in_txn) { + mode = OCI_COMMIT_ON_SUCCESS; + } else { + mode = OCI_DEFAULT; + } + + STMT_CALL(OCIStmtExecute, (S->H->svc, S->stmt, S->err, + S->stmt_type == OCI_STMT_SELECT ? 0 : 1, 0, NULL, NULL, + mode)); + + if (!stmt->executed) { + ub4 colcount; + /* do first-time-only definition of bind/mapping stuff */ + + /* how many columns do we have ? */ + STMT_CALL_MSG(OCIAttrGet, "ATTR_PARAM_COUNT", + (S->stmt, OCI_HTYPE_STMT, &colcount, 0, OCI_ATTR_PARAM_COUNT, S->err)); + + stmt->column_count = (int)colcount; + + 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; + + return 1; +} /* }}} */ + +static sb4 oci_bind_input_cb(dvoid *ctx, OCIBind *bindp, ub4 iter, ub4 index, dvoid **bufpp, ub4 *alenp, ub1 *piecep, dvoid **indpp) /* {{{ */ +{ + struct pdo_bound_param_data *param = (struct pdo_bound_param_data*)ctx; + pdo_oci_bound_param *P = (pdo_oci_bound_param*)param->driver_data; + TSRMLS_FETCH(); + + if (!param || !param->parameter) { + 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)) { + /* insert a NULL value into the column */ + P->indicator = -1; /* NULL */ + *bufpp = 0; + *alenp = -1; + } else if (!P->thing) { + /* regular string bind */ + 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; + return OCI_CONTINUE; +} /* }}} */ + +static sb4 oci_bind_output_cb(dvoid *ctx, OCIBind *bindp, ub4 iter, ub4 index, dvoid **bufpp, ub4 **alenpp, ub1 *piecep, dvoid **indpp, ub2 **rcodepp) /* {{{ */ +{ + struct pdo_bound_param_data *param = (struct pdo_bound_param_data*)ctx; + pdo_oci_bound_param *P = (pdo_oci_bound_param*)param->driver_data; + TSRMLS_FETCH(); + + if (!param || !param->parameter) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "param is NULL in oci_bind_output_cb; this should not happen"); + return OCI_ERROR; + } + + if (Z_TYPE_P(param->parameter) == IS_OBJECT || Z_TYPE_P(param->parameter) == IS_RESOURCE) { + return OCI_CONTINUE; + } + + convert_to_string(param->parameter); + zval_dtor(param->parameter); + + Z_STRLEN_P(param->parameter) = param->max_value_len; + Z_STRVAL_P(param->parameter) = emalloc(Z_STRLEN_P(param->parameter)+1); + P->used_for_output = 1; + + P->actual_len = Z_STRLEN_P(param->parameter); + *alenpp = &P->actual_len; + *bufpp = Z_STRVAL_P(param->parameter); + *piecep = OCI_ONE_PIECE; + *rcodepp = &P->retcode; + *indpp = &P->indicator; + + return OCI_CONTINUE; +} /* }}} */ + +static int oci_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *param, enum pdo_param_event event_type TSRMLS_DC) /* {{{ */ +{ + pdo_oci_stmt *S = (pdo_oci_stmt*)stmt->driver_data; + + /* we're only interested in parameters for prepared SQL right now */ + if (param->is_param) { + pdo_oci_bound_param *P; + sb4 value_sz = -1; + + P = (pdo_oci_bound_param*)param->driver_data; + + switch (event_type) { + case PDO_PARAM_EVT_FREE: + P = param->driver_data; + if (P) { + efree(P); + } + break; + + 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_STR: + default: + P->oci_type = SQLT_CHR; + value_sz = param->max_value_len + 1; + if (param->max_value_len == 0) { + value_sz = 4000; /* 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, + param->namelen, 0, value_sz, P->oci_type, + &P->indicator, 0, &P->retcode, 0, 0, + OCI_DATA_AT_EXEC)); + } else { + STMT_CALL(OCIBindByPos, (S->stmt, + &P->bind, S->err, param->paramno+1, + 0, value_sz, P->oci_type, + &P->indicator, 0, &P->retcode, 0, 0, + OCI_DATA_AT_EXEC)); + } + + STMT_CALL(OCIBindDynamic, (P->bind, + S->err, + param, oci_bind_input_cb, + param, oci_bind_output_cb)); + + return 1; + + case PDO_PARAM_EVT_EXEC_PRE: + P->indicator = 0; + P->used_for_output = 0; + return 1; + + case PDO_PARAM_EVT_EXEC_POST: + /* fixup stuff set in motion in oci_bind_output_cb */ + if (P->used_for_output) { + if (P->indicator == -1) { + /* set up a NULL value */ + if (Z_TYPE_P(param->parameter) == IS_STRING +#if ZEND_EXTENSION_API_NO < 220040718 + && Z_STRVAL_P(param->parameter) != empty_string +#endif + ) { + /* OCI likes to stick non-terminated strings in things */ + *Z_STRVAL_P(param->parameter) = '\0'; + } + zval_dtor(param->parameter); + ZVAL_NULL(param->parameter); + } else if (Z_TYPE_P(param->parameter) == IS_STRING +#if ZEND_EXTENSION_API_NO < 220040718 + && Z_STRVAL_P(param->parameter) != empty_string +#endif + ) { + Z_STRLEN_P(param->parameter) = P->actual_len; + Z_STRVAL_P(param->parameter) = erealloc(Z_STRVAL_P(param->parameter), P->actual_len+1); + Z_STRVAL_P(param->parameter)[P->actual_len] = '\0'; + } + } + + return 1; + } + } + + return 1; +} /* }}} */ + +static int oci_stmt_fetch(pdo_stmt_t *stmt, enum pdo_fetch_orientation ori, long offset TSRMLS_DC) /* {{{ */ +{ +#if HAVE_OCISTMTFETCH2 + ub4 ociori; +#endif + pdo_oci_stmt *S = (pdo_oci_stmt*)stmt->driver_data; + +#if HAVE_OCISTMTFETCH2 + switch (ori) { + case PDO_FETCH_ORI_NEXT: ociori = OCI_FETCH_NEXT; break; + case PDO_FETCH_ORI_PRIOR: ociori = OCI_FETCH_PRIOR; break; + case PDO_FETCH_ORI_FIRST: ociori = OCI_FETCH_FIRST; break; + case PDO_FETCH_ORI_LAST: ociori = OCI_FETCH_LAST; break; + case PDO_FETCH_ORI_ABS: ociori = OCI_FETCH_ABSOLUTE; break; + case PDO_FETCH_ORI_REL: ociori = OCI_FETCH_RELATIVE; break; + } + S->last_err = OCIStmtFetch2(S->stmt, S->err, 1, ociori, offset, OCI_DEFAULT); +#else + S->last_err = OCIStmtFetch(S->stmt, S->err, 1, OCI_FETCH_NEXT, OCI_DEFAULT); +#endif + + if (S->last_err == OCI_NO_DATA) { + /* no (more) data */ + return 0; + } + + if (S->last_err == OCI_NEED_DATA) { + oci_stmt_error("OCI_NEED_DATA"); + return 0; + } + + if (S->last_err == OCI_SUCCESS_WITH_INFO || S->last_err == OCI_SUCCESS) { + return 1; + } + + oci_stmt_error("OCIStmtFetch"); + + return 0; +} /* }}} */ + +static int oci_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC) /* {{{ */ +{ + pdo_oci_stmt *S = (pdo_oci_stmt*)stmt->driver_data; + OCIParam *param = NULL; + text *colname; + ub2 dtype, data_size, scale, precis; + ub4 namelen; + struct pdo_column_data *col = &stmt->columns[colno]; + zend_bool dyn = FALSE; + + /* describe the column */ + STMT_CALL(OCIParamGet, (S->stmt, OCI_HTYPE_STMT, S->err, (dvoid*)¶m, colno+1)); + + /* what type ? */ + STMT_CALL_MSG(OCIAttrGet, "OCI_ATTR_DATA_TYPE", + (param, OCI_DTYPE_PARAM, &dtype, 0, OCI_ATTR_DATA_TYPE, S->err)); + + /* how big ? */ + STMT_CALL_MSG(OCIAttrGet, "OCI_ATTR_DATA_SIZE", + (param, OCI_DTYPE_PARAM, &data_size, 0, OCI_ATTR_DATA_SIZE, S->err)); + + /* scale ? */ + STMT_CALL_MSG(OCIAttrGet, "OCI_ATTR_SCALE", + (param, OCI_DTYPE_PARAM, &scale, 0, OCI_ATTR_SCALE, S->err)); + + /* precision ? */ + STMT_CALL_MSG(OCIAttrGet, "OCI_ATTR_PRECISION", + (param, OCI_DTYPE_PARAM, &precis, 0, OCI_ATTR_PRECISION, S->err)); + + /* name ? */ + STMT_CALL_MSG(OCIAttrGet, "OCI_ATTR_NAME", + (param, OCI_DTYPE_PARAM, &colname, &namelen, OCI_ATTR_NAME, S->err)); + + col->precision = scale; + col->maxlen = data_size; + col->namelen = namelen; + col->name = estrndup(colname, namelen); + + /* 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 { + dtype = SQLT_CHR; + } + S->cols[colno].datalen = 512; /* XXX should be INT_MAX and fetched by pieces */ + S->cols[colno].data = emalloc(S->cols[colno].datalen + 1); + col->param_type = PDO_PARAM_STR; + break; + + case SQLT_BIN: + default: + dyn = FALSE; + if (dtype == SQLT_DAT || dtype == SQLT_NUM +#ifdef SQLT_TIMESTAMP + || dtype == SQLT_TIMESTAMP +#endif +#ifdef SQLT_TIMESTAMP_TZ + || dtype == SQLT_TIMESTAMP_TZ +#endif + ) { + /* should be big enough for most date formats and numbers */ + S->cols[colno].datalen = 512; + } else { + S->cols[colno].datalen = col->maxlen; + } + if (dtype == SQLT_BIN) { + S->cols[colno].datalen *= 3; + } + S->cols[colno].data = emalloc(S->cols[colno].datalen + 1); + dtype = SQLT_CHR; + + /* returning data as a string */ + 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)); + } + + return 1; +} /* }}} */ + +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; + pdo_oci_column *C = &S->cols[colno]; + + /* check the indicator to ensure that the data is intact */ + if (C->indicator == -1) { + /* A NULL value */ + *ptr = NULL; + *len = 0; + return 1; + } else if (C->indicator == 0) { + /* it was stored perfectly */ + *ptr = C->data; + *len = C->fetched_len; + return 1; + } else { + /* it was truncated */ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "column %d data was too large for buffer and was truncated to fit it", colno); + + *ptr = C->data; + *len = C->fetched_len; + return 1; + } +} /* }}} */ + +struct pdo_stmt_methods oci_stmt_methods = { + oci_stmt_dtor, + oci_stmt_execute, + oci_stmt_fetch, + oci_stmt_describe, + oci_stmt_get_col, + oci_stmt_param_hook +}; + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: noet sw=4 ts=4 fdm=marker + * vim<600: noet sw=4 ts=4 + */ http://cvs.php.net/diff.php/php-src/ext/pdo_oci/pdo_oci.c?r1=1.5&r2=1.6&ty=u Index: php-src/ext/pdo_oci/pdo_oci.c diff -u php-src/ext/pdo_oci/pdo_oci.c:1.5 php-src/ext/pdo_oci/pdo_oci.c:1.6 --- php-src/ext/pdo_oci/pdo_oci.c:1.5 Tue Jul 26 23:48:08 2005 +++ php-src/ext/pdo_oci/pdo_oci.c Fri Nov 25 10:40:13 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_oci.c,v 1.5 2005/07/27 03:48:08 wez Exp $ */ +/* $Id: pdo_oci.c,v 1.6 2005/11/25 15:40:13 sniper Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -38,7 +38,7 @@ /* {{{ pdo_oci_module_entry */ -#if ZEND_EXTENSION_API_NO >= 220050617 +#if ZEND_MODULE_API_NO >= 20050922 static zend_module_dep pdo_oci_deps[] = { ZEND_MOD_REQUIRED("pdo") {NULL, NULL, NULL} @@ -46,7 +46,7 @@ #endif zend_module_entry pdo_oci_module_entry = { -#if ZEND_EXTENSION_API_NO >= 220050617 +#if ZEND_MODULE_API_NO >= 20050922 STANDARD_MODULE_HEADER_EX, NULL, pdo_oci_deps, #else http://cvs.php.net/diff.php/php-src/ext/pdo_oci/php_pdo_oci_int.h?r1=1.4&r2=1.5&ty=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.4 php-src/ext/pdo_oci/php_pdo_oci_int.h:1.5 --- php-src/ext/pdo_oci/php_pdo_oci_int.h:1.4 Mon Jul 11 22:43:39 2005 +++ php-src/ext/pdo_oci/php_pdo_oci_int.h Fri Nov 25 10:40:13 2005 @@ -1,91 +1,91 @@ -/* - +----------------------------------------------------------------------+ - | PHP Version 5 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2005 The PHP Group | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.0 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.php.net/license/3_0.txt. | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | [EMAIL PROTECTED] so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: Wez Furlong <[EMAIL PROTECTED]> | - +----------------------------------------------------------------------+ -*/ - -/* $Id: php_pdo_oci_int.h,v 1.4 2005/07/12 02:43:39 wez Exp $ */ - -#include <oci.h> - -typedef struct { - const char *file; - int line; - sb4 errcode; - char *errmsg; -} pdo_oci_error_info; - -/* stuff we use in an OCI database handle */ -typedef struct { - OCIServer *server; - OCISession *session; - OCIEnv *env; - OCIError *err; - OCISvcCtx *svc; - /* OCI9; 0 == use NLS_LANG */ - ub2 charset; - sword last_err; - - unsigned attached:1; - unsigned _reserved:31; - - pdo_oci_error_info einfo; -} pdo_oci_db_handle; - -typedef struct { - OCIDefine *def; - ub2 fetched_len; - ub2 retcode; - sb2 indicator; - - char *data; - unsigned long datalen; - -} pdo_oci_column; - -typedef struct { - pdo_oci_db_handle *H; - OCIStmt *stmt; - OCIError *err; - sword last_err; - ub2 stmt_type; - ub4 exec_type; - pdo_oci_column *cols; - pdo_oci_error_info einfo; -} pdo_oci_stmt; - -typedef struct { - OCIBind *bind; /* allocated by OCI */ - sb2 oci_type; - sb2 indicator; - ub2 retcode; - - ub4 actual_len; - - dvoid *thing; /* for LOBS, REFCURSORS etc. */ - - unsigned used_for_output; -} pdo_oci_bound_param; - -extern const ub4 PDO_OCI_INIT_MODE; -extern pdo_driver_t pdo_oci_driver; -extern OCIEnv *pdo_oci_Env; - -ub4 _oci_error(OCIError *err, pdo_dbh_t *dbh, pdo_stmt_t *stmt, char *what, sword status, const char *file, int line TSRMLS_DC); -#define oci_drv_error(w) _oci_error(H->err, dbh, NULL, w, H->last_err, __FILE__, __LINE__ TSRMLS_CC) -#define oci_stmt_error(w) _oci_error(S->err, stmt->dbh, stmt, w, S->last_err, __FILE__, __LINE__ TSRMLS_CC) - -extern struct pdo_stmt_methods oci_stmt_methods; - +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2005 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.0 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_0.txt. | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | [EMAIL PROTECTED] so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: Wez Furlong <[EMAIL PROTECTED]> | + +----------------------------------------------------------------------+ +*/ + +/* $Id: php_pdo_oci_int.h,v 1.5 2005/11/25 15:40:13 sniper Exp $ */ + +#include <oci.h> + +typedef struct { + const char *file; + int line; + sb4 errcode; + char *errmsg; +} pdo_oci_error_info; + +/* stuff we use in an OCI database handle */ +typedef struct { + OCIServer *server; + OCISession *session; + OCIEnv *env; + OCIError *err; + OCISvcCtx *svc; + /* OCI9; 0 == use NLS_LANG */ + ub2 charset; + sword last_err; + + unsigned attached:1; + unsigned _reserved:31; + + pdo_oci_error_info einfo; +} pdo_oci_db_handle; + +typedef struct { + OCIDefine *def; + ub2 fetched_len; + ub2 retcode; + sb2 indicator; + + char *data; + unsigned long datalen; + +} pdo_oci_column; + +typedef struct { + pdo_oci_db_handle *H; + OCIStmt *stmt; + OCIError *err; + sword last_err; + ub2 stmt_type; + ub4 exec_type; + pdo_oci_column *cols; + pdo_oci_error_info einfo; +} pdo_oci_stmt; + +typedef struct { + OCIBind *bind; /* allocated by OCI */ + sb2 oci_type; + sb2 indicator; + ub2 retcode; + + ub4 actual_len; + + dvoid *thing; /* for LOBS, REFCURSORS etc. */ + + unsigned used_for_output; +} pdo_oci_bound_param; + +extern const ub4 PDO_OCI_INIT_MODE; +extern pdo_driver_t pdo_oci_driver; +extern OCIEnv *pdo_oci_Env; + +ub4 _oci_error(OCIError *err, pdo_dbh_t *dbh, pdo_stmt_t *stmt, char *what, sword status, const char *file, int line TSRMLS_DC); +#define oci_drv_error(w) _oci_error(H->err, dbh, NULL, w, H->last_err, __FILE__, __LINE__ TSRMLS_CC) +#define oci_stmt_error(w) _oci_error(S->err, stmt->dbh, stmt, w, S->last_err, __FILE__, __LINE__ TSRMLS_CC) + +extern struct pdo_stmt_methods oci_stmt_methods; + http://cvs.php.net/diff.php/php-src/ext/pdo_pgsql/pdo_pgsql.c?r1=1.9&r2=1.10&ty=u Index: php-src/ext/pdo_pgsql/pdo_pgsql.c diff -u php-src/ext/pdo_pgsql/pdo_pgsql.c:1.9 php-src/ext/pdo_pgsql/pdo_pgsql.c:1.10 --- php-src/ext/pdo_pgsql/pdo_pgsql.c:1.9 Mon Sep 19 20:46:07 2005 +++ php-src/ext/pdo_pgsql/pdo_pgsql.c Fri Nov 25 10:40:13 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_pgsql.c,v 1.9 2005/09/20 00:46:07 iliaa Exp $ */ +/* $Id: pdo_pgsql.c,v 1.10 2005/11/25 15:40:13 sniper Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -38,7 +38,7 @@ /* {{{ pdo_sqlite_deps */ -#if ZEND_EXTENSION_API_NO >= 220050617 +#if ZEND_MODULE_API_NO >= 20050922 static zend_module_dep pdo_pgsql_deps[] = { ZEND_MOD_REQUIRED("pdo") {NULL, NULL, NULL} @@ -48,7 +48,7 @@ /* {{{ pdo_pgsql_module_entry */ zend_module_entry pdo_pgsql_module_entry = { -#if ZEND_EXTENSION_API_NO >= 220050617 +#if ZEND_MODULE_API_NO >= 20050922 STANDARD_MODULE_HEADER_EX, NULL, pdo_pgsql_deps, #else http://cvs.php.net/diff.php/php-src/ext/pdo_sqlite/pdo_sqlite.c?r1=1.10&r2=1.11&ty=u Index: php-src/ext/pdo_sqlite/pdo_sqlite.c diff -u php-src/ext/pdo_sqlite/pdo_sqlite.c:1.10 php-src/ext/pdo_sqlite/pdo_sqlite.c:1.11 --- php-src/ext/pdo_sqlite/pdo_sqlite.c:1.10 Wed Jul 27 00:07:11 2005 +++ php-src/ext/pdo_sqlite/pdo_sqlite.c Fri Nov 25 10:40:14 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_sqlite.c,v 1.10 2005/07/27 04:07:11 wez Exp $ */ +/* $Id: pdo_sqlite.c,v 1.11 2005/11/25 15:40:14 sniper Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -41,7 +41,7 @@ /* {{{ pdo_sqlite_deps */ -#if ZEND_EXTENSION_API_NO >= 220050617 +#if ZEND_MODULE_API_NO >= 20050922 static zend_module_dep pdo_sqlite_deps[] = { ZEND_MOD_REQUIRED("pdo") {NULL, NULL, NULL} @@ -52,7 +52,7 @@ /* {{{ pdo_sqlite_module_entry */ zend_module_entry pdo_sqlite_module_entry = { -#if ZEND_EXTENSION_API_NO >= 220050617 +#if ZEND_MODULE_API_NO >= 20050922 STANDARD_MODULE_HEADER_EX, NULL, pdo_sqlite_deps, #else @@ -100,7 +100,7 @@ "(bundled) " #endif PHP_PDO_SQLITE_MODULE_VERSION - " $Id: pdo_sqlite.c,v 1.10 2005/07/27 04:07:11 wez Exp $"); + " $Id: pdo_sqlite.c,v 1.11 2005/11/25 15:40:14 sniper Exp $"); php_info_print_table_row(2, "SQLite Library", sqlite3_libversion()); php_info_print_table_end(); } http://cvs.php.net/diff.php/php-src/ext/sqlite/sqlite.c?r1=1.177&r2=1.178&ty=u Index: php-src/ext/sqlite/sqlite.c diff -u php-src/ext/sqlite/sqlite.c:1.177 php-src/ext/sqlite/sqlite.c:1.178 --- php-src/ext/sqlite/sqlite.c:1.177 Thu Nov 17 09:40:11 2005 +++ php-src/ext/sqlite/sqlite.c Fri Nov 25 10:40:14 2005 @@ -17,7 +17,7 @@ | Marcus Boerger <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - $Id: sqlite.c,v 1.177 2005/11/17 14:40:11 iliaa Exp $ + $Id: sqlite.c,v 1.178 2005/11/25 15:40:14 sniper Exp $ */ #ifdef HAVE_CONFIG_H @@ -282,7 +282,7 @@ }; zend_module_entry sqlite_module_entry = { -#if ZEND_MODULE_API_NO >= 20050608 +#if ZEND_MODULE_API_NO >= 20050922 STANDARD_MODULE_HEADER_EX, NULL, sqlite_deps, #elif ZEND_MODULE_API_NO >= 20010901 @@ -1126,7 +1126,7 @@ { php_info_print_table_start(); php_info_print_table_header(2, "SQLite support", "enabled"); - php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " $Id: sqlite.c,v 1.177 2005/11/17 14:40:11 iliaa Exp $"); + php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " $Id: sqlite.c,v 1.178 2005/11/25 15:40:14 sniper Exp $"); php_info_print_table_row(2, "SQLite Library", sqlite_libversion()); php_info_print_table_row(2, "SQLite Encoding", sqlite_libencoding()); php_info_print_table_end(); http://cvs.php.net/diff.php/php-src/ext/xmlreader/php_xmlreader.c?r1=1.19&r2=1.20&ty=u Index: php-src/ext/xmlreader/php_xmlreader.c diff -u php-src/ext/xmlreader/php_xmlreader.c:1.19 php-src/ext/xmlreader/php_xmlreader.c:1.20 --- php-src/ext/xmlreader/php_xmlreader.c:1.19 Tue Nov 15 10:21:47 2005 +++ php-src/ext/xmlreader/php_xmlreader.c Fri Nov 25 10:40:14 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_xmlreader.c,v 1.19 2005/11/15 15:21:47 dmitry Exp $ */ +/* $Id: php_xmlreader.c,v 1.20 2005/11/25 15:40:14 sniper Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -276,7 +276,7 @@ } #endif -#if ZEND_EXTENSION_API_NO >= 220050617 +#if ZEND_MODULE_API_NO >= 20050922 static zend_module_dep xmlreader_deps[] = { ZEND_MOD_REQUIRED("libxml") {NULL, NULL, NULL} @@ -286,7 +286,7 @@ /* {{{ xmlreader_module_entry */ zend_module_entry xmlreader_module_entry = { -#if ZEND_EXTENSION_API_NO >= 220050617 +#if ZEND_MODULE_API_NO >= 20050922 STANDARD_MODULE_HEADER_EX, NULL, xmlreader_deps, #else
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php