scottmac Mon Apr 27 18:15:54 2009 UTC
Modified files:
/php-src/ext/sqlite3 sqlite3.c php_sqlite3_structs.h
Log:
Add the ability to enable exceptions rather than warnings for sqlite3, needed
for pyrus.
http://cvs.php.net/viewvc.cgi/php-src/ext/sqlite3/sqlite3.c?r1=1.37&r2=1.38&diff_format=u
Index: php-src/ext/sqlite3/sqlite3.c
diff -u php-src/ext/sqlite3/sqlite3.c:1.37 php-src/ext/sqlite3/sqlite3.c:1.38
--- php-src/ext/sqlite3/sqlite3.c:1.37 Tue Mar 17 02:42:41 2009
+++ php-src/ext/sqlite3/sqlite3.c Mon Apr 27 18:15:54 2009
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sqlite3.c,v 1.37 2009/03/17 02:42:41 scottmac Exp $ */
+/* $Id: sqlite3.c,v 1.38 2009/04/27 18:15:54 scottmac Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -41,9 +41,33 @@
static void sqlite3_param_dtor(void *data);
static int php_sqlite3_compare_stmt_zval_free( php_sqlite3_free_list
**free_list, zval *statement );
-#define SQLITE3_CHECK_INITIALIZED(member, class_name) \
+/* {{{ Error Handler
+*/
+static void php_sqlite3_error(php_sqlite3_db_object *db_obj, char *format, ...)
+{
+ va_list arg;
+ char *message;
+ TSRMLS_FETCH();
+
+ va_start(arg, format);
+ vspprintf(&message, 0, format, arg);
+ va_end(arg);
+
+ if (db_obj->exception) {
+ zend_throw_exception(zend_exception_get_default(TSRMLS_C),
message, 0 TSRMLS_CC);
+ } else {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", message);
+ }
+
+ if (message) {
+ efree(message);
+ }
+}
+/* }}} */
+
+#define SQLITE3_CHECK_INITIALIZED(db_obj, member, class_name) \
if (!(member)) { \
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The " #class_name
" object has not been correctly initialised"); \
+ php_sqlite3_error(db_obj, "The " #class_name " object has not
been correctly initialised"); \
RETURN_FALSE; \
}
@@ -174,7 +198,7 @@
zend_llist_clean(&(db_obj->free_list));
errcode = sqlite3_close(db_obj->db);
if (errcode != SQLITE_OK) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to
close database: %d, %s", errcode, sqlite3_errmsg(db_obj->db));
+ php_sqlite3_error(db_obj, "Unable to close database:
%d, %s", errcode, sqlite3_errmsg(db_obj->db));
RETURN_FALSE;
}
db_obj->initialised = 0;
@@ -194,14 +218,14 @@
int sql_len;
db_obj = (php_sqlite3_db_object *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(db_obj->initialised, SQLite3)
+ SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->initialised, SQLite3)
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&",
&sql, &sql_len, UG(utf8_conv))) {
return;
}
if (sqlite3_exec(db_obj->db, sql, NULL, NULL, &errtext) != SQLITE_OK) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errtext);
+ php_sqlite3_error(db_obj, "%s", errtext);
sqlite3_free(errtext);
RETURN_FALSE;
}
@@ -235,7 +259,7 @@
zval *object = getThis();
db_obj = (php_sqlite3_db_object *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(db_obj->initialised, SQLite3)
+ SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->initialised, SQLite3)
if (zend_parse_parameters_none() == FAILURE) {
return;
@@ -253,7 +277,7 @@
zval *object = getThis();
db_obj = (php_sqlite3_db_object *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(db_obj->db, SQLite3)
+ SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->db, SQLite3)
if (zend_parse_parameters_none() == FAILURE) {
return;
@@ -271,7 +295,7 @@
zval *object = getThis();
db_obj = (php_sqlite3_db_object *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(db_obj->db, SQLite3)
+ SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->db, SQLite3)
if (zend_parse_parameters_none() == FAILURE) {
return;
@@ -293,19 +317,19 @@
int extension_len, extension_dir_len;
db_obj = (php_sqlite3_db_object *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(db_obj->initialised, SQLite3)
+ SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->initialised, SQLite3)
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
&extension, &extension_len)) {
return;
}
if (!SQLITE3G(extension_dir)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "SQLite Extension
are disabled");
+ php_sqlite3_error(db_obj, "SQLite Extension are disabled");
RETURN_FALSE;
}
if (extension_len == 0) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty string as an
extension");
+ php_sqlite3_error(db_obj, "Empty string as an extension");
RETURN_FALSE;
}
@@ -319,7 +343,7 @@
}
if (!VCWD_REALPATH(lib_path, fullpath)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to load
extension at '%s'", lib_path);
+ php_sqlite3_error(db_obj, "Unable to load extension at '%s'",
lib_path);
efree(lib_path);
RETURN_FALSE;
}
@@ -327,14 +351,14 @@
efree(lib_path);
if (strncmp(fullpath, extension_dir, extension_dir_len) != 0) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to open
extensions outside the defined directory");
+ php_sqlite3_error(db_obj, "Unable to open extensions outside
the defined directory");
RETURN_FALSE;
}
/* Extension loading should only be enabled for when we attempt to load
*/
sqlite3_enable_load_extension(db_obj->db, 1);
if (sqlite3_load_extension(db_obj->db, fullpath, 0, &errtext) !=
SQLITE_OK) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errtext);
+ php_sqlite3_error(db_obj, "%s", errtext);
sqlite3_free(errtext);
sqlite3_enable_load_extension(db_obj->db, 0);
RETURN_FALSE;
@@ -354,7 +378,7 @@
zval *object = getThis();
db_obj = (php_sqlite3_db_object *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(db_obj->initialised, SQLite3)
+ SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->initialised, SQLite3)
if (zend_parse_parameters_none() == FAILURE) {
return;
@@ -400,7 +424,7 @@
db_obj = (php_sqlite3_db_object *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(db_obj->initialised, SQLite3)
+ SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->initialised, SQLite3)
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
&sql, &sql_len)) {
return;
@@ -420,7 +444,7 @@
/* Todo: utf-8 or utf-16 = sqlite3_prepare16_v2 */
errcode = sqlite3_prepare_v2(db_obj->db, sql, sql_len,
&(stmt_obj->stmt), NULL);
if (errcode != SQLITE_OK) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to prepare
statement: %d, %s", errcode, sqlite3_errmsg(db_obj->db));
+ php_sqlite3_error(db_obj, "Unable to prepare statement: %d,
%s", errcode, sqlite3_errmsg(db_obj->db));
zval_dtor(return_value);
RETURN_FALSE;
}
@@ -448,7 +472,7 @@
int sql_len, return_code;
db_obj = (php_sqlite3_db_object *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(db_obj->initialised, SQLite3)
+ SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->initialised, SQLite3)
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
&sql, &sql_len)) {
return;
@@ -462,7 +486,7 @@
if (!return_value_used) {
/* Todo: utf-8 */
if (sqlite3_exec(db_obj->db, sql, NULL, NULL, &errtext) !=
SQLITE_OK) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s",
errtext);
+ php_sqlite3_error(db_obj, "%s", errtext);
sqlite3_free(errtext);
}
return;
@@ -480,7 +504,7 @@
/* Todo: utf-8 or utf-16 = sqlite3_prepare16_v2 */
return_code = sqlite3_prepare_v2(db_obj->db, sql, sql_len,
&(stmt_obj->stmt), NULL);
if (return_code != SQLITE_OK) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to prepare
statement: %d, %s", return_code, sqlite3_errmsg(db_obj->db));
+ php_sqlite3_error(db_obj, "Unable to prepare statement: %d,
%s", return_code, sqlite3_errmsg(db_obj->db));
zval_ptr_dtor(&stmt);
RETURN_FALSE;
}
@@ -508,7 +532,7 @@
break;
}
default:
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to
execute statement: %s", sqlite3_errmsg(db_obj->db));
+ php_sqlite3_error(db_obj, "Unable to execute statement:
%s", sqlite3_errmsg(db_obj->db));
sqlite3_finalize(stmt_obj->stmt);
stmt_obj->initialised = 0;
zval_dtor(return_value);
@@ -563,7 +587,7 @@
sqlite3_stmt *stmt;
db_obj = (php_sqlite3_db_object *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(db_obj->initialised, SQLite3)
+ SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->initialised, SQLite3)
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|b",
&sql, &sql_len, &entire_row)) {
return;
@@ -577,7 +601,7 @@
if (!return_value_used) {
/* Todo: utf-8 */
if (sqlite3_exec(db_obj->db, sql, NULL, NULL, &errtext) !=
SQLITE_OK) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s",
errtext);
+ php_sqlite3_error(db_obj, "%s", errtext);
sqlite3_free(errtext);
}
return;
@@ -586,7 +610,7 @@
/* Todo: utf-8 or utf-16 = sqlite3_prepare16_v2 */
return_code = sqlite3_prepare_v2(db_obj->db, sql, sql_len, &stmt, NULL);
if (return_code != SQLITE_OK) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to prepare
statement: %d, %s", return_code, sqlite3_errmsg(db_obj->db));
+ php_sqlite3_error(db_obj, "Unable to prepare statement: %d,
%s", return_code, sqlite3_errmsg(db_obj->db));
RETURN_FALSE;
}
@@ -626,7 +650,7 @@
break;
}
default:
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to
execute statement: %s", sqlite3_errmsg(db_obj->db));
+ php_sqlite3_error(db_obj, "Unable to execute statement:
%s", sqlite3_errmsg(db_obj->db));
RETVAL_FALSE;
}
sqlite3_finalize(stmt);
@@ -819,7 +843,7 @@
long sql_func_num_args = -1;
db_obj = (php_sqlite3_db_object *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(db_obj->initialised, SQLite3)
+ SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->initialised, SQLite3)
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|l", &sql_func,
&sql_func_len, &callback_func, &sql_func_num_args) == FAILURE) {
return;
@@ -830,7 +854,7 @@
}
if (!zend_is_callable(callback_func, 0, &callback_name TSRMLS_CC)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not a valid
callback function %R", Z_TYPE(callback_name), Z_UNIVAL(callback_name));
+ php_sqlite3_error(db_obj, "Not a valid callback function %s",
callback_name);
zval_dtor(&callback_name);
RETURN_FALSE;
}
@@ -872,7 +896,7 @@
long sql_func_num_args = -1;
db_obj = (php_sqlite3_db_object *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(db_obj->initialised, SQLite3)
+ SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->initialised, SQLite3)
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "szz|l",
&sql_func, &sql_func_len, &step_callback, &fini_callback, &sql_func_num_args)
== FAILURE) {
return;
@@ -883,14 +907,14 @@
}
if (!zend_is_callable(step_callback, 0, &callback_name TSRMLS_CC)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not a valid
callback function %R", Z_TYPE(callback_name), Z_UNIVAL(callback_name));
+ php_sqlite3_error(db_obj, "Not a valid callback function %s",
callback_name);
zval_dtor(&callback_name);
RETURN_FALSE;
}
zval_dtor(&callback_name);
if (!zend_is_callable(fini_callback, 0, &callback_name TSRMLS_CC)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not a valid
callback function %R", Z_TYPE(callback_name), Z_UNIVAL(callback_name));
+ php_sqlite3_error(db_obj, "Not a valid callback function %s",
callback_name);
zval_dtor(&callback_name);
RETURN_FALSE;
}
@@ -1076,14 +1100,14 @@
db_obj = (php_sqlite3_db_object *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(db_obj->initialised, SQLite3)
+ SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->initialised, SQLite3)
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssl|s", &table,
&table_len, &column, &column_len, &rowid, &dbname, &dbname_len) == FAILURE) {
return;
}
if (sqlite3_blob_open(db_obj->db, dbname, table, column, rowid, flags,
&blob) != SQLITE_OK) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to open
blob: %s", sqlite3_errmsg(db_obj->db));
+ php_sqlite3_error(db_obj, "Unable to open blob: %s",
sqlite3_errmsg(db_obj->db));
RETURN_FALSE;
}
@@ -1102,6 +1126,24 @@
}
/* }}} */
+/* {{{ proto void SQLite3::enableExceptions([bool enableExceptions = false]) U
+ Open a blob as a stream which we can read / write to. */
+PHP_METHOD(sqlite3, enableExceptions)
+{
+ php_sqlite3_db_object *db_obj;
+ zval *object = getThis();
+ zend_bool enableExceptions = 0;
+
+ db_obj = (php_sqlite3_db_object *)zend_object_store_get_object(object
TSRMLS_CC);
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b",
&enableExceptions) == FAILURE) {
+ return;
+ }
+
+ db_obj->exception = enableExceptions;
+}
+/* }}} */
+
/* {{{ proto int SQLite3Stmt::paramCount() U
Returns the number of parameters within the prepared statement. */
PHP_METHOD(sqlite3stmt, paramCount)
@@ -1149,7 +1191,7 @@
}
if (sqlite3_reset(stmt_obj->stmt) != SQLITE_OK) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to reset
statement: %s", sqlite3_errmsg(sqlite3_db_handle(stmt_obj->stmt)));
+ php_sqlite3_error(stmt_obj->db_obj, "Unable to reset statement:
%s", sqlite3_errmsg(sqlite3_db_handle(stmt_obj->stmt)));
RETURN_FALSE;
}
RETURN_TRUE;
@@ -1169,7 +1211,7 @@
}
if (sqlite3_clear_bindings(stmt_obj->stmt) != SQLITE_OK) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to clear
statement: %s", sqlite3_errmsg(sqlite3_db_handle(stmt_obj->stmt)));
+ php_sqlite3_error(stmt_obj->db_obj, "Unable to clear statement:
%s", sqlite3_errmsg(sqlite3_db_handle(stmt_obj->stmt)));
RETURN_FALSE;
}
@@ -1300,7 +1342,7 @@
return;
}
- SQLITE3_CHECK_INITIALIZED(stmt_obj->initialised, SQLite3)
+ SQLITE3_CHECK_INITIALIZED(stmt_obj->db_obj, stmt_obj->initialised,
SQLite3)
if (stmt_obj->bound_params) {
zend_hash_internal_pointer_reset(stmt_obj->bound_params);
@@ -1331,7 +1373,7 @@
if (Z_TYPE_P(param->parameter) ==
IS_RESOURCE) {
php_stream_from_zval_no_verify(stream, ¶m->parameter);
if (stream == NULL) {
- php_error_docref(NULL
TSRMLS_CC, E_WARNING, "Unable to read stream for parameter %ld",
param->param_number);
+
php_sqlite3_error(stmt_obj->db_obj, "Unable to read stream for parameter %ld",
param->param_number);
RETURN_FALSE;
}
blength =
php_stream_copy_to_mem(stream, (void *)&buffer, PHP_STREAM_COPY_ALL, 0);
@@ -1360,7 +1402,7 @@
break;
default:
- php_error_docref(NULL TSRMLS_CC,
E_WARNING, "Unknown parameter type: %ld for parameter %ld", param->type,
param->param_number);
+ php_sqlite3_error(stmt_obj->db_obj,
"Unknown parameter type: %ld for parameter %ld", param->type,
param->param_number);
RETURN_FALSE;
}
zend_hash_move_forward(stmt_obj->bound_params);
@@ -1390,7 +1432,7 @@
sqlite3_reset(stmt_obj->stmt);
default:
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to
execute statement: %s", sqlite3_errmsg(sqlite3_db_handle(stmt_obj->stmt)));
+ php_sqlite3_error(stmt_obj->db_obj, "Unable to execute
statement: %s", sqlite3_errmsg(sqlite3_db_handle(stmt_obj->stmt)));
zval_dtor(return_value);
RETURN_FALSE;
}
@@ -1423,7 +1465,7 @@
db_obj = (php_sqlite3_db_object *)zend_object_store_get_object(db_zval
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(db_obj->initialised, SQLite3)
+ SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->initialised, SQLite3)
zend_restore_error_handling(&error_handling TSRMLS_CC);
if (!sql_len) {
@@ -1437,7 +1479,7 @@
errcode = sqlite3_prepare_v2(db_obj->db, sql, sql_len,
&(stmt_obj->stmt), NULL);
if (errcode != SQLITE_OK) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to prepare
statement: %d, %s", errcode, sqlite3_errmsg(db_obj->db));
+ php_sqlite3_error(db_obj, "Unable to prepare statement: %d,
%s", errcode, sqlite3_errmsg(db_obj->db));
zval_dtor(return_value);
RETURN_FALSE;
}
@@ -1459,7 +1501,7 @@
zval *object = getThis();
result_obj = (php_sqlite3_result *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(result_obj->stmt_obj->initialised,
SQLite3Result)
+ SQLITE3_CHECK_INITIALIZED(result_obj->db_obj,
result_obj->stmt_obj->initialised, SQLite3Result)
if (zend_parse_parameters_none() == FAILURE) {
return;
@@ -1478,7 +1520,7 @@
long column = 0;
result_obj = (php_sqlite3_result *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(result_obj->stmt_obj->initialised,
SQLite3Result)
+ SQLITE3_CHECK_INITIALIZED(result_obj->db_obj,
result_obj->stmt_obj->initialised, SQLite3Result)
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &column) ==
FAILURE) {
return;
@@ -1497,7 +1539,7 @@
long column = 0;
result_obj = (php_sqlite3_result *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(result_obj->stmt_obj->initialised,
SQLite3Result)
+ SQLITE3_CHECK_INITIALIZED(result_obj->db_obj,
result_obj->stmt_obj->initialised, SQLite3Result)
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &column) ==
FAILURE) {
return;
@@ -1517,7 +1559,7 @@
long mode = PHP_SQLITE3_BOTH;
result_obj = (php_sqlite3_result *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(result_obj->stmt_obj->initialised,
SQLite3Result)
+ SQLITE3_CHECK_INITIALIZED(result_obj->db_obj,
result_obj->stmt_obj->initialised, SQLite3Result)
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &mode) ==
FAILURE) {
return;
@@ -1557,7 +1599,7 @@
break;
default:
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to
execute statement: %s",
sqlite3_errmsg(sqlite3_db_handle(result_obj->stmt_obj->stmt)));
+ php_sqlite3_error(result_obj->db_obj, "Unable to
execute statement: %s",
sqlite3_errmsg(sqlite3_db_handle(result_obj->stmt_obj->stmt)));
}
}
/* }}} */
@@ -1570,7 +1612,7 @@
zval *object = getThis();
result_obj = (php_sqlite3_result *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(result_obj->stmt_obj->initialised,
SQLite3Result)
+ SQLITE3_CHECK_INITIALIZED(result_obj->db_obj,
result_obj->stmt_obj->initialised, SQLite3Result)
if (zend_parse_parameters_none() == FAILURE) {
return;
@@ -1594,7 +1636,7 @@
zval *object = getThis();
result_obj = (php_sqlite3_result *)zend_object_store_get_object(object
TSRMLS_CC);
- SQLITE3_CHECK_INITIALIZED(result_obj->stmt_obj->initialised,
SQLite3Result)
+ SQLITE3_CHECK_INITIALIZED(result_obj->db_obj,
result_obj->stmt_obj->initialised, SQLite3Result)
if (zend_parse_parameters_none() == FAILURE) {
return;
@@ -1616,18 +1658,7 @@
__constructor for SQLite3Result. */
PHP_METHOD(sqlite3result, __construct)
{
- php_sqlite3_result *result_obj;
- zval *object = getThis();
- zend_error_handling error_handling;
-
- result_obj = (php_sqlite3_result *)zend_object_store_get_object(object
TSRMLS_CC);
-
- zend_replace_error_handling(EH_THROW, NULL, &error_handling TSRMLS_CC);
-
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "SQLite3Result cannot be
directly instantiated");
-
- zend_restore_error_handling(&error_handling TSRMLS_CC);
-
+ zend_throw_exception(zend_exception_get_default(TSRMLS_C),
"SQLite3Result cannot be directly instantiated", 0 TSRMLS_CC);
}
/* }}} */
@@ -1680,6 +1711,10 @@
ZEND_ARG_INFO(0, dbname)
ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO_EX(argingo_sqlite3_enableexceptions, 0, 0, 1)
+ ZEND_ARG_INFO(0, enableExceptions)
+ZEND_END_ARG_INFO()
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3stmt_bindparam, 0, 0, 2)
ZEND_ARG_INFO(0, param_number)
ZEND_ARG_INFO(1, param)
@@ -1732,6 +1767,7 @@
PHP_ME(sqlite3, createFunction,
arginfo_sqlite3_createfunction, ZEND_ACC_PUBLIC)
PHP_ME(sqlite3, createAggregate,
arginfo_sqlite3_createaggregate, ZEND_ACC_PUBLIC)
PHP_ME(sqlite3, openBlob,
argingo_sqlite3_openblob, ZEND_ACC_PUBLIC)
+ PHP_ME(sqlite3, enableExceptions,
argingo_sqlite3_enableexceptions, ZEND_ACC_PUBLIC)
/* Aliases */
PHP_MALIAS(sqlite3, __construct, open, arginfo_sqlite3_open,
ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
{NULL, NULL, NULL}
@@ -1916,6 +1952,7 @@
/* Allocate memory for it */
intern = emalloc(sizeof(php_sqlite3_db_object));
memset(&intern->zo, 0, sizeof(php_sqlite3_db_object));
+ intern->exception = 0;
/* Need to keep track of things to free */
zend_llist_init(&(intern->free_list), sizeof(php_sqlite3_free_list
*), (llist_dtor_func_t)php_sqlite3_free_list_dtor, 0);
http://cvs.php.net/viewvc.cgi/php-src/ext/sqlite3/php_sqlite3_structs.h?r1=1.7&r2=1.8&diff_format=u
Index: php-src/ext/sqlite3/php_sqlite3_structs.h
diff -u php-src/ext/sqlite3/php_sqlite3_structs.h:1.7
php-src/ext/sqlite3/php_sqlite3_structs.h:1.8
--- php-src/ext/sqlite3/php_sqlite3_structs.h:1.7 Tue Mar 10 23:39:39 2009
+++ php-src/ext/sqlite3/php_sqlite3_structs.h Mon Apr 27 18:15:54 2009
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_sqlite3_structs.h,v 1.7 2009/03/10 23:39:39 helly Exp $ */
+/* $Id: php_sqlite3_structs.h,v 1.8 2009/04/27 18:15:54 scottmac Exp $ */
#ifndef PHP_SQLITE_STRUCTS_H
#define PHP_SQLITE_STRUCTS_H
@@ -68,6 +68,7 @@
int initialised;
sqlite3 *db;
php_sqlite3_func *funcs;
+ zend_bool exception;
zend_llist free_list;
} php_sqlite3_db_object;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php