Author: ahristov
Date: 2007-06-18 10:49:30 +0200 (Mon, 18 Jun 2007)
New Revision: 379
Modified:
trunk/mysqlnd/mysqlnd.h
trunk/mysqlnd/mysqlnd_ps.c
Log:
Bring PS in sync
Modified: trunk/mysqlnd/mysqlnd.h
===================================================================
--- trunk/mysqlnd/mysqlnd.h 2007-06-17 15:15:40 UTC (rev 378)
+++ trunk/mysqlnd/mysqlnd.h 2007-06-18 08:49:30 UTC (rev 379)
@@ -398,6 +398,7 @@
struct st_mysqlnd_stmt_methods {
enum_func_status (*prepare)(MYSQLND_STMT * const stmt, const char * const query,
unsigned int query_len TSRMLS_DC);
enum_func_status (*execute)(MYSQLND_STMT * const stmt TSRMLS_DC);
+ MYSQLND_RES * (*use_result)(MYSQLND_STMT * const stmt TSRMLS_DC);
MYSQLND_RES * (*store_result)(MYSQLND_STMT * const stmt TSRMLS_DC);
enum_func_status (*free_result)(MYSQLND_STMT * const stmt TSRMLS_DC);
enum_func_status (*seek_data)(const MYSQLND_STMT * const stmt, mynd_ulonglong row);
@@ -405,6 +406,7 @@
enum_func_status (*close)(MYSQLND_STMT * const stmt, zend_bool implicit TSRMLS_DC); /*
private */
enum_func_status (*dtor)(MYSQLND_STMT * const stmt, zend_bool implicit TSRMLS_DC); /*
use this for mysqlnd_stmt_close */
+ enum_func_status (*fetch)(MYSQLND_STMT * const stmt, zend_bool * const fetched_anything
TSRMLS_DC);
void (*fetch_into)(MYSQLND_STMT *stmt, unsigned int flags, zval *return_value
TSRMLS_DC ZEND_FILE_LINE_DC);
enum_func_status (*bind_param)(MYSQLND_STMT * const stmt, MYSQLND_PARAM_BIND * const
param_bind);
@@ -821,13 +823,9 @@
#define mysqlnd_stmt_fetch_into(s, f, ret) (s)->m->fetch_into((s), (f), (ret)
TSRMLS_CC ZEND_FILE_LINE_CC)
+#define mysqlnd_stmt_fetch(stmt, fetched) (stmt)->m->fetch((stmt), (fetched)
TSRMLS_CC)
-PHPAPI enum_func_status mysqlnd_stmt_fetch(MYSQLND_STMT * const stmt,
- zend_bool * const fetched_anything
- TSRMLS_DC);
-
-
/* Performance statistics */
PHPAPI void _mysqlnd_get_client_stats(zval *return_value TSRMLS_DC ZEND_FILE_LINE_DC);
Modified: trunk/mysqlnd/mysqlnd_ps.c
===================================================================
--- trunk/mysqlnd/mysqlnd_ps.c 2007-06-17 15:15:40 UTC (rev 378)
+++ trunk/mysqlnd/mysqlnd_ps.c 2007-06-18 08:49:30 UTC (rev 379)
@@ -58,9 +58,9 @@
void mysqlnd_stmt_separate_result_bind(MYSQLND_STMT * const stmt);
-/* {{{ _mysqlnd_stmt_store_result */
-static
-MYSQLND_RES * _mysqlnd_stmt_store_result(MYSQLND_STMT * const stmt TSRMLS_DC)
+/* {{{ mysqlnd_stmt::store_result */
+static MYSQLND_RES *
+MYSQLND_METHOD(mysqlnd_stmt, store_result)(MYSQLND_STMT * const stmt TSRMLS_DC)
{
enum_func_status ret;
MYSQLND *conn = stmt->conn;
@@ -75,7 +75,7 @@
if (stmt->cursor_exists) {
/* Silently convert buffered to unbuffered, for now */
- return _mysqlnd_stmt_use_result(stmt TSRMLS_CC);
+ return stmt->m->use_result(stmt TSRMLS_CC);
}
@@ -88,7 +88,7 @@
return NULL;
}
- stmt->default_rset_handler = _mysqlnd_stmt_store_result;
+ stmt->default_rset_handler = stmt->m->store_result;
SET_EMPTY_ERROR(stmt->error_info);
SET_EMPTY_ERROR(stmt->conn->error_info);
@@ -207,9 +207,10 @@
/* }}} */
-/* {{{ _mysqlnd_stmt_prepare */
+/* {{{ mysqlnd_stmt::prepare */
static enum_func_status
-_mysqlnd_stmt_prepare(MYSQLND_STMT * const stmt, const char * const query, unsigned int
query_len TSRMLS_DC)
+MYSQLND_METHOD(mysqlnd_stmt, prepare)(MYSQLND_STMT * const stmt, const char * const
query,
+ unsigned int query_len TSRMLS_DC)
{
MYSQLND_STMT *stmt_to_prepare = stmt;
@@ -223,7 +224,7 @@
/* See if we have to clean the wire */
if (stmt->state == MYSQLND_STMT_WAITING_USE_OR_STORE) {
/* Do implicit use_result and then flush the result */
- stmt->default_rset_handler = _mysqlnd_stmt_use_result;
+ stmt->default_rset_handler = stmt->m->use_result;
stmt->default_rset_handler(stmt TSRMLS_CC);
}
/* No 'else' here please :) */
@@ -294,9 +295,9 @@
/* }}} */
-/* {{{ _mysqlnd_stmt_execute */
+/* {{{ mysqlnd_stmt::execute */
static enum_func_status
-_mysqlnd_stmt_execute(MYSQLND_STMT * const stmt TSRMLS_DC)
+MYSQLND_METHOD(mysqlnd_stmt, execute)(MYSQLND_STMT * const stmt TSRMLS_DC)
{
enum_func_status ret;
MYSQLND *conn = stmt->conn;
@@ -413,7 +414,7 @@
stmt->cursor_exists = TRUE;
conn->state = CONN_READY;
/* Only cursor read */
- stmt->default_rset_handler = _mysqlnd_stmt_use_result;
+ stmt->default_rset_handler = stmt->m->use_result;
} else if (stmt->flags & CURSOR_TYPE_READ_ONLY) {
/*
We have asked for CURSOR but got no cursor, because the condition
@@ -426,10 +427,10 @@
precached on client and server's resources are freed.
*/
/* preferred is buffered read */
- stmt->default_rset_handler = _mysqlnd_stmt_store_result;
+ stmt->default_rset_handler = stmt->m->store_result;
} else {
/* preferred is unbuffered read */
- stmt->default_rset_handler = _mysqlnd_stmt_use_result;
+ stmt->default_rset_handler = stmt->m->use_result;
}
}
}
@@ -591,8 +592,9 @@
/* }}} */
-/* {{{ mysqlnd_stmt_use_result */
-MYSQLND_RES * _mysqlnd_stmt_use_result(MYSQLND_STMT *stmt TSRMLS_DC)
+/* {{{ mysqlnd_stmt::use_result */
+MYSQLND_RES *
+MYSQLND_METHOD(mysqlnd_stmt, use_result)(MYSQLND_STMT *stmt TSRMLS_DC)
{
MYSQLND_RES *result;
MYSQLND *conn = stmt->conn;
@@ -747,7 +749,8 @@
/* {{{ mysqlnd_stmt_fetch */
PHPAPI enum_func_status
-mysqlnd_stmt_fetch(MYSQLND_STMT * const stmt, zend_bool * const fetched_anything
TSRMLS_DC)
+MYSQLND_METHOD(mysqlnd_stmt, fetch)(MYSQLND_STMT * const stmt,
+ zend_bool * const fetched_anything TSRMLS_DC)
{
if (!stmt->result ||
stmt->state < MYSQLND_STMT_WAITING_USE_OR_STORE) {
@@ -796,9 +799,9 @@
/* }}} */
-/* {{{ _mysqlnd_stmt_reset */
+/* {{{ mysqlnd_stmt::reset */
static enum_func_status
-_mysqlnd_stmt_reset(MYSQLND_STMT * const stmt TSRMLS_DC)
+MYSQLND_METHOD(mysqlnd_stmt, reset)(MYSQLND_STMT * const stmt TSRMLS_DC)
{
enum_func_status ret = PASS;
MYSQLND * conn = stmt->conn;
@@ -849,10 +852,10 @@
/* }}} */
-/* {{{ _mysqlnd_stmt_send_long_data */
+/* {{{ mysqlnd_stmt::send_long_data */
static enum_func_status
-_mysqlnd_stmt_send_long_data(MYSQLND_STMT * const stmt, unsigned int param_no,
- const char * const data, unsigned long length TSRMLS_DC)
+MYSQLND_METHOD(mysqlnd_stmt, send_long_data)(MYSQLND_STMT * const stmt, unsigned int
param_no,
+ const char * const data, unsigned long length TSRMLS_DC)
{
enum_func_status ret = FAIL;
MYSQLND * conn = stmt->conn;
@@ -938,7 +941,8 @@
/* {{{ _mysqlnd_stmt_bind_param */
static enum_func_status
-_mysqlnd_stmt_bind_param(MYSQLND_STMT * const stmt, MYSQLND_PARAM_BIND * const
param_bind)
+MYSQLND_METHOD(mysqlnd_stmt, bind_param)(MYSQLND_STMT * const stmt,
+ MYSQLND_PARAM_BIND * const param_bind)
{
unsigned int i = 0;
@@ -993,11 +997,12 @@
/* }}} */
-/* {{{ _mysqlnd_stmt_bind_result */
+/* {{{ mysqlnd_stmt::bind_result */
static enum_func_status
-_mysqlnd_stmt_bind_result(MYSQLND_STMT * const stmt, MYSQLND_RESULT_BIND * const
result_bind)
+MYSQLND_METHOD(mysqlnd_stmt, bind_result)(MYSQLND_STMT * const stmt,
+ MYSQLND_RESULT_BIND * const result_bind)
{
- int i = 0;
+ uint i = 0;
SET_EMPTY_ERROR(stmt->error_info);
SET_EMPTY_ERROR(stmt->conn->error_info);
@@ -1045,99 +1050,99 @@
/* }}} */
-/* {{{ _mysqlnd_stmt_insert_id */
-static
-mynd_ulonglong _mysqlnd_stmt_insert_id(const MYSQLND_STMT * const stmt)
+/* {{{ mysqlnd_stmt::insert_id */
+static mynd_ulonglong
+MYSQLND_METHOD(mysqlnd_stmt, insert_id)(const MYSQLND_STMT * const stmt)
{
return stmt->upsert_status.last_insert_id;
}
/* }}} */
-/* {{{ _mysqlnd_stmt_affected_rows */
-static
-mynd_ulonglong _mysqlnd_stmt_affected_rows(const MYSQLND_STMT * const stmt)
+/* {{{ mysqlnd_stmt::affected_rows */
+static mynd_ulonglong
+MYSQLND_METHOD(mysqlnd_stmt, affected_rows)(const MYSQLND_STMT * const stmt)
{
return stmt->upsert_status.affected_rows;
}
/* }}} */
-/* {{{ _mysqlnd_stmt_num_rows */
-static
-mynd_ulonglong _mysqlnd_stmt_num_rows(const MYSQLND_STMT * const stmt)
+/* {{{ mysqlnd_stmt::num_rows */
+static mynd_ulonglong
+MYSQLND_METHOD(mysqlnd_stmt, num_rows)(const MYSQLND_STMT * const stmt)
{
return stmt->result? mysqlnd_num_rows(stmt->result):0;
}
/* }}} */
-/* {{{ _mysqlnd_stmt_warning_count */
-static
-unsigned int _mysqlnd_stmt_warning_count(const MYSQLND_STMT * const stmt)
+/* {{{ mysqlnd_stmt::warning_count */
+static unsigned int
+MYSQLND_METHOD(mysqlnd_stmt, warning_count)(const MYSQLND_STMT * const stmt)
{
return stmt->upsert_status.warning_count;
}
/* }}} */
-/* {{{ _mysqlnd_stmt_field_count */
-static
-unsigned int _mysqlnd_stmt_field_count(const MYSQLND_STMT * const stmt)
+/* {{{ mysqlnd_stmt::field_count */
+static unsigned int
+MYSQLND_METHOD(mysqlnd_stmt, field_count)(const MYSQLND_STMT * const stmt)
{
return stmt->field_count;
}
/* }}} */
-/* {{{ _mysqlnd_stmt_param_count */
-static
-unsigned int _mysqlnd_stmt_param_count(const MYSQLND_STMT * const stmt)
+/* {{{ mysqlnd_stmt::param_count */
+static unsigned int
+MYSQLND_METHOD(mysqlnd_stmt, param_count)(const MYSQLND_STMT * const stmt)
{
return stmt->param_count;
}
/* }}} */
-/* {{{ _mysqlnd_stmt_errno */
-static
-unsigned int _mysqlnd_stmt_errno(const MYSQLND_STMT * const stmt)
+/* {{{ mysqlnd_stmt::errno */
+static unsigned int
+MYSQLND_METHOD(mysqlnd_stmt, errno)(const MYSQLND_STMT * const stmt)
{
return stmt->error_info.error_no;
}
/* }}} */
-/* {{{ _mysqlnd_stmt_error */
-static
-const char * _mysqlnd_stmt_error(const MYSQLND_STMT * const stmt)
+/* {{{ mysqlnd_stmt::error */
+static const char *
+MYSQLND_METHOD(mysqlnd_stmt, error)(const MYSQLND_STMT * const stmt)
{
return stmt->error_info.error;
}
/* }}} */
-/* {{{ _mysqlnd_stmt_sqlstate */
-static
-const char * _mysqlnd_stmt_sqlstate(const MYSQLND_STMT * const stmt)
+/* {{{ mysqlnd_stmt::sqlstate */
+static const char *
+MYSQLND_METHOD(mysqlnd_stmt, sqlstate)(const MYSQLND_STMT * const stmt)
{
return stmt->error_info.sqlstate[0] ?
stmt->error_info.sqlstate:MYSQLND_SQLSTATE_NULL;
}
/* }}} */
-/* {{{ _mysqlnd_stmt_data_seek */
+/* {{{ mysqlnd_stmt::data_seek */
static enum_func_status
-_mysqlnd_stmt_data_seek(const MYSQLND_STMT * const stmt, mynd_ulonglong row)
+MYSQLND_METHOD(mysqlnd_stmt, data_seek)(const MYSQLND_STMT * const stmt, mynd_ulonglong
row)
{
return stmt->result? stmt->result->m.seek_data(stmt->result, row) : FAIL;
}
/* }}} */
-/* {{{ _mysqlnd_stmt_param_metadata */
-static
-MYSQLND_RES * _mysqlnd_stmt_param_metadata(MYSQLND_STMT * const stmt)
+/* {{{ mysqlnd_stmt::param_metadata */
+static MYSQLND_RES *
+MYSQLND_METHOD(mysqlnd_stmt, param_metadata)(MYSQLND_STMT * const stmt)
{
if (!stmt->param_count) {
return NULL;
@@ -1148,9 +1153,9 @@
/* }}} */
-/* {{{ _mysqlnd_stmt_param_metadata */
-static
-MYSQLND_RES * _mysqlnd_stmt_result_metadata(MYSQLND_STMT * const stmt)
+/* {{{ mysqlnd_stmt::param_metadata */
+static MYSQLND_RES *
+MYSQLND_METHOD(mysqlnd_stmt, result_metadata)(MYSQLND_STMT * const stmt)
{
MYSQLND_RES *result;
@@ -1179,9 +1184,11 @@
/* }}} */
-/* {{{ _mysqlnd_stmt_attr_set */
+/* {{{ mysqlnd_stmt::attr_set */
static enum_func_status
-_mysqlnd_stmt_attr_set(MYSQLND_STMT * const stmt, enum mysqlnd_stmt_attr attr_type, const
void * const value)
+MYSQLND_METHOD(mysqlnd_stmt, attr_set)(MYSQLND_STMT * const stmt,
+ enum mysqlnd_stmt_attr attr_type,
+ const void * const value)
{
unsigned long val = *(unsigned long *) value;
switch (attr_type) {
@@ -1221,7 +1228,9 @@
/* {{{ _mysqlnd_stmt_attr_get */
static enum_func_status
-_mysqlnd_stmt_attr_get(MYSQLND_STMT * const stmt, enum mysqlnd_stmt_attr attr_type, void
* const value)
+MYSQLND_METHOD(mysqlnd_stmt, attr_get)(MYSQLND_STMT * const stmt,
+ enum mysqlnd_stmt_attr attr_type,
+ void * const value)
{
switch (attr_type) {
case STMT_ATTR_UPDATE_MAX_LENGTH:
@@ -1241,9 +1250,9 @@
/* }}} */
-/* {{{ _mysqlnd_stmt_free_result */
+/* {{{ mysqlnd_stmt::free_result */
static enum_func_status
-_mysqlnd_stmt_free_result(MYSQLND_STMT * const stmt TSRMLS_DC)
+MYSQLND_METHOD(mysqlnd_stmt, free_result)(MYSQLND_STMT * const stmt TSRMLS_DC)
{
if (!stmt->result) {
return PASS;
@@ -1251,7 +1260,7 @@
if (stmt->state == MYSQLND_STMT_WAITING_USE_OR_STORE) {
/* Do implicit use_result and then flush the result */
- stmt->default_rset_handler = _mysqlnd_stmt_use_result;
+ stmt->default_rset_handler = stmt->m->use_result;
stmt->default_rset_handler(stmt TSRMLS_CC);
}
@@ -1366,9 +1375,9 @@
/* }}} */
-/* {{{ _mysqlnd_stmt_close */
+/* {{{ mysqlnd_stmt::close */
static enum_func_status
-_mysqlnd_stmt_close(MYSQLND_STMT * const stmt, zend_bool implicit TSRMLS_DC)
+MYSQLND_METHOD(mysqlnd_stmt, close)(MYSQLND_STMT * const stmt, zend_bool implicit
TSRMLS_DC)
{
MYSQLND * conn = stmt->conn;
zend_uchar cmd_buf[STMT_ID_LENGTH /* statement id */];
@@ -1415,9 +1424,9 @@
/* }}} */
-/* {{{ _mysqlnd_stmt_close */
+/* {{{ mysqlnd_stmt::dtor */
static enum_func_status
-_mysqlnd_stmt_dtor(MYSQLND_STMT * const stmt, zend_bool implicit TSRMLS_DC)
+MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, dtor)(MYSQLND_STMT * const stmt, zend_bool implicit
TSRMLS_DC)
{
enum_func_status ret;
@@ -1432,15 +1441,17 @@
}
/* }}} */
-/* {{{ _mysqlnd_stmt_fetch_into */
-static
-void _mysqlnd_stmt_fetch_into(MYSQLND_STMT *stmt, unsigned int flags, zval *return_value
TSRMLS_DC ZEND_FILE_LINE_DC)
+
+/* {{{ mysqlnd_stmt::fetch_into */
+static void
+MYSQLND_METHOD(mysqlnd_stmt, fetch_into)(MYSQLND_STMT *stmt, unsigned int flags,
+ zval *return_value TSRMLS_DC ZEND_FILE_LINE_DC)
{
zend_bool fetched_anything;
if (!stmt->result || stmt->state < MYSQLND_STMT_WAITING_USE_OR_STORE) {
RETURN_NULL();
- } else if (stmt->default_rset_handler == _mysqlnd_stmt_use_result) {
+ } else if (stmt->default_rset_handler == stmt->m->use_result) {
SET_STMT_ERROR(stmt, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE,
"Unbuffered old style fetching is not supported");
RETURN_NULL();
@@ -1492,37 +1503,39 @@
static
struct st_mysqlnd_stmt_methods mysqlnd_stmt_methods = {
- _mysqlnd_stmt_prepare,
- _mysqlnd_stmt_execute,
- _mysqlnd_stmt_store_result,
- _mysqlnd_stmt_free_result,
- _mysqlnd_stmt_data_seek,
- _mysqlnd_stmt_reset,
- _mysqlnd_stmt_close,
- _mysqlnd_stmt_dtor,
+ MYSQLND_METHOD(mysqlnd_stmt, prepare),
+ MYSQLND_METHOD(mysqlnd_stmt, execute),
+ MYSQLND_METHOD(mysqlnd_stmt, use_result),
+ MYSQLND_METHOD(mysqlnd_stmt, store_result),
+ MYSQLND_METHOD(mysqlnd_stmt, free_result),
+ MYSQLND_METHOD(mysqlnd_stmt, data_seek),
+ MYSQLND_METHOD(mysqlnd_stmt, reset),
+ MYSQLND_METHOD(mysqlnd_stmt, close),
+ MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, dtor),
- _mysqlnd_stmt_fetch_into,
+ MYSQLND_METHOD(mysqlnd_stmt, fetch),
+ MYSQLND_METHOD(mysqlnd_stmt, fetch_into),
- _mysqlnd_stmt_bind_param,
- _mysqlnd_stmt_bind_result,
- _mysqlnd_stmt_send_long_data,
- _mysqlnd_stmt_param_metadata,
- _mysqlnd_stmt_result_metadata,
+ MYSQLND_METHOD(mysqlnd_stmt, bind_param),
+ MYSQLND_METHOD(mysqlnd_stmt, bind_result),
+ MYSQLND_METHOD(mysqlnd_stmt, send_long_data),
+ MYSQLND_METHOD(mysqlnd_stmt, param_metadata),
+ MYSQLND_METHOD(mysqlnd_stmt, result_metadata),
- _mysqlnd_stmt_insert_id,
- _mysqlnd_stmt_affected_rows,
- _mysqlnd_stmt_num_rows,
+ MYSQLND_METHOD(mysqlnd_stmt, insert_id),
+ MYSQLND_METHOD(mysqlnd_stmt, affected_rows),
+ MYSQLND_METHOD(mysqlnd_stmt, num_rows),
- _mysqlnd_stmt_param_count,
- _mysqlnd_stmt_field_count,
- _mysqlnd_stmt_warning_count,
+ MYSQLND_METHOD(mysqlnd_stmt, param_count),
+ MYSQLND_METHOD(mysqlnd_stmt, field_count),
+ MYSQLND_METHOD(mysqlnd_stmt, warning_count),
- _mysqlnd_stmt_errno,
- _mysqlnd_stmt_error,
- _mysqlnd_stmt_sqlstate,
+ MYSQLND_METHOD(mysqlnd_stmt, errno),
+ MYSQLND_METHOD(mysqlnd_stmt, error),
+ MYSQLND_METHOD(mysqlnd_stmt, sqlstate),
- _mysqlnd_stmt_attr_get,
- _mysqlnd_stmt_attr_set,
+ MYSQLND_METHOD(mysqlnd_stmt, attr_get),
+ MYSQLND_METHOD(mysqlnd_stmt, attr_set),
};
| Thread |
|---|
| • PHP mysqlnd svn commit: r379 - trunk/mysqlnd | ahristov | 18 Jun |