mirror of
https://github.com/php/php-src.git
synced 2026-04-10 01:23:53 +02:00
Split struct MYSQLND in struct MYSQLND and struct MYSQLD_CONN_DATA.
A step in the direction of keeping internal data private
This commit is contained in:
@@ -1291,8 +1291,11 @@ PHP_FUNCTION(mysqli_get_host_info)
|
||||
return;
|
||||
}
|
||||
MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID);
|
||||
|
||||
#if !defined(MYSQLI_USE_MYSQLND)
|
||||
RETURN_STRING((mysql->mysql->host_info) ? mysql->mysql->host_info : "", 1);
|
||||
#else
|
||||
RETURN_STRING((mysql->mysql->data->host_info) ? mysql->mysql->data->host_info : "", 1);
|
||||
#endif
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -1804,7 +1807,7 @@ PHP_FUNCTION(mysqli_prepare)
|
||||
memcpy(last_error, stmt->stmt->last_error, MYSQL_ERRMSG_SIZE);
|
||||
memcpy(sqlstate, mysql->mysql->net.sqlstate, SQLSTATE_LENGTH+1);
|
||||
#else
|
||||
MYSQLND_ERROR_INFO error_info = *mysql->mysql->error_info;
|
||||
MYSQLND_ERROR_INFO error_info = *mysql->mysql->data->error_info;
|
||||
#endif
|
||||
mysqli_stmt_close(stmt->stmt, FALSE);
|
||||
stmt->stmt = NULL;
|
||||
@@ -1815,7 +1818,7 @@ PHP_FUNCTION(mysqli_prepare)
|
||||
memcpy(mysql->mysql->net.last_error, last_error, MYSQL_ERRMSG_SIZE);
|
||||
memcpy(mysql->mysql->net.sqlstate, sqlstate, SQLSTATE_LENGTH+1);
|
||||
#else
|
||||
*mysql->mysql->error_info = error_info;
|
||||
*mysql->mysql->data->error_info = error_info;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -431,12 +431,12 @@ PHP_FUNCTION(mysqli_error_list)
|
||||
MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID);
|
||||
array_init(return_value);
|
||||
#if defined(MYSQLI_USE_MYSQLND)
|
||||
if (mysql->mysql->error_info->error_list) {
|
||||
if (mysql->mysql->data->error_info->error_list) {
|
||||
MYSQLND_ERROR_LIST_ELEMENT * message;
|
||||
zend_llist_position pos;
|
||||
for (message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_first_ex(mysql->mysql->error_info->error_list, &pos);
|
||||
for (message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_first_ex(mysql->mysql->data->error_info->error_list, &pos);
|
||||
message;
|
||||
message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_next_ex(mysql->mysql->error_info->error_list, &pos))
|
||||
message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_next_ex(mysql->mysql->data->error_info->error_list, &pos))
|
||||
{
|
||||
zval * single_error;
|
||||
MAKE_STD_ZVAL(single_error);
|
||||
@@ -539,7 +539,7 @@ PHP_FUNCTION(mysqli_multi_query)
|
||||
strcpy(s_sqlstate, mysql_sqlstate(mysql->mysql));
|
||||
s_errno = mysql_errno(mysql->mysql);
|
||||
#else
|
||||
MYSQLND_ERROR_INFO error_info = *mysql->mysql->error_info;
|
||||
MYSQLND_ERROR_INFO error_info = *mysql->mysql->data->error_info;
|
||||
#endif
|
||||
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
|
||||
MYSQLI_DISABLE_MQ;
|
||||
@@ -550,7 +550,7 @@ PHP_FUNCTION(mysqli_multi_query)
|
||||
strcpy(mysql->mysql->net.sqlstate, s_sqlstate);
|
||||
mysql->mysql->net.last_errno = s_errno;
|
||||
#else
|
||||
*mysql->mysql->error_info = error_info;
|
||||
*mysql->mysql->data->error_info = error_info;
|
||||
#endif
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@@ -913,7 +913,11 @@ PHP_FUNCTION(mysqli_get_warnings)
|
||||
MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID);
|
||||
|
||||
if (mysql_warning_count(mysql->mysql)) {
|
||||
#ifdef MYSQLI_USE_MYSQLND
|
||||
w = php_get_warnings(mysql->mysql->data TSRMLS_CC);
|
||||
#else
|
||||
w = php_get_warnings(mysql->mysql TSRMLS_CC);
|
||||
#endif
|
||||
} else {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@@ -924,6 +928,7 @@ PHP_FUNCTION(mysqli_get_warnings)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto object mysqli_stmt_get_warnings(object link) */
|
||||
PHP_FUNCTION(mysqli_stmt_get_warnings)
|
||||
{
|
||||
@@ -949,6 +954,7 @@ PHP_FUNCTION(mysqli_stmt_get_warnings)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
#ifdef HAVE_MYSQLI_SET_CHARSET
|
||||
/* {{{ proto bool mysqli_set_charset(object link, string csname)
|
||||
sets client character set */
|
||||
@@ -1004,7 +1010,7 @@ PHP_FUNCTION(mysqli_get_charset)
|
||||
state = cs.state;
|
||||
comment = cs.comment;
|
||||
#else
|
||||
cs = mysql->mysql->charset;
|
||||
cs = mysql->mysql->data->charset;
|
||||
if (!cs) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "The connection has no charset associated");
|
||||
RETURN_NULL();
|
||||
|
||||
@@ -66,7 +66,12 @@ extern void php_mysqli_close(MY_MYSQL * mysql, int close_type, int resource_stat
|
||||
extern void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flag, int into_object);
|
||||
extern void php_clear_stmt_bind(MY_STMT *stmt TSRMLS_DC);
|
||||
extern void php_clear_mysql(MY_MYSQL *);
|
||||
extern MYSQLI_WARNING *php_get_warnings(MYSQL *mysql TSRMLS_DC);
|
||||
#ifdef MYSQLI_USE_MYSQLND
|
||||
extern MYSQLI_WARNING *php_get_warnings(MYSQLND_CONN_DATA * mysql TSRMLS_DC);
|
||||
#else
|
||||
extern MYSQLI_WARNING *php_get_warnings(MYSQL * mysql TSRMLS_DC);
|
||||
#endif
|
||||
|
||||
extern void php_clear_warnings(MYSQLI_WARNING *w);
|
||||
extern void php_free_stmt_bind_buffer(BIND_BUFFER bbuf, int type);
|
||||
extern void php_mysqli_report_error(const char *sqlstate, int errorno, const char *error TSRMLS_DC);
|
||||
@@ -94,162 +99,6 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRML
|
||||
}
|
||||
|
||||
|
||||
#define MYSQLI_RETURN_LONG_LONG(__val) \
|
||||
{ \
|
||||
if ((__val) < LONG_MAX) { \
|
||||
RETURN_LONG((long) (__val)); \
|
||||
} else { \
|
||||
char *ret; \
|
||||
/* always used with my_ulonglong -> %llu */ \
|
||||
int l = spprintf(&ret, 0, MYSQLI_LLU_SPEC, (__val)); \
|
||||
RETURN_STRINGL(ret, l, 0); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define MYSQLI_STORE_RESULT 0
|
||||
#define MYSQLI_USE_RESULT 1
|
||||
#ifdef MYSQLI_USE_MYSQLND
|
||||
#define MYSQLI_ASYNC 8
|
||||
#else
|
||||
/* libmysql */
|
||||
#define MYSQLI_ASYNC 0
|
||||
#endif
|
||||
|
||||
/* for mysqli_fetch_assoc */
|
||||
#define MYSQLI_ASSOC 1
|
||||
#define MYSQLI_NUM 2
|
||||
#define MYSQLI_BOTH 3
|
||||
|
||||
/* fetch types */
|
||||
#define FETCH_SIMPLE 1
|
||||
#define FETCH_RESULT 2
|
||||
|
||||
/*** REPORT MODES ***/
|
||||
#define MYSQLI_REPORT_OFF 0
|
||||
#define MYSQLI_REPORT_ERROR 1
|
||||
#define MYSQLI_REPORT_STRICT 2
|
||||
#define MYSQLI_REPORT_INDEX 4
|
||||
#define MYSQLI_REPORT_CLOSE 8
|
||||
#define MYSQLI_REPORT_ALL 255
|
||||
|
||||
#define MYSQLI_REPORT_MYSQL_ERROR(mysql) \
|
||||
if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql_errno(mysql)) { \
|
||||
php_mysqli_report_error(mysql_sqlstate(mysql), mysql_errno(mysql), mysql_error(mysql) TSRMLS_CC); \
|
||||
}
|
||||
|
||||
#define MYSQLI_REPORT_STMT_ERROR(stmt) \
|
||||
if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql_stmt_errno(stmt)) { \
|
||||
php_mysqli_report_error(mysql_stmt_sqlstate(stmt), mysql_stmt_errno(stmt), mysql_stmt_error(stmt) TSRMLS_CC); \
|
||||
}
|
||||
|
||||
void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_connect, zend_bool in_ctor);
|
||||
|
||||
void php_mysqli_init(INTERNAL_FUNCTION_PARAMETERS);
|
||||
|
||||
#endif /* MYSQLI_PRIV_H */
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2011 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 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_01.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 |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
| Author: Georg Richter <georg@php.net> |
|
||||
+----------------------------------------------------------------------+
|
||||
|
||||
$Id: php_mysqli_structs.h 302179 2010-08-13 09:57:04Z andrey $
|
||||
*/
|
||||
|
||||
#ifndef MYSQLI_PRIV_H
|
||||
#define MYSQLI_PRIV_H
|
||||
|
||||
#ifdef PHP_MYSQL_UNIX_SOCK_ADDR
|
||||
#ifdef MYSQL_UNIX_ADDR
|
||||
#undef MYSQL_UNIX_ADDR
|
||||
#endif
|
||||
#define MYSQL_UNIX_ADDR PHP_MYSQL_UNIX_SOCK_ADDR
|
||||
#endif
|
||||
|
||||
/* character set support */
|
||||
#if defined(MYSQLND_VERSION_ID) || MYSQL_VERSION_ID > 50009
|
||||
#define HAVE_MYSQLI_GET_CHARSET
|
||||
#endif
|
||||
|
||||
#if defined(MYSQLND_VERSION_ID) || (MYSQL_VERSION_ID > 40112 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID > 50005
|
||||
#define HAVE_MYSQLI_SET_CHARSET
|
||||
#endif
|
||||
|
||||
|
||||
extern const zend_function_entry mysqli_functions[];
|
||||
extern const zend_function_entry mysqli_link_methods[];
|
||||
extern const zend_function_entry mysqli_stmt_methods[];
|
||||
extern const zend_function_entry mysqli_result_methods[];
|
||||
extern const zend_function_entry mysqli_driver_methods[];
|
||||
extern const zend_function_entry mysqli_warning_methods[];
|
||||
extern const zend_function_entry mysqli_exception_methods[];
|
||||
|
||||
extern const mysqli_property_entry mysqli_link_property_entries[];
|
||||
extern const mysqli_property_entry mysqli_result_property_entries[];
|
||||
extern const mysqli_property_entry mysqli_stmt_property_entries[];
|
||||
extern const mysqli_property_entry mysqli_driver_property_entries[];
|
||||
extern const mysqli_property_entry mysqli_warning_property_entries[];
|
||||
|
||||
extern zend_property_info mysqli_link_property_info_entries[];
|
||||
extern zend_property_info mysqli_result_property_info_entries[];
|
||||
extern zend_property_info mysqli_stmt_property_info_entries[];
|
||||
extern zend_property_info mysqli_driver_property_info_entries[];
|
||||
extern zend_property_info mysqli_warning_property_info_entries[];
|
||||
|
||||
extern int php_le_pmysqli(void);
|
||||
extern void php_mysqli_dtor_p_elements(void *data);
|
||||
|
||||
extern void php_mysqli_close(MY_MYSQL * mysql, int close_type, int resource_status TSRMLS_DC);
|
||||
|
||||
extern void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flag, int into_object);
|
||||
extern void php_clear_stmt_bind(MY_STMT *stmt TSRMLS_DC);
|
||||
extern void php_clear_mysql(MY_MYSQL *);
|
||||
extern MYSQLI_WARNING *php_get_warnings(MYSQL *mysql TSRMLS_DC);
|
||||
extern void php_clear_warnings(MYSQLI_WARNING *w);
|
||||
extern void php_free_stmt_bind_buffer(BIND_BUFFER bbuf, int type);
|
||||
extern void php_mysqli_report_error(const char *sqlstate, int errorno, const char *error TSRMLS_DC);
|
||||
extern void php_mysqli_report_index(const char *query, unsigned int status TSRMLS_DC);
|
||||
extern void php_set_local_infile_handler_default(MY_MYSQL *);
|
||||
extern void php_mysqli_throw_sql_exception(char *sqlstate, int errorno TSRMLS_DC, char *format, ...);
|
||||
|
||||
#ifdef HAVE_SPL
|
||||
extern PHPAPI zend_class_entry *spl_ce_RuntimeException;
|
||||
#endif
|
||||
|
||||
#define REGISTER_MYSQLI_CLASS_ENTRY(name, mysqli_entry, class_functions) { \
|
||||
zend_class_entry ce; \
|
||||
INIT_CLASS_ENTRY(ce, name,class_functions); \
|
||||
ce.create_object = mysqli_objects_new; \
|
||||
mysqli_entry = zend_register_internal_class(&ce TSRMLS_CC); \
|
||||
} \
|
||||
|
||||
#define PHP_MYSQLI_EXPORT(__type) PHP_MYSQLI_API __type
|
||||
|
||||
PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRMLS_DC);
|
||||
|
||||
|
||||
#define MYSQLI_DISABLE_MQ if (mysql->multi_query) { \
|
||||
mysql_set_server_option(mysql->mysql, MYSQL_OPTION_MULTI_STATEMENTS_OFF); \
|
||||
mysql->multi_query = 0; \
|
||||
}
|
||||
|
||||
#define MYSQLI_ENABLE_MQ if (!mysql->multi_query) { \
|
||||
mysql_set_server_option(mysql->mysql, MYSQL_OPTION_MULTI_STATEMENTS_ON); \
|
||||
mysql->multi_query = 1; \
|
||||
}
|
||||
|
||||
|
||||
#define MYSQLI_RETURN_LONG_LONG(__val) \
|
||||
{ \
|
||||
if ((__val) < LONG_MAX) { \
|
||||
|
||||
@@ -205,12 +205,12 @@ static int link_error_list_read(mysqli_object *obj, zval **retval TSRMLS_DC)
|
||||
array_init(*retval);
|
||||
if (mysql) {
|
||||
#if defined(MYSQLI_USE_MYSQLND)
|
||||
if (mysql->mysql->error_info->error_list) {
|
||||
if (mysql->mysql->data->error_info->error_list) {
|
||||
MYSQLND_ERROR_LIST_ELEMENT * message;
|
||||
zend_llist_position pos;
|
||||
for (message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_first_ex(mysql->mysql->error_info->error_list, &pos);
|
||||
for (message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_first_ex(mysql->mysql->data->error_info->error_list, &pos);
|
||||
message;
|
||||
message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_next_ex(mysql->mysql->error_info->error_list, &pos))
|
||||
message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_next_ex(mysql->mysql->data->error_info->error_list, &pos))
|
||||
{
|
||||
zval * single_error;
|
||||
MAKE_STD_ZVAL(single_error);
|
||||
|
||||
@@ -102,7 +102,7 @@ MYSQLI_WARNING *php_get_warnings(MYSQL *mysql TSRMLS_DC)
|
||||
#else
|
||||
/* {{{ MYSQLI_WARNING *php_new_warning */
|
||||
static
|
||||
MYSQLI_WARNING *php_new_warning(const zval *reason, int errorno TSRMLS_DC)
|
||||
MYSQLI_WARNING *php_new_warning(const zval * reason, int errorno TSRMLS_DC)
|
||||
{
|
||||
MYSQLI_WARNING *w;
|
||||
|
||||
@@ -123,17 +123,17 @@ MYSQLI_WARNING *php_new_warning(const zval *reason, int errorno TSRMLS_DC)
|
||||
|
||||
|
||||
/* {{{ MYSQLI_WARNING *php_get_warnings(MYSQL *mysql TSRMLS_DC) */
|
||||
MYSQLI_WARNING *php_get_warnings(MYSQL *mysql TSRMLS_DC)
|
||||
MYSQLI_WARNING * php_get_warnings(MYSQLND_CONN_DATA * mysql TSRMLS_DC)
|
||||
{
|
||||
MYSQLI_WARNING *w, *first = NULL, *prev = NULL;
|
||||
MYSQL_RES *result;
|
||||
zval *row;
|
||||
|
||||
if (mysql_real_query(mysql, "SHOW WARNINGS", 13)) {
|
||||
if (mysql->m->query(mysql, "SHOW WARNINGS", 13 TSRMLS_CC)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
result = mysql_use_result(mysql);
|
||||
result = mysql->m->use_result(mysql TSRMLS_CC);
|
||||
|
||||
for (;;) {
|
||||
zval **entry;
|
||||
@@ -267,7 +267,9 @@ PHP_METHOD(mysqli_warning, __construct)
|
||||
{
|
||||
zval *z;
|
||||
mysqli_object *obj;
|
||||
#ifndef MYSQLI_USE_MYSQLND
|
||||
MYSQL *hdl;
|
||||
#endif
|
||||
MYSQLI_WARNING *w;
|
||||
MYSQLI_RESOURCE *mysqli_resource;
|
||||
|
||||
@@ -282,23 +284,36 @@ PHP_METHOD(mysqli_warning, __construct)
|
||||
if (obj->zo.ce == mysqli_link_class_entry) {
|
||||
MY_MYSQL *mysql;
|
||||
MYSQLI_FETCH_RESOURCE_CONN(mysql, &z, MYSQLI_STATUS_VALID);
|
||||
hdl = mysql->mysql;
|
||||
if (mysql_warning_count(mysql->mysql)) {
|
||||
#ifndef MYSQLI_USE_MYSQLND
|
||||
w = php_get_warnings(mysql->mysql TSRMLS_CC);
|
||||
#else
|
||||
w = php_get_warnings(mysql->mysql->data TSRMLS_CC);
|
||||
#endif
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "No warnings found");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
} else if (obj->zo.ce == mysqli_stmt_class_entry) {
|
||||
MY_STMT *stmt;
|
||||
MYSQLI_FETCH_RESOURCE_STMT(stmt, &z, MYSQLI_STATUS_VALID);
|
||||
#ifndef MYSQLI_USE_MYSQLND
|
||||
hdl = mysqli_stmt_get_connection(stmt->stmt);
|
||||
if (mysql_warning_count(hdl)) {
|
||||
w = php_get_warnings(hdl TSRMLS_CC);
|
||||
#else
|
||||
if (mysqlnd_stmt_warning_count(stmt->stmt)) {
|
||||
w = php_get_warnings(mysqli_stmt_get_connection(stmt->stmt) TSRMLS_CC);
|
||||
#endif
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "No warnings found");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid class argument");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (mysql_warning_count(hdl)) {
|
||||
w = php_get_warnings(hdl TSRMLS_CC);
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "No warnings found");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
|
||||
mysqli_resource->ptr = mysqli_resource->info = (void *)w;
|
||||
mysqli_resource->status = MYSQLI_STATUS_VALID;
|
||||
|
||||
@@ -63,9 +63,10 @@ PHPAPI const char * const mysqlnd_out_of_memory = "Out of memory";
|
||||
|
||||
PHPAPI MYSQLND_STATS *mysqlnd_global_stats = NULL;
|
||||
|
||||
|
||||
/* {{{ mysqlnd_conn::free_options */
|
||||
static void
|
||||
MYSQLND_METHOD(mysqlnd_conn, free_options)(MYSQLND * conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, free_options)(MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
zend_bool pers = conn->persistent;
|
||||
|
||||
@@ -100,7 +101,7 @@ MYSQLND_METHOD(mysqlnd_conn, free_options)(MYSQLND * conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::free_contents */
|
||||
static void
|
||||
MYSQLND_METHOD(mysqlnd_conn, free_contents)(MYSQLND * conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, free_contents)(MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
zend_bool pers = conn->persistent;
|
||||
|
||||
@@ -174,7 +175,7 @@ MYSQLND_METHOD(mysqlnd_conn, free_contents)(MYSQLND * conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::dtor */
|
||||
static void
|
||||
MYSQLND_METHOD_PRIVATE(mysqlnd_conn, dtor)(MYSQLND * conn TSRMLS_DC)
|
||||
MYSQLND_METHOD_PRIVATE(mysqlnd_conn, dtor)(MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
DBG_ENTER("mysqlnd_conn::dtor");
|
||||
DBG_INF_FMT("conn=%llu", conn->thread_id);
|
||||
@@ -203,9 +204,26 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_conn, dtor)(MYSQLND * conn TSRMLS_DC)
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ mysqlnd_conn::outter_dtor */
|
||||
static void
|
||||
MYSQLND_METHOD_PRIVATE(mysqlnd_conn, outter_dtor)(MYSQLND * conn_handle TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_CONN_DATA * conn = conn_handle->data;
|
||||
DBG_ENTER("mysqlnd_conn::outter_dtor");
|
||||
DBG_INF_FMT("conn=%llu", conn->thread_id);
|
||||
|
||||
conn->m->free_reference(conn TSRMLS_CC);
|
||||
|
||||
mnd_pefree(conn_handle, conn_handle->persistent);
|
||||
|
||||
DBG_VOID_RETURN;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ mysqlnd_conn::simple_command_handle_response */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, simple_command_handle_response)(MYSQLND * conn, enum mysqlnd_packet_type ok_packet,
|
||||
MYSQLND_METHOD(mysqlnd_conn, simple_command_handle_response)(MYSQLND_CONN_DATA * conn, enum mysqlnd_packet_type ok_packet,
|
||||
zend_bool silent, enum php_mysqlnd_server_command command,
|
||||
zend_bool ignore_upsert_status TSRMLS_DC)
|
||||
{
|
||||
@@ -304,7 +322,7 @@ MYSQLND_METHOD(mysqlnd_conn, simple_command_handle_response)(MYSQLND * conn, enu
|
||||
|
||||
/* {{{ mysqlnd_conn::simple_command */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, simple_command)(MYSQLND * conn, enum php_mysqlnd_server_command command,
|
||||
MYSQLND_METHOD(mysqlnd_conn, simple_command)(MYSQLND_CONN_DATA * conn, enum php_mysqlnd_server_command command,
|
||||
const zend_uchar * const arg, size_t arg_len, enum mysqlnd_packet_type ok_packet, zend_bool silent,
|
||||
zend_bool ignore_upsert_status TSRMLS_DC)
|
||||
{
|
||||
@@ -369,7 +387,7 @@ MYSQLND_METHOD(mysqlnd_conn, simple_command)(MYSQLND * conn, enum php_mysqlnd_se
|
||||
|
||||
/* {{{ mysqlnd_conn::set_server_option */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, set_server_option)(MYSQLND * const conn, enum_mysqlnd_server_option option TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, set_server_option)(MYSQLND_CONN_DATA * const conn, enum_mysqlnd_server_option option TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, set_server_option);
|
||||
zend_uchar buffer[2];
|
||||
@@ -389,7 +407,7 @@ MYSQLND_METHOD(mysqlnd_conn, set_server_option)(MYSQLND * const conn, enum_mysql
|
||||
|
||||
/* {{{ mysqlnd_conn::restart_psession */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, restart_psession)(MYSQLND * conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, restart_psession)(MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
DBG_ENTER("mysqlnd_conn::restart_psession");
|
||||
MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_CONNECT_REUSED);
|
||||
@@ -405,7 +423,7 @@ MYSQLND_METHOD(mysqlnd_conn, restart_psession)(MYSQLND * conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::end_psession */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, end_psession)(MYSQLND * conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, end_psession)(MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
DBG_ENTER("mysqlnd_conn::end_psession");
|
||||
DBG_RETURN(PASS);
|
||||
@@ -416,7 +434,7 @@ MYSQLND_METHOD(mysqlnd_conn, end_psession)(MYSQLND * conn TSRMLS_DC)
|
||||
/* {{{ mysqlnd_switch_to_ssl_if_needed */
|
||||
static enum_func_status
|
||||
mysqlnd_switch_to_ssl_if_needed(
|
||||
MYSQLND * conn,
|
||||
MYSQLND_CONN_DATA * conn,
|
||||
const MYSQLND_PACKET_GREET * const greet_packet,
|
||||
const MYSQLND_OPTIONS * const options,
|
||||
unsigned long mysql_flags
|
||||
@@ -474,7 +492,7 @@ end:
|
||||
/* {{{ mysqlnd_connect_run_authentication */
|
||||
static enum_func_status
|
||||
mysqlnd_connect_run_authentication(
|
||||
MYSQLND * conn,
|
||||
MYSQLND_CONN_DATA * conn,
|
||||
const char * const user,
|
||||
const char * const passwd,
|
||||
const char * const db,
|
||||
@@ -560,7 +578,8 @@ mysqlnd_connect_run_authentication(
|
||||
plugin_data, plugin_data_len, options, mysql_flags TSRMLS_CC);
|
||||
|
||||
|
||||
ret = mysqlnd_auth_handshake(conn, user, passwd, passwd_len, db, db_len, options, mysql_flags, greet_packet->charset_no,
|
||||
ret = mysqlnd_auth_handshake(conn, user, passwd, passwd_len, db, db_len, options, mysql_flags,
|
||||
greet_packet->charset_no,
|
||||
first_call,
|
||||
requested_protocol,
|
||||
scrambled_data, scrambled_data_len,
|
||||
@@ -605,7 +624,7 @@ end:
|
||||
|
||||
/* {{{ mysqlnd_conn::connect */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, connect)(MYSQLND * conn,
|
||||
MYSQLND_METHOD(mysqlnd_conn, connect)(MYSQLND_CONN_DATA * conn,
|
||||
const char *host, const char *user,
|
||||
const char *passwd, unsigned int passwd_len,
|
||||
const char *db, unsigned int db_len,
|
||||
@@ -848,9 +867,9 @@ MYSQLND_METHOD(mysqlnd_conn, connect)(MYSQLND * conn,
|
||||
}
|
||||
}
|
||||
} else {
|
||||
conn->unix_socket = mnd_pestrdup(socket_or_pipe, conn->persistent);
|
||||
conn->unix_socket = mnd_pestrdup(socket_or_pipe, conn->persistent);
|
||||
if (unix_socket) {
|
||||
conn->host_info = mnd_pestrdup("Localhost via UNIX socket", conn->persistent);
|
||||
conn->host_info = mnd_pestrdup("Localhost via UNIX socket", conn->persistent);
|
||||
} else if (named_pipe) {
|
||||
char *p;
|
||||
mnd_sprintf(&p, 0, "%s via named pipe", conn->unix_socket);
|
||||
@@ -950,7 +969,7 @@ err:
|
||||
|
||||
|
||||
/* {{{ mysqlnd_connect */
|
||||
PHPAPI MYSQLND * mysqlnd_connect(MYSQLND * conn,
|
||||
PHPAPI MYSQLND * mysqlnd_connect(MYSQLND * conn_handle,
|
||||
const char * host, const char * user,
|
||||
const char * passwd, unsigned int passwd_len,
|
||||
const char * db, unsigned int db_len,
|
||||
@@ -961,17 +980,19 @@ PHPAPI MYSQLND * mysqlnd_connect(MYSQLND * conn,
|
||||
{
|
||||
enum_func_status ret = FAIL;
|
||||
zend_bool self_alloced = FALSE;
|
||||
MYSQLND_CONN_DATA * conn;
|
||||
|
||||
DBG_ENTER("mysqlnd_connect");
|
||||
DBG_INF_FMT("host=%s user=%s db=%s port=%u flags=%u", host?host:"", user?user:"", db?db:"", port, mysql_flags);
|
||||
|
||||
if (!conn) {
|
||||
if (!conn_handle) {
|
||||
self_alloced = TRUE;
|
||||
if (!(conn = mysqlnd_init(FALSE))) {
|
||||
if (!(conn_handle = mysqlnd_init(FALSE))) {
|
||||
/* OOM */
|
||||
DBG_RETURN(NULL);
|
||||
}
|
||||
}
|
||||
conn = conn_handle->data;
|
||||
|
||||
ret = conn->m->connect(conn, host, user, passwd, passwd_len, db, db_len, port, socket_or_pipe, mysql_flags TSRMLS_CC);
|
||||
|
||||
@@ -981,11 +1002,11 @@ PHPAPI MYSQLND * mysqlnd_connect(MYSQLND * conn,
|
||||
We have alloced, thus there are no references to this
|
||||
object - we are free to kill it!
|
||||
*/
|
||||
conn->m->dtor(conn TSRMLS_CC);
|
||||
conn->m->outter_dtor(conn_handle TSRMLS_CC);
|
||||
}
|
||||
DBG_RETURN(NULL);
|
||||
}
|
||||
DBG_RETURN(conn);
|
||||
DBG_RETURN(conn_handle);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -996,7 +1017,7 @@ PHPAPI MYSQLND * mysqlnd_connect(MYSQLND * conn,
|
||||
Still the result from the query is PASS
|
||||
*/
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, query)(MYSQLND * conn, const char * query, unsigned int query_len TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, query)(MYSQLND_CONN_DATA * conn, const char * query, unsigned int query_len TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, query);
|
||||
enum_func_status ret = FAIL;
|
||||
@@ -1021,7 +1042,7 @@ MYSQLND_METHOD(mysqlnd_conn, query)(MYSQLND * conn, const char * query, unsigned
|
||||
|
||||
/* {{{ mysqlnd_conn::send_query */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, send_query)(MYSQLND * conn, const char * query, unsigned int query_len TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, send_query)(MYSQLND_CONN_DATA * conn, const char * query, unsigned int query_len TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, send_query);
|
||||
enum_func_status ret;
|
||||
@@ -1030,8 +1051,8 @@ MYSQLND_METHOD(mysqlnd_conn, send_query)(MYSQLND * conn, const char * query, uns
|
||||
|
||||
if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
|
||||
ret = conn->m->simple_command(conn, COM_QUERY, (zend_uchar *) query, query_len,
|
||||
PROT_LAST /* we will handle the OK packet*/,
|
||||
FALSE, FALSE TSRMLS_CC);
|
||||
PROT_LAST /* we will handle the OK packet*/,
|
||||
FALSE, FALSE TSRMLS_CC);
|
||||
if (PASS == ret) {
|
||||
CONN_SET_STATE(conn, CONN_QUERY_SENT);
|
||||
}
|
||||
@@ -1044,7 +1065,7 @@ MYSQLND_METHOD(mysqlnd_conn, send_query)(MYSQLND * conn, const char * query, uns
|
||||
|
||||
/* {{{ mysqlnd_conn::reap_query */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, reap_query)(MYSQLND * conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, reap_query)(MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, reap_query);
|
||||
enum_mysqlnd_connection_state state = CONN_GET_STATE(conn);
|
||||
@@ -1076,7 +1097,7 @@ MYSQLND ** mysqlnd_stream_array_check_for_readiness(MYSQLND ** conn_array TSRMLS
|
||||
MYSQLND **ret = NULL;
|
||||
|
||||
while (*p) {
|
||||
if (CONN_GET_STATE(*p) <= CONN_READY || CONN_GET_STATE(*p) == CONN_QUIT_SENT) {
|
||||
if (CONN_GET_STATE((*p)->data) <= CONN_READY || CONN_GET_STATE((*p)->data) == CONN_QUIT_SENT) {
|
||||
cnt++;
|
||||
}
|
||||
p++;
|
||||
@@ -1085,7 +1106,7 @@ MYSQLND ** mysqlnd_stream_array_check_for_readiness(MYSQLND ** conn_array TSRMLS
|
||||
MYSQLND **ret_p = ret = ecalloc(cnt + 1, sizeof(MYSQLND *));
|
||||
p_p = p = conn_array;
|
||||
while (*p) {
|
||||
if (CONN_GET_STATE(*p) <= CONN_READY || CONN_GET_STATE(*p) == CONN_QUIT_SENT) {
|
||||
if (CONN_GET_STATE((*p)->data) <= CONN_READY || CONN_GET_STATE((*p)->data) == CONN_QUIT_SENT) {
|
||||
*ret_p = *p;
|
||||
*p = NULL;
|
||||
ret_p++;
|
||||
@@ -1102,7 +1123,7 @@ MYSQLND ** mysqlnd_stream_array_check_for_readiness(MYSQLND ** conn_array TSRMLS
|
||||
|
||||
|
||||
/* {{{ stream_select mysqlnd_stream_array_to_fd_set functions */
|
||||
static int mysqlnd_stream_array_to_fd_set(MYSQLND **conn_array, fd_set *fds, php_socket_t *max_fd TSRMLS_DC)
|
||||
static int mysqlnd_stream_array_to_fd_set(MYSQLND ** conn_array, fd_set * fds, php_socket_t * max_fd TSRMLS_DC)
|
||||
{
|
||||
php_socket_t this_fd;
|
||||
int cnt = 0;
|
||||
@@ -1114,7 +1135,7 @@ static int mysqlnd_stream_array_to_fd_set(MYSQLND **conn_array, fd_set *fds, php
|
||||
* when casting. It is only used here so that the buffered data warning
|
||||
* is not displayed.
|
||||
* */
|
||||
if (SUCCESS == php_stream_cast((*p)->net->stream, PHP_STREAM_AS_FD_FOR_SELECT | PHP_STREAM_CAST_INTERNAL,
|
||||
if (SUCCESS == php_stream_cast((*p)->data->net->stream, PHP_STREAM_AS_FD_FOR_SELECT | PHP_STREAM_CAST_INTERNAL,
|
||||
(void*)&this_fd, 1) && this_fd >= 0) {
|
||||
|
||||
PHP_SAFE_FD_SET(this_fd, fds);
|
||||
@@ -1129,7 +1150,7 @@ static int mysqlnd_stream_array_to_fd_set(MYSQLND **conn_array, fd_set *fds, php
|
||||
return cnt ? 1 : 0;
|
||||
}
|
||||
|
||||
static int mysqlnd_stream_array_from_fd_set(MYSQLND **conn_array, fd_set *fds TSRMLS_DC)
|
||||
static int mysqlnd_stream_array_from_fd_set(MYSQLND ** conn_array, fd_set * fds TSRMLS_DC)
|
||||
{
|
||||
php_socket_t this_fd;
|
||||
int ret = 0;
|
||||
@@ -1139,7 +1160,7 @@ static int mysqlnd_stream_array_from_fd_set(MYSQLND **conn_array, fd_set *fds TS
|
||||
MYSQLND **fwd = conn_array, **bckwd = conn_array;
|
||||
|
||||
while (*fwd) {
|
||||
if (SUCCESS == php_stream_cast((*fwd)->net->stream, PHP_STREAM_AS_FD_FOR_SELECT | PHP_STREAM_CAST_INTERNAL,
|
||||
if (SUCCESS == php_stream_cast((*fwd)->data->net->stream, PHP_STREAM_AS_FD_FOR_SELECT | PHP_STREAM_CAST_INTERNAL,
|
||||
(void*)&this_fd, 1) && this_fd >= 0) {
|
||||
if (PHP_SAFE_FD_ISSET(this_fd, fds)) {
|
||||
if (disproportion) {
|
||||
@@ -1160,25 +1181,26 @@ static int mysqlnd_stream_array_from_fd_set(MYSQLND **conn_array, fd_set *fds TS
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
#ifndef PHP_WIN32
|
||||
#define php_select(m, r, w, e, t) select(m, r, w, e, t)
|
||||
#else
|
||||
#include "win32/select.h"
|
||||
#endif
|
||||
|
||||
|
||||
/* {{{ _mysqlnd_poll */
|
||||
PHPAPI enum_func_status
|
||||
_mysqlnd_poll(MYSQLND **r_array, MYSQLND **e_array, MYSQLND ***dont_poll, long sec, long usec, uint * desc_num TSRMLS_DC)
|
||||
{
|
||||
|
||||
struct timeval tv;
|
||||
struct timeval *tv_p = NULL;
|
||||
fd_set rfds, wfds, efds;
|
||||
php_socket_t max_fd = 0;
|
||||
int retval, sets = 0;
|
||||
int set_count, max_set_count = 0;
|
||||
DBG_ENTER("mysqlnd_poll");
|
||||
|
||||
DBG_ENTER("_mysqlnd_poll");
|
||||
if (sec < 0 || usec < 0) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Negative values passed for sec and/or usec");
|
||||
DBG_RETURN(FAIL);
|
||||
@@ -1241,7 +1263,6 @@ _mysqlnd_poll(MYSQLND **r_array, MYSQLND **e_array, MYSQLND ***dont_poll, long s
|
||||
}
|
||||
|
||||
*desc_num = retval;
|
||||
|
||||
DBG_RETURN(PASS);
|
||||
}
|
||||
/* }}} */
|
||||
@@ -1256,7 +1277,7 @@ _mysqlnd_poll(MYSQLND **r_array, MYSQLND **e_array, MYSQLND ***dont_poll, long s
|
||||
|
||||
/* {{{ mysqlnd_conn::list_fields */
|
||||
MYSQLND_RES *
|
||||
MYSQLND_METHOD(mysqlnd_conn, list_fields)(MYSQLND * conn, const char *table, const char *achtung_wild TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, list_fields)(MYSQLND_CONN_DATA * conn, const char *table, const char *achtung_wild TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, list_fields);
|
||||
/* db + \0 + wild + \0 (for wild) */
|
||||
@@ -1328,7 +1349,7 @@ MYSQLND_METHOD(mysqlnd_conn, list_fields)(MYSQLND * conn, const char *table, con
|
||||
|
||||
/* {{{ mysqlnd_conn::list_method */
|
||||
MYSQLND_RES *
|
||||
MYSQLND_METHOD(mysqlnd_conn, list_method)(MYSQLND * conn, const char * query, const char *achtung_wild, char *par1 TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, list_method)(MYSQLND_CONN_DATA * conn, const char * query, const char *achtung_wild, char *par1 TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, list_method);
|
||||
char * show_query = NULL;
|
||||
@@ -1368,7 +1389,7 @@ MYSQLND_METHOD(mysqlnd_conn, list_method)(MYSQLND * conn, const char * query, co
|
||||
|
||||
/* {{{ mysqlnd_conn::errno */
|
||||
static unsigned int
|
||||
MYSQLND_METHOD(mysqlnd_conn, errno)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, errno)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
return conn->error_info->error_no;
|
||||
}
|
||||
@@ -1377,7 +1398,7 @@ MYSQLND_METHOD(mysqlnd_conn, errno)(const MYSQLND * const conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::error */
|
||||
static const char *
|
||||
MYSQLND_METHOD(mysqlnd_conn, error)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, error)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
return conn->error_info->error;
|
||||
}
|
||||
@@ -1386,7 +1407,7 @@ MYSQLND_METHOD(mysqlnd_conn, error)(const MYSQLND * const conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::sqlstate */
|
||||
static const char *
|
||||
MYSQLND_METHOD(mysqlnd_conn, sqlstate)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, sqlstate)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
return conn->error_info->sqlstate[0] ? conn->error_info->sqlstate:MYSQLND_SQLSTATE_NULL;
|
||||
}
|
||||
@@ -1394,16 +1415,19 @@ MYSQLND_METHOD(mysqlnd_conn, sqlstate)(const MYSQLND * const conn TSRMLS_DC)
|
||||
|
||||
|
||||
/* {{{ mysqlnd_old_escape_string */
|
||||
PHPAPI ulong mysqlnd_old_escape_string(char *newstr, const char *escapestr, size_t escapestr_len TSRMLS_DC)
|
||||
PHPAPI ulong
|
||||
mysqlnd_old_escape_string(char * newstr, const char * escapestr, size_t escapestr_len TSRMLS_DC)
|
||||
{
|
||||
DBG_ENTER("mysqlnd_old_escape_string");
|
||||
DBG_RETURN(mysqlnd_cset_escape_slashes(mysqlnd_find_charset_name("latin1"), newstr, escapestr, escapestr_len TSRMLS_CC));
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ mysqlnd_conn::ssl_set */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, ssl_set)(MYSQLND * const conn, const char * key, const char * const cert, const char * const ca, const char * const capath, const char * const cipher TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, ssl_set)(MYSQLND_CONN_DATA * const conn, const char * key, const char * const cert,
|
||||
const char * const ca, const char * const capath, const char * const cipher TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, ssl_set);
|
||||
enum_func_status ret = FAIL;
|
||||
@@ -1425,9 +1449,10 @@ MYSQLND_METHOD(mysqlnd_conn, ssl_set)(MYSQLND * const conn, const char * key, co
|
||||
|
||||
/* {{{ mysqlnd_conn::escape_string */
|
||||
static ulong
|
||||
MYSQLND_METHOD(mysqlnd_conn, escape_string)(MYSQLND * const conn, char *newstr, const char *escapestr, size_t escapestr_len TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, escape_string)(MYSQLND * const conn_handle, char * newstr, const char * escapestr, size_t escapestr_len TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, escape_string);
|
||||
MYSQLND_CONN_DATA * conn = conn_handle->data;
|
||||
ulong ret;
|
||||
DBG_ENTER("mysqlnd_conn::escape_string");
|
||||
DBG_INF_FMT("conn=%llu", conn->thread_id);
|
||||
@@ -1447,7 +1472,7 @@ MYSQLND_METHOD(mysqlnd_conn, escape_string)(MYSQLND * const conn, char *newstr,
|
||||
|
||||
/* {{{ mysqlnd_conn::dump_debug_info */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, dump_debug_info)(MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, dump_debug_info)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, server_dump_debug_information);
|
||||
enum_func_status ret = FAIL;
|
||||
@@ -1466,7 +1491,7 @@ MYSQLND_METHOD(mysqlnd_conn, dump_debug_info)(MYSQLND * const conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::select_db */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, select_db)(MYSQLND * const conn, const char * const db, unsigned int db_len TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, select_db)(MYSQLND_CONN_DATA * const conn, const char * const db, unsigned int db_len TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, select_db);
|
||||
enum_func_status ret = FAIL;
|
||||
@@ -1502,7 +1527,7 @@ MYSQLND_METHOD(mysqlnd_conn, select_db)(MYSQLND * const conn, const char * const
|
||||
|
||||
/* {{{ mysqlnd_conn::ping */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, ping)(MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, ping)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, ping);
|
||||
enum_func_status ret = FAIL;
|
||||
@@ -1528,7 +1553,7 @@ MYSQLND_METHOD(mysqlnd_conn, ping)(MYSQLND * const conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::statistic */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, statistic)(MYSQLND * conn, char **message, unsigned int * message_len TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, statistic)(MYSQLND_CONN_DATA * conn, char **message, unsigned int * message_len TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, get_server_statistics);
|
||||
enum_func_status ret = FAIL;
|
||||
@@ -1567,7 +1592,7 @@ MYSQLND_METHOD(mysqlnd_conn, statistic)(MYSQLND * conn, char **message, unsigned
|
||||
|
||||
/* {{{ mysqlnd_conn::kill */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, kill)(MYSQLND * conn, unsigned int pid TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, kill)(MYSQLND_CONN_DATA * conn, unsigned int pid TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, kill_connection);
|
||||
enum_func_status ret = FAIL;
|
||||
@@ -1600,7 +1625,7 @@ MYSQLND_METHOD(mysqlnd_conn, kill)(MYSQLND * conn, unsigned int pid TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::set_charset */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, set_charset)(MYSQLND * const conn, const char * const csname TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, set_charset)(MYSQLND_CONN_DATA * const conn, const char * const csname TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, set_charset);
|
||||
enum_func_status ret = FAIL;
|
||||
@@ -1639,7 +1664,7 @@ MYSQLND_METHOD(mysqlnd_conn, set_charset)(MYSQLND * const conn, const char * con
|
||||
|
||||
/* {{{ mysqlnd_conn::refresh */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, refresh)(MYSQLND * const conn, uint8_t options TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, refresh)(MYSQLND_CONN_DATA * const conn, uint8_t options TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, refresh_server);
|
||||
enum_func_status ret = FAIL;
|
||||
@@ -1661,7 +1686,7 @@ MYSQLND_METHOD(mysqlnd_conn, refresh)(MYSQLND * const conn, uint8_t options TSRM
|
||||
|
||||
/* {{{ mysqlnd_conn::shutdown */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, shutdown)(MYSQLND * const conn, uint8_t level TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, shutdown)(MYSQLND_CONN_DATA * const conn, uint8_t level TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, shutdown_server);
|
||||
enum_func_status ret = FAIL;
|
||||
@@ -1683,7 +1708,7 @@ MYSQLND_METHOD(mysqlnd_conn, shutdown)(MYSQLND * const conn, uint8_t level TSRML
|
||||
|
||||
/* {{{ mysqlnd_send_close */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, send_close)(MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, send_close)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
enum_func_status ret = PASS;
|
||||
|
||||
@@ -1695,7 +1720,7 @@ MYSQLND_METHOD(mysqlnd_conn, send_close)(MYSQLND * const conn TSRMLS_DC)
|
||||
case CONN_READY:
|
||||
DBG_INF("Connection clean, sending COM_QUIT");
|
||||
if (conn->net->stream) {
|
||||
ret = conn->m->simple_command(conn, COM_QUIT, NULL, 0, PROT_LAST, TRUE, TRUE TSRMLS_CC);
|
||||
ret = conn->m->simple_command(conn, COM_QUIT, NULL, 0, PROT_LAST, TRUE, TRUE TSRMLS_CC);
|
||||
}
|
||||
/* Do nothing */
|
||||
break;
|
||||
@@ -1737,9 +1762,10 @@ MYSQLND_METHOD(mysqlnd_conn, send_close)(MYSQLND * const conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::close */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, close)(MYSQLND * conn, enum_connection_close_type close_type TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, close)(MYSQLND * conn_handle, enum_connection_close_type close_type TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, close);
|
||||
MYSQLND_CONN_DATA * conn = conn_handle->data;
|
||||
enum_func_status ret = FAIL;
|
||||
static enum_mysqlnd_collected_stats
|
||||
close_type_to_stat_map[MYSQLND_CLOSE_LAST] = {
|
||||
@@ -1770,7 +1796,7 @@ MYSQLND_METHOD(mysqlnd_conn, close)(MYSQLND * conn, enum_connection_close_type c
|
||||
/* do it after free_reference and we might crash */
|
||||
conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
|
||||
|
||||
ret = conn->m->free_reference(conn TSRMLS_CC);
|
||||
conn->m->outter_dtor(conn_handle TSRMLS_CC);
|
||||
}
|
||||
DBG_RETURN(ret);
|
||||
}
|
||||
@@ -1778,8 +1804,8 @@ MYSQLND_METHOD(mysqlnd_conn, close)(MYSQLND * conn, enum_connection_close_type c
|
||||
|
||||
|
||||
/* {{{ mysqlnd_conn::get_reference */
|
||||
static MYSQLND *
|
||||
MYSQLND_METHOD_PRIVATE(mysqlnd_conn, get_reference)(MYSQLND * const conn TSRMLS_DC)
|
||||
static MYSQLND_CONN_DATA *
|
||||
MYSQLND_METHOD_PRIVATE(mysqlnd_conn, get_reference)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
DBG_ENTER("mysqlnd_conn::get_reference");
|
||||
++conn->refcount;
|
||||
@@ -1791,7 +1817,7 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_conn, get_reference)(MYSQLND * const conn TSRMLS_
|
||||
|
||||
/* {{{ mysqlnd_conn::free_reference */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD_PRIVATE(mysqlnd_conn, free_reference)(MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD_PRIVATE(mysqlnd_conn, free_reference)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
enum_func_status ret = PASS;
|
||||
DBG_ENTER("mysqlnd_conn::free_reference");
|
||||
@@ -1812,7 +1838,7 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_conn, free_reference)(MYSQLND * const conn TSRMLS
|
||||
|
||||
/* {{{ mysqlnd_conn::get_state */
|
||||
static enum mysqlnd_connection_state
|
||||
MYSQLND_METHOD_PRIVATE(mysqlnd_conn, get_state)(MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD_PRIVATE(mysqlnd_conn, get_state)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
DBG_ENTER("mysqlnd_conn::get_state");
|
||||
DBG_RETURN(conn->state);
|
||||
@@ -1822,7 +1848,7 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_conn, get_state)(MYSQLND * const conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::set_state */
|
||||
static void
|
||||
MYSQLND_METHOD_PRIVATE(mysqlnd_conn, set_state)(MYSQLND * const conn, enum mysqlnd_connection_state new_state TSRMLS_DC)
|
||||
MYSQLND_METHOD_PRIVATE(mysqlnd_conn, set_state)(MYSQLND_CONN_DATA * const conn, enum mysqlnd_connection_state new_state TSRMLS_DC)
|
||||
{
|
||||
DBG_ENTER("mysqlnd_conn::set_state");
|
||||
DBG_INF_FMT("New state=%u", new_state);
|
||||
@@ -1834,7 +1860,7 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_conn, set_state)(MYSQLND * const conn, enum mysql
|
||||
|
||||
/* {{{ mysqlnd_conn::field_count */
|
||||
static unsigned int
|
||||
MYSQLND_METHOD(mysqlnd_conn, field_count)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, field_count)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
return conn->field_count;
|
||||
}
|
||||
@@ -1843,7 +1869,7 @@ MYSQLND_METHOD(mysqlnd_conn, field_count)(const MYSQLND * const conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::server_status */
|
||||
static unsigned int
|
||||
MYSQLND_METHOD(mysqlnd_conn, server_status)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, server_status)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
return conn->upsert_status->server_status;
|
||||
}
|
||||
@@ -1852,7 +1878,7 @@ MYSQLND_METHOD(mysqlnd_conn, server_status)(const MYSQLND * const conn TSRMLS_DC
|
||||
|
||||
/* {{{ mysqlnd_conn::insert_id */
|
||||
static uint64_t
|
||||
MYSQLND_METHOD(mysqlnd_conn, insert_id)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, insert_id)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
return conn->upsert_status->last_insert_id;
|
||||
}
|
||||
@@ -1861,7 +1887,7 @@ MYSQLND_METHOD(mysqlnd_conn, insert_id)(const MYSQLND * const conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::affected_rows */
|
||||
static uint64_t
|
||||
MYSQLND_METHOD(mysqlnd_conn, affected_rows)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, affected_rows)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
return conn->upsert_status->affected_rows;
|
||||
}
|
||||
@@ -1870,7 +1896,7 @@ MYSQLND_METHOD(mysqlnd_conn, affected_rows)(const MYSQLND * const conn TSRMLS_DC
|
||||
|
||||
/* {{{ mysqlnd_conn::warning_count */
|
||||
static unsigned int
|
||||
MYSQLND_METHOD(mysqlnd_conn, warning_count)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, warning_count)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
return conn->upsert_status->warning_count;
|
||||
}
|
||||
@@ -1879,13 +1905,12 @@ MYSQLND_METHOD(mysqlnd_conn, warning_count)(const MYSQLND * const conn TSRMLS_DC
|
||||
|
||||
/* {{{ mysqlnd_conn::info */
|
||||
static const char *
|
||||
MYSQLND_METHOD(mysqlnd_conn, info)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, info)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
return conn->last_message;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
#if !defined(MYSQLND_USE_OPTIMISATIONS) || MYSQLND_USE_OPTIMISATIONS == 0
|
||||
/* {{{ mysqlnd_get_client_info */
|
||||
PHPAPI const char * mysqlnd_get_client_info()
|
||||
{
|
||||
@@ -1900,11 +1925,11 @@ PHPAPI unsigned int mysqlnd_get_client_version()
|
||||
return MYSQLND_VERSION_ID;
|
||||
}
|
||||
/* }}} */
|
||||
#endif
|
||||
|
||||
|
||||
/* {{{ mysqlnd_conn::get_server_info */
|
||||
static const char *
|
||||
MYSQLND_METHOD(mysqlnd_conn, get_server_info)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, get_server_info)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
return conn->server_version;
|
||||
}
|
||||
@@ -1913,7 +1938,7 @@ MYSQLND_METHOD(mysqlnd_conn, get_server_info)(const MYSQLND * const conn TSRMLS_
|
||||
|
||||
/* {{{ mysqlnd_conn::get_host_info */
|
||||
static const char *
|
||||
MYSQLND_METHOD(mysqlnd_conn, get_host_info)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, get_host_info)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
return conn->host_info;
|
||||
}
|
||||
@@ -1922,7 +1947,7 @@ MYSQLND_METHOD(mysqlnd_conn, get_host_info)(const MYSQLND * const conn TSRMLS_DC
|
||||
|
||||
/* {{{ mysqlnd_conn::get_proto_info */
|
||||
static unsigned int
|
||||
MYSQLND_METHOD(mysqlnd_conn, get_proto_info)(const MYSQLND *const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, get_proto_info)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
return conn->protocol_version;
|
||||
}
|
||||
@@ -1931,7 +1956,7 @@ MYSQLND_METHOD(mysqlnd_conn, get_proto_info)(const MYSQLND *const conn TSRMLS_DC
|
||||
|
||||
/* {{{ mysqlnd_conn::charset_name */
|
||||
static const char *
|
||||
MYSQLND_METHOD(mysqlnd_conn, charset_name)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, charset_name)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
return conn->charset->name;
|
||||
}
|
||||
@@ -1940,7 +1965,7 @@ MYSQLND_METHOD(mysqlnd_conn, charset_name)(const MYSQLND * const conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::thread_id */
|
||||
static uint64_t
|
||||
MYSQLND_METHOD(mysqlnd_conn, thread_id)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, thread_id)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
return conn->thread_id;
|
||||
}
|
||||
@@ -1949,7 +1974,7 @@ MYSQLND_METHOD(mysqlnd_conn, thread_id)(const MYSQLND * const conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::get_server_version */
|
||||
static unsigned long
|
||||
MYSQLND_METHOD(mysqlnd_conn, get_server_version)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, get_server_version)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
long major, minor, patch;
|
||||
char *p;
|
||||
@@ -1971,7 +1996,7 @@ MYSQLND_METHOD(mysqlnd_conn, get_server_version)(const MYSQLND * const conn TSRM
|
||||
|
||||
/* {{{ mysqlnd_conn::more_results */
|
||||
static zend_bool
|
||||
MYSQLND_METHOD(mysqlnd_conn, more_results)(const MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, more_results)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
DBG_ENTER("mysqlnd_conn::more_results");
|
||||
/* (conn->state == CONN_NEXT_RESULT_PENDING) too */
|
||||
@@ -1982,7 +2007,7 @@ MYSQLND_METHOD(mysqlnd_conn, more_results)(const MYSQLND * const conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::next_result */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, next_result)(MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, next_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, next_result);
|
||||
enum_func_status ret = FAIL;
|
||||
@@ -2081,10 +2106,10 @@ PHPAPI const char *mysqlnd_field_type_name(enum mysqlnd_field_types field_type)
|
||||
|
||||
/* {{{ mysqlnd_conn::change_user */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, change_user)(MYSQLND * const conn,
|
||||
const char *user,
|
||||
const char *passwd,
|
||||
const char *db,
|
||||
MYSQLND_METHOD(mysqlnd_conn, change_user)(MYSQLND_CONN_DATA * const conn,
|
||||
const char * user,
|
||||
const char * passwd,
|
||||
const char * db,
|
||||
zend_bool silent,
|
||||
size_t passwd_len
|
||||
TSRMLS_DC)
|
||||
@@ -2242,7 +2267,7 @@ end:
|
||||
|
||||
/* {{{ mysqlnd_conn::set_client_option */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, set_client_option)(MYSQLND * const conn,
|
||||
MYSQLND_METHOD(mysqlnd_conn, set_client_option)(MYSQLND_CONN_DATA * const conn,
|
||||
enum mysqlnd_option option,
|
||||
const char * const value
|
||||
TSRMLS_DC)
|
||||
@@ -2389,7 +2414,7 @@ end:
|
||||
|
||||
/* {{{ mysqlnd_conn::use_result */
|
||||
static MYSQLND_RES *
|
||||
MYSQLND_METHOD(mysqlnd_conn, use_result)(MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, use_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, use_result);
|
||||
MYSQLND_RES * result = NULL;
|
||||
@@ -2431,7 +2456,7 @@ MYSQLND_METHOD(mysqlnd_conn, use_result)(MYSQLND * const conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::store_result */
|
||||
static MYSQLND_RES *
|
||||
MYSQLND_METHOD(mysqlnd_conn, store_result)(MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, store_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, store_result);
|
||||
MYSQLND_RES * result = NULL;
|
||||
@@ -2470,9 +2495,8 @@ MYSQLND_METHOD(mysqlnd_conn, store_result)(MYSQLND * const conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::get_connection_stats */
|
||||
static void
|
||||
MYSQLND_METHOD(mysqlnd_conn, get_connection_stats)(const MYSQLND * const conn,
|
||||
zval *return_value
|
||||
TSRMLS_DC ZEND_FILE_LINE_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, get_connection_stats)(const MYSQLND_CONN_DATA * const conn,
|
||||
zval * return_value TSRMLS_DC ZEND_FILE_LINE_DC)
|
||||
{
|
||||
DBG_ENTER("mysqlnd_conn::get_connection_stats");
|
||||
mysqlnd_fill_stats_hash(conn->stats, mysqlnd_stats_values_names, return_value TSRMLS_CC ZEND_FILE_LINE_CC);
|
||||
@@ -2483,7 +2507,7 @@ MYSQLND_METHOD(mysqlnd_conn, get_connection_stats)(const MYSQLND * const conn,
|
||||
|
||||
/* {{{ mysqlnd_conn::set_autocommit */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, set_autocommit)(MYSQLND * conn, unsigned int mode TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, set_autocommit)(MYSQLND_CONN_DATA * conn, unsigned int mode TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, set_autocommit);
|
||||
enum_func_status ret = FAIL;
|
||||
@@ -2501,7 +2525,7 @@ MYSQLND_METHOD(mysqlnd_conn, set_autocommit)(MYSQLND * conn, unsigned int mode T
|
||||
|
||||
/* {{{ mysqlnd_conn::tx_commit */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, tx_commit)(MYSQLND * conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, tx_commit)(MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, tx_commit);
|
||||
enum_func_status ret = FAIL;
|
||||
@@ -2519,7 +2543,7 @@ MYSQLND_METHOD(mysqlnd_conn, tx_commit)(MYSQLND * conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::tx_rollback */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, tx_rollback)(MYSQLND * conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, tx_rollback)(MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, tx_rollback);
|
||||
enum_func_status ret = FAIL;
|
||||
@@ -2537,7 +2561,7 @@ MYSQLND_METHOD(mysqlnd_conn, tx_rollback)(MYSQLND * conn TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_conn::local_tx_start */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, local_tx_start)(MYSQLND * conn, size_t this_func TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, local_tx_start)(MYSQLND_CONN_DATA * conn, size_t this_func TSRMLS_DC)
|
||||
{
|
||||
enum_func_status ret = PASS;
|
||||
DBG_ENTER("mysqlnd_conn::local_tx_start");
|
||||
@@ -2548,7 +2572,7 @@ MYSQLND_METHOD(mysqlnd_conn, local_tx_start)(MYSQLND * conn, size_t this_func TS
|
||||
|
||||
/* {{{ mysqlnd_conn::local_tx_end */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, local_tx_end)(MYSQLND * conn, size_t this_func, enum_func_status status TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, local_tx_end)(MYSQLND_CONN_DATA * conn, size_t this_func, enum_func_status status TSRMLS_DC)
|
||||
{
|
||||
DBG_ENTER("mysqlnd_conn::local_tx_end");
|
||||
DBG_RETURN(status);
|
||||
@@ -2558,7 +2582,7 @@ MYSQLND_METHOD(mysqlnd_conn, local_tx_end)(MYSQLND * conn, size_t this_func, enu
|
||||
|
||||
/* {{{ mysqlnd_conn::init */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_conn, init)(MYSQLND * conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_conn, init)(MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
DBG_ENTER("mysqlnd_conn::init");
|
||||
mysqlnd_stats_init(&conn->stats, STAT_LAST);
|
||||
@@ -2571,7 +2595,7 @@ MYSQLND_METHOD(mysqlnd_conn, init)(MYSQLND * conn TSRMLS_DC)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
MYSQLND_STMT * _mysqlnd_stmt_init(MYSQLND * const conn TSRMLS_DC);
|
||||
MYSQLND_STMT * _mysqlnd_stmt_init(MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
|
||||
|
||||
MYSQLND_CLASS_METHODS_START(mysqlnd_conn)
|
||||
@@ -2630,6 +2654,7 @@ MYSQLND_CLASS_METHODS_START(mysqlnd_conn)
|
||||
MYSQLND_METHOD(mysqlnd_conn, close),
|
||||
|
||||
MYSQLND_METHOD_PRIVATE(mysqlnd_conn, dtor),
|
||||
MYSQLND_METHOD_PRIVATE(mysqlnd_conn, outter_dtor),
|
||||
|
||||
mysqlnd_query_read_result_set_header,
|
||||
|
||||
|
||||
@@ -27,9 +27,6 @@
|
||||
|
||||
#define MYSQLND_PLUGIN_API_VERSION 1
|
||||
|
||||
/* This forces inlining of some accessor functions */
|
||||
#define MYSQLND_USE_OPTIMISATIONS 0
|
||||
|
||||
#define MYSQLND_STRING_TO_INT_CONVERSION
|
||||
/*
|
||||
This force mysqlnd to do a single (or more depending on ammount of data)
|
||||
@@ -78,8 +75,8 @@ PHPAPI void * _mysqlnd_plugin_find(const char * const name TSRMLS_DC);
|
||||
PHPAPI void _mysqlnd_plugin_apply_with_argument(apply_func_arg_t apply_func, void * argument TSRMLS_DC);
|
||||
#define mysqlnd_plugin_apply_with_argument(func, argument) _mysqlnd_plugin_apply_with_argument((func), (argument) TSRMLS_CC);
|
||||
|
||||
#define mysqlnd_restart_psession(conn) (conn)->m->restart_psession((conn) TSRMLS_CC)
|
||||
#define mysqlnd_end_psession(conn) (conn)->m->end_psession((conn) TSRMLS_CC)
|
||||
#define mysqlnd_restart_psession(conn) ((conn)->data)->m->restart_psession((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_end_psession(conn) ((conn)->data)->m->end_psession((conn)->data TSRMLS_CC)
|
||||
PHPAPI void mysqlnd_minfo_print_hash(zval *values);
|
||||
#define mysqlnd_thread_safe() TRUE
|
||||
|
||||
@@ -90,17 +87,17 @@ PHPAPI const MYSQLND_CHARSET * mysqlnd_find_charset_name(const char * const char
|
||||
/* Connect */
|
||||
#define mysqlnd_init(persistent) _mysqlnd_init((persistent) TSRMLS_CC)
|
||||
PHPAPI MYSQLND * _mysqlnd_init(zend_bool persistent TSRMLS_DC);
|
||||
PHPAPI MYSQLND * mysqlnd_connect(MYSQLND *conn,
|
||||
const char *host, const char *user,
|
||||
const char *passwd, unsigned int passwd_len,
|
||||
const char *db, unsigned int db_len,
|
||||
PHPAPI MYSQLND * mysqlnd_connect(MYSQLND * conn,
|
||||
const char * host, const char * user,
|
||||
const char * passwd, unsigned int passwd_len,
|
||||
const char * db, unsigned int db_len,
|
||||
unsigned int port,
|
||||
const char *socket_or_pipe,
|
||||
const char * socket_or_pipe,
|
||||
unsigned int mysql_flags
|
||||
TSRMLS_DC);
|
||||
|
||||
#define mysqlnd_change_user(conn, user, passwd, db, silent) (conn)->m->change_user((conn), (user), (passwd), (db), (silent), strlen((passwd)) TSRMLS_CC)
|
||||
#define mysqlnd_change_user_ex(conn, user, passwd, db, silent, passwd_len) (conn)->m->change_user((conn), (user), (passwd), (db), (silent), (passwd_len) TSRMLS_CC)
|
||||
#define mysqlnd_change_user(conn, user, passwd, db, silent) ((conn)->data)->m->change_user((conn)->data, (user), (passwd), (db), (silent), strlen((passwd)) TSRMLS_CC)
|
||||
#define mysqlnd_change_user_ex(conn, user, passwd, db, silent, passwd_len) ((conn)->data)->m->change_user((conn)->data, (user), (passwd), (db), (silent), (passwd_len) TSRMLS_CC)
|
||||
|
||||
#define mysqlnd_debug(x) _mysqlnd_debug((x) TSRMLS_CC)
|
||||
PHPAPI void _mysqlnd_debug(const char *mode TSRMLS_DC);
|
||||
@@ -110,44 +107,45 @@ PHPAPI void _mysqlnd_debug(const char *mode TSRMLS_DC);
|
||||
#define mysqlnd_fetch_row_c(result) (result)->m.fetch_row_c((result) TSRMLS_CC)
|
||||
#define mysqlnd_fetch_all(result, flags, return_value) (result)->m.fetch_all((result), (flags), (return_value) TSRMLS_CC ZEND_FILE_LINE_CC)
|
||||
#define mysqlnd_result_fetch_field_data(res,offset,ret) (res)->m.fetch_field_data((res), (offset), (ret) TSRMLS_CC)
|
||||
#define mysqlnd_get_connection_stats(conn, values) (conn)->m->get_statistics((conn), (values) TSRMLS_CC ZEND_FILE_LINE_CC)
|
||||
#define mysqlnd_get_connection_stats(conn, values) ((conn)->data)->m->get_statistics((conn)->data, (values) TSRMLS_CC ZEND_FILE_LINE_CC)
|
||||
#define mysqlnd_get_client_stats(values) _mysqlnd_get_client_stats((values) TSRMLS_CC ZEND_FILE_LINE_CC)
|
||||
|
||||
#define mysqlnd_close(conn,is_forced) (conn)->m->close((conn), (is_forced) TSRMLS_CC)
|
||||
#define mysqlnd_query(conn, query_str, query_len) (conn)->m->query((conn), (query_str), (query_len) TSRMLS_CC)
|
||||
#define mysqlnd_async_query(conn, query_str, query_len) (conn)->m->send_query((conn), (query_str), (query_len) TSRMLS_CC)
|
||||
#define mysqlnd_close(conn,is_forced) ((conn)->data)->m->close((conn), (is_forced) TSRMLS_CC)
|
||||
#define mysqlnd_query(conn, query_str, query_len) ((conn)->data)->m->query((conn)->data, (query_str), (query_len) TSRMLS_CC)
|
||||
#define mysqlnd_async_query(conn, query_str, query_len) ((conn)->data)->m->send_query((conn)->data, (query_str), (query_len) TSRMLS_CC)
|
||||
#define mysqlnd_poll(r, err, d_pull,sec,usec,desc_num) _mysqlnd_poll((r), (err), (d_pull), (sec), (usec), (desc_num) TSRMLS_CC)
|
||||
#define mysqlnd_reap_async_query(conn) (conn)->m->reap_query((conn) TSRMLS_CC)
|
||||
#define mysqlnd_reap_async_query(conn) ((conn)->data)->m->reap_query((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_unbuffered_skip_result(result) (result)->m.skip_result((result) TSRMLS_CC)
|
||||
|
||||
PHPAPI enum_func_status _mysqlnd_poll(MYSQLND **r_array, MYSQLND **e_array, MYSQLND ***dont_poll, long sec, long usec, uint * desc_num TSRMLS_DC);
|
||||
|
||||
#define mysqlnd_use_result(conn) (conn)->m->use_result((conn) TSRMLS_CC)
|
||||
#define mysqlnd_store_result(conn) (conn)->m->store_result((conn) TSRMLS_CC)
|
||||
#define mysqlnd_next_result(conn) (conn)->m->next_result((conn) TSRMLS_CC)
|
||||
#define mysqlnd_more_results(conn) (conn)->m->more_results((conn) TSRMLS_CC)
|
||||
#define mysqlnd_use_result(conn) ((conn)->data)->m->use_result((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_store_result(conn) ((conn)->data)->m->store_result((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_next_result(conn) ((conn)->data)->m->next_result((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_more_results(conn) ((conn)->data)->m->more_results((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_free_result(r,e_or_i) ((MYSQLND_RES*)r)->m.free_result(((MYSQLND_RES*)(r)), (e_or_i) TSRMLS_CC)
|
||||
#define mysqlnd_data_seek(result, row) (result)->m.seek_data((result), (row) TSRMLS_CC)
|
||||
|
||||
/* Errors */
|
||||
#define mysqlnd_errno(conn) (conn)->m->get_error_no((conn) TSRMLS_CC)
|
||||
#define mysqlnd_error(conn) (conn)->m->get_error_str((conn) TSRMLS_CC)
|
||||
#define mysqlnd_sqlstate(conn) (conn)->m->get_sqlstate((conn) TSRMLS_CC)
|
||||
#define mysqlnd_errno(conn) ((conn)->data)->m->get_error_no((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_error(conn) ((conn)->data)->m->get_error_str((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_sqlstate(conn) ((conn)->data)->m->get_sqlstate((conn)->data TSRMLS_CC)
|
||||
|
||||
/* Charset */
|
||||
#define mysqlnd_character_set_name(conn) (conn)->m->charset_name((conn) TSRMLS_CC)
|
||||
#define mysqlnd_character_set_name(conn) ((conn)->data)->m->charset_name((conn)->data TSRMLS_CC)
|
||||
|
||||
/* Simple metadata */
|
||||
#define mysqlnd_field_count(conn) (conn)->m->get_field_count((conn) TSRMLS_CC)
|
||||
#define mysqlnd_insert_id(conn) (conn)->m->get_last_insert_id((conn) TSRMLS_CC)
|
||||
#define mysqlnd_affected_rows(conn) (conn)->m->get_affected_rows((conn) TSRMLS_CC)
|
||||
#define mysqlnd_warning_count(conn) (conn)->m->get_warning_count((conn) TSRMLS_CC)
|
||||
#define mysqlnd_info(conn) (conn)->m->get_last_message((conn) TSRMLS_CC)
|
||||
#define mysqlnd_get_server_info(conn) (conn)->m->get_server_information((conn) TSRMLS_CC)
|
||||
#define mysqlnd_get_host_info(conn) (conn)->m->get_host_information((conn) TSRMLS_CC)
|
||||
#define mysqlnd_get_proto_info(conn) (conn)->m->get_protocol_information((conn) TSRMLS_CC)
|
||||
#define mysqlnd_thread_id(conn) (conn)->m->get_thread_id((conn) TSRMLS_CC)
|
||||
#define mysqlnd_get_server_status(conn) (conn)->m->get_server_status((conn) TSRMLS_CC)
|
||||
#define mysqlnd_field_count(conn) ((conn)->data)->m->get_field_count((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_insert_id(conn) ((conn)->data)->m->get_last_insert_id((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_affected_rows(conn) ((conn)->data)->m->get_affected_rows((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_warning_count(conn) ((conn)->data)->m->get_warning_count((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_info(conn) ((conn)->data)->m->get_last_message((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_get_server_info(conn) ((conn)->data)->m->get_server_information((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_get_server_version(conn) ((conn)->data)->m->get_server_version((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_get_host_info(conn) ((conn)->data)->m->get_host_information((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_get_proto_info(conn) ((conn)->data)->m->get_protocol_information((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_thread_id(conn) ((conn)->data)->m->get_thread_id((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_get_server_status(conn) ((conn)->data)->m->get_server_status((conn)->data TSRMLS_CC)
|
||||
|
||||
#define mysqlnd_num_rows(result) (result)->m.num_rows((result) TSRMLS_CC)
|
||||
#define mysqlnd_num_fields(result) (result)->m.num_fields((result) TSRMLS_CC)
|
||||
@@ -165,7 +163,7 @@ PHPAPI unsigned long * _mysqlnd_fetch_lengths(MYSQLND_RES * const result TSRMLS
|
||||
PHPAPI const char * mysqlnd_get_client_info();
|
||||
PHPAPI unsigned int mysqlnd_get_client_version();
|
||||
|
||||
#define mysqlnd_ssl_set(conn, key, cert, ca, capath, cipher) (conn)->m->ssl_set((conn), (key), (cert), (ca), (capath), (cipher) TSRMLS_CC)
|
||||
#define mysqlnd_ssl_set(conn, key, cert, ca, capath, cipher) ((conn)->data)->m->ssl_set((conn)->data, (key), (cert), (ca), (capath), (cipher) TSRMLS_CC)
|
||||
|
||||
/* PS */
|
||||
#define mysqlnd_stmt_insert_id(stmt) (stmt)->m->get_last_insert_id((stmt) TSRMLS_CC)
|
||||
@@ -189,40 +187,39 @@ PHPAPI void mysqlnd_free_result_bind_dtor(MYSQLND_RESULT_BIND * result_bind TSRM
|
||||
PHPAPI const char * mysqlnd_field_type_name(enum mysqlnd_field_types field_type);
|
||||
|
||||
/* LOAD DATA LOCAL */
|
||||
PHPAPI void mysqlnd_local_infile_default(MYSQLND *conn);
|
||||
PHPAPI void mysqlnd_set_local_infile_handler(MYSQLND * const conn, const char * const funcname);
|
||||
PHPAPI void mysqlnd_local_infile_default(MYSQLND_CONN_DATA * conn);
|
||||
PHPAPI void mysqlnd_set_local_infile_handler(MYSQLND_CONN_DATA * const conn, const char * const funcname);
|
||||
|
||||
/* Simple commands */
|
||||
#define mysqlnd_autocommit(conn, mode) (conn)->m->set_autocommit((conn), (mode) TSRMLS_CC)
|
||||
#define mysqlnd_commit(conn) (conn)->m->tx_commit((conn) TSRMLS_CC)
|
||||
#define mysqlnd_rollback(conn) (conn)->m->tx_rollback((conn) TSRMLS_CC)
|
||||
#define mysqlnd_list_dbs(conn, wild) (conn)->m->list_method((conn), wild? "SHOW DATABASES LIKE %s":"SHOW DATABASES", (wild), NULL TSRMLS_CC)
|
||||
#define mysqlnd_list_fields(conn, tab,wild) (conn)->m->list_fields((conn), (tab), (wild) TSRMLS_CC)
|
||||
#define mysqlnd_list_processes(conn) (conn)->m->list_method((conn), "SHOW PROCESSLIST", NULL, NULL TSRMLS_CC)
|
||||
#define mysqlnd_list_tables(conn, wild) (conn)->m->list_method((conn), wild? "SHOW TABLES LIKE %s":"SHOW TABLES", (wild), NULL TSRMLS_CC)
|
||||
#define mysqlnd_dump_debug_info(conn) (conn)->m->server_dump_debug_information((conn) TSRMLS_CC)
|
||||
#define mysqlnd_select_db(conn, db, db_len) (conn)->m->select_db((conn), (db), (db_len) TSRMLS_CC)
|
||||
#define mysqlnd_ping(conn) (conn)->m->ping((conn) TSRMLS_CC)
|
||||
#define mysqlnd_kill(conn, pid) (conn)->m->kill_connection((conn), (pid) TSRMLS_CC)
|
||||
#define mysqlnd_refresh(conn, options) (conn)->m->refresh_server((conn), (options) TSRMLS_CC)
|
||||
#define mysqlnd_shutdown(conn, level) (conn)->m->shutdown_server((conn), (level) TSRMLS_CC)
|
||||
#define mysqlnd_get_server_version(conn) (conn)->m->get_server_version((conn) TSRMLS_CC)
|
||||
#define mysqlnd_set_character_set(conn, cs) (conn)->m->set_charset((conn), (cs) TSRMLS_CC)
|
||||
#define mysqlnd_stat(conn, msg, msg_len) (conn)->m->get_server_statistics((conn), (msg), (msg_len) TSRMLS_CC)
|
||||
#define mysqlnd_options(conn, opt, value) (conn)->m->set_client_option((conn), (opt), (value) TSRMLS_CC)
|
||||
#define mysqlnd_set_server_option(conn, op) (conn)->m->set_server_option((conn), (op) TSRMLS_CC)
|
||||
#define mysqlnd_autocommit(conn, mode) ((conn)->data)->m->set_autocommit((conn)->data, (mode) TSRMLS_CC)
|
||||
#define mysqlnd_commit(conn) ((conn)->data)->m->tx_commit((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_rollback(conn) ((conn)->data)->m->tx_rollback((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_list_dbs(conn, wild) ((conn)->data)->m->list_method((conn)->data, wild? "SHOW DATABASES LIKE %s":"SHOW DATABASES", (wild), NULL TSRMLS_CC)
|
||||
#define mysqlnd_list_fields(conn, tab,wild) ((conn)->data)->m->list_fields((conn)->data, (tab), (wild) TSRMLS_CC)
|
||||
#define mysqlnd_list_processes(conn) ((conn)->data)->m->list_method((conn)->data, "SHOW PROCESSLIST", NULL, NULL TSRMLS_CC)
|
||||
#define mysqlnd_list_tables(conn, wild) ((conn)->data)->m->list_method((conn)->data, wild? "SHOW TABLES LIKE %s":"SHOW TABLES", (wild), NULL TSRMLS_CC)
|
||||
#define mysqlnd_dump_debug_info(conn) ((conn)->data)->m->server_dump_debug_information((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_select_db(conn, db, db_len) ((conn)->data)->m->select_db((conn)->data, (db), (db_len) TSRMLS_CC)
|
||||
#define mysqlnd_ping(conn) ((conn)->data)->m->ping((conn)->data TSRMLS_CC)
|
||||
#define mysqlnd_kill(conn, pid) ((conn)->data)->m->kill_connection((conn)->data, (pid) TSRMLS_CC)
|
||||
#define mysqlnd_refresh(conn, options) ((conn)->data)->m->refresh_server((conn)->data, (options) TSRMLS_CC)
|
||||
#define mysqlnd_shutdown(conn, level) ((conn)->data)->m->shutdown_server((conn)->data, (level) TSRMLS_CC)
|
||||
#define mysqlnd_set_character_set(conn, cs) ((conn)->data)->m->set_charset((conn)->data, (cs) TSRMLS_CC)
|
||||
#define mysqlnd_stat(conn, msg, msg_len) ((conn)->data)->m->get_server_statistics(((conn)->data), (msg), (msg_len) TSRMLS_CC)
|
||||
#define mysqlnd_options(conn, opt, value) ((conn)->data)->m->set_client_option((conn)->data, (opt), (value) TSRMLS_CC)
|
||||
#define mysqlnd_set_server_option(conn, op) ((conn)->data)->m->set_server_option((conn)->data, (op) TSRMLS_CC)
|
||||
|
||||
/* Escaping */
|
||||
#define mysqlnd_real_escape_string(conn, newstr, escapestr, escapestr_len) \
|
||||
(conn)->m->escape_string((conn), (newstr), (escapestr), (escapestr_len) TSRMLS_CC)
|
||||
((conn)->data)->m->escape_string((conn), (newstr), (escapestr), (escapestr_len) TSRMLS_CC)
|
||||
#define mysqlnd_escape_string(newstr, escapestr, escapestr_len) \
|
||||
mysqlnd_old_escape_string((newstr), (escapestr), (escapestr_len) TSRMLS_CC)
|
||||
|
||||
PHPAPI ulong mysqlnd_old_escape_string(char *newstr, const char *escapestr, size_t escapestr_len TSRMLS_DC);
|
||||
PHPAPI ulong mysqlnd_old_escape_string(char * newstr, const char * escapestr, size_t escapestr_len TSRMLS_DC);
|
||||
|
||||
|
||||
/* PS */
|
||||
#define mysqlnd_stmt_init(conn) (conn)->m->stmt_init((conn) TSRMLS_CC)
|
||||
#define mysqlnd_stmt_init(conn) ((conn)->data)->m->stmt_init(((conn)->data) TSRMLS_CC)
|
||||
#define mysqlnd_stmt_store_result(stmt) (!mysqlnd_stmt_field_count((stmt)) ? PASS:((stmt)->m->store_result((stmt) TSRMLS_CC)? PASS:FAIL))
|
||||
#define mysqlnd_stmt_get_result(stmt) (stmt)->m->get_result((stmt) TSRMLS_CC)
|
||||
#define mysqlnd_stmt_more_results(stmt) (stmt)->m->more_results((stmt) TSRMLS_CC)
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
/* {{{ mysqlnd_auth_handshake */
|
||||
enum_func_status
|
||||
mysqlnd_auth_handshake(MYSQLND * conn,
|
||||
mysqlnd_auth_handshake(MYSQLND_CONN_DATA * conn,
|
||||
const char * const user,
|
||||
const char * const passwd,
|
||||
const size_t passwd_len,
|
||||
@@ -153,7 +153,7 @@ end:
|
||||
|
||||
/* {{{ mysqlnd_auth_change_user */
|
||||
enum_func_status
|
||||
mysqlnd_auth_change_user(MYSQLND * const conn,
|
||||
mysqlnd_auth_change_user(MYSQLND_CONN_DATA * const conn,
|
||||
const char * const user,
|
||||
const size_t user_len,
|
||||
const char * const passwd,
|
||||
@@ -220,7 +220,7 @@ mysqlnd_auth_change_user(MYSQLND * const conn,
|
||||
auth_packet->auth_plugin_name = auth_protocol;
|
||||
|
||||
|
||||
if (mysqlnd_get_server_version(conn) >= 50123) {
|
||||
if (conn->m->get_server_version(conn TSRMLS_CC) >= 50123) {
|
||||
auth_packet->charset_no = conn->charset->nr;
|
||||
}
|
||||
|
||||
@@ -260,12 +260,12 @@ mysqlnd_auth_change_user(MYSQLND * const conn,
|
||||
bug#25371 mysql_change_user() triggers "packets out of sync"
|
||||
When it gets fixed, there should be one more check here
|
||||
*/
|
||||
if (mysqlnd_get_server_version(conn) > 50113L && mysqlnd_get_server_version(conn) < 50118L) {
|
||||
if (conn->m->get_server_version(conn TSRMLS_CC) > 50113L &&conn->m->get_server_version(conn TSRMLS_CC) < 50118L) {
|
||||
MYSQLND_PACKET_OK * redundant_error_packet = conn->protocol->m.get_ok_packet(conn->protocol, FALSE TSRMLS_CC);
|
||||
if (redundant_error_packet) {
|
||||
PACKET_READ(redundant_error_packet, conn);
|
||||
PACKET_FREE(redundant_error_packet);
|
||||
DBG_INF_FMT("Server is %u, buggy, sends two ERR messages", mysqlnd_get_server_version(conn));
|
||||
DBG_INF_FMT("Server is %u, buggy, sends two ERR messages", conn->m->get_server_version(conn TSRMLS_CC));
|
||||
} else {
|
||||
SET_OOM_ERROR(*conn->error_info);
|
||||
}
|
||||
@@ -292,7 +292,7 @@ mysqlnd_auth_change_user(MYSQLND * const conn,
|
||||
}
|
||||
memset(conn->upsert_status, 0, sizeof(*conn->upsert_status));
|
||||
/* set charset for old servers */
|
||||
if (mysqlnd_get_server_version(conn) < 50123) {
|
||||
if (conn->m->get_server_version(conn TSRMLS_CC) < 50123) {
|
||||
ret = conn->m->set_charset(conn, old_cs->name TSRMLS_CC);
|
||||
}
|
||||
} else if (ret == FAIL && chg_user_resp->server_asked_323_auth == TRUE) {
|
||||
@@ -358,7 +358,7 @@ void php_mysqlnd_scramble(zend_uchar * const buffer, const zend_uchar * const sc
|
||||
static zend_uchar *
|
||||
mysqlnd_native_auth_get_auth_data(struct st_mysqlnd_authentication_plugin * self,
|
||||
size_t * auth_data_len,
|
||||
MYSQLND * conn, const char * const user, const char * const passwd,
|
||||
MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd,
|
||||
const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len,
|
||||
const MYSQLND_OPTIONS * const options, unsigned long mysql_flags
|
||||
TSRMLS_DC)
|
||||
@@ -416,7 +416,7 @@ static struct st_mysqlnd_authentication_plugin mysqlnd_native_auth_plugin =
|
||||
static zend_uchar *
|
||||
mysqlnd_pam_auth_get_auth_data(struct st_mysqlnd_authentication_plugin * self,
|
||||
size_t * auth_data_len,
|
||||
MYSQLND * conn, const char * const user, const char * const passwd,
|
||||
MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd,
|
||||
const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len,
|
||||
const MYSQLND_OPTIONS * const options, unsigned long mysql_flags
|
||||
TSRMLS_DC)
|
||||
|
||||
@@ -110,46 +110,56 @@ mysqlnd_error_list_pdtor(void * pDest)
|
||||
static MYSQLND *
|
||||
MYSQLND_METHOD(mysqlnd_object_factory, get_connection)(zend_bool persistent TSRMLS_DC)
|
||||
{
|
||||
size_t alloc_size = sizeof(MYSQLND) + mysqlnd_plugin_count() * sizeof(void *);
|
||||
MYSQLND * ret;
|
||||
size_t alloc_size_ret = sizeof(MYSQLND) + mysqlnd_plugin_count() * sizeof(void *);
|
||||
size_t alloc_size_ret_data = sizeof(MYSQLND_CONN_DATA) + mysqlnd_plugin_count() * sizeof(void *);
|
||||
MYSQLND * new_object;
|
||||
MYSQLND_CONN_DATA * data;
|
||||
|
||||
DBG_ENTER("mysqlnd_driver::get_connection");
|
||||
DBG_INF_FMT("persistent=%u", persistent);
|
||||
ret = mnd_pecalloc(1, alloc_size, persistent);
|
||||
if (!ret) {
|
||||
new_object = mnd_pecalloc(1, alloc_size_ret, persistent);
|
||||
if (!new_object) {
|
||||
DBG_RETURN(NULL);
|
||||
}
|
||||
new_object->data = mnd_pecalloc(1, alloc_size_ret_data, persistent);
|
||||
if (!new_object->data) {
|
||||
mnd_pefree(new_object, persistent);
|
||||
DBG_RETURN(NULL);
|
||||
}
|
||||
new_object->persistent = persistent;
|
||||
|
||||
data = new_object->data;
|
||||
|
||||
data->error_info = &(data->error_info_impl);
|
||||
data->options = &(data->options_impl);
|
||||
data->upsert_status = &(data->upsert_status_impl);
|
||||
|
||||
data->persistent = persistent;
|
||||
data->m = mysqlnd_conn_get_methods();
|
||||
CONN_SET_STATE(data, CONN_ALLOCED);
|
||||
data->m->get_reference(data TSRMLS_CC);
|
||||
|
||||
if (PASS != data->m->init(data TSRMLS_CC)) {
|
||||
data->m->outter_dtor(new_object TSRMLS_CC);
|
||||
DBG_RETURN(NULL);
|
||||
}
|
||||
|
||||
ret->error_info = &(ret->error_info_impl);
|
||||
ret->options = &(ret->options_impl);
|
||||
ret->upsert_status = &(ret->upsert_status_impl);
|
||||
|
||||
ret->persistent = persistent;
|
||||
ret->m = mysqlnd_conn_get_methods();
|
||||
CONN_SET_STATE(ret, CONN_ALLOCED);
|
||||
ret->m->get_reference(ret TSRMLS_CC);
|
||||
|
||||
if (PASS != ret->m->init(ret TSRMLS_CC)) {
|
||||
ret->m->dtor(ret TSRMLS_CC);
|
||||
DBG_RETURN(NULL);
|
||||
}
|
||||
|
||||
ret->error_info->error_list = mnd_pecalloc(1, sizeof(zend_llist), persistent);
|
||||
if (!ret->error_info->error_list) {
|
||||
ret->m->dtor(ret TSRMLS_CC);
|
||||
data->error_info->error_list = mnd_pecalloc(1, sizeof(zend_llist), persistent);
|
||||
if (!data->error_info->error_list) {
|
||||
data->m->outter_dtor(new_object TSRMLS_CC);
|
||||
DBG_RETURN(NULL);
|
||||
} else {
|
||||
zend_llist_init(ret->error_info->error_list, sizeof(MYSQLND_ERROR_LIST_ELEMENT), (llist_dtor_func_t)mysqlnd_error_list_pdtor, persistent);
|
||||
zend_llist_init(data->error_info->error_list, sizeof(MYSQLND_ERROR_LIST_ELEMENT), (llist_dtor_func_t)mysqlnd_error_list_pdtor, persistent);
|
||||
}
|
||||
|
||||
DBG_RETURN(ret);
|
||||
DBG_RETURN(new_object);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ mysqlnd_object_factory::get_prepared_statement */
|
||||
static MYSQLND_STMT *
|
||||
MYSQLND_METHOD(mysqlnd_object_factory, get_prepared_statement)(MYSQLND * const conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_object_factory, get_prepared_statement)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
size_t alloc_size = sizeof(MYSQLND_STMT) + mysqlnd_plugin_count() * sizeof(void *);
|
||||
MYSQLND_STMT * ret = mnd_pecalloc(1, alloc_size, conn->persistent);
|
||||
|
||||
@@ -42,6 +42,20 @@ _mysqlnd_plugin_get_plugin_connection_data(const MYSQLND * conn, unsigned int pl
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ _mysqlnd_plugin_get_plugin_connection_data_data */
|
||||
PHPAPI void **
|
||||
_mysqlnd_plugin_get_plugin_connection_data_data(const MYSQLND_CONN_DATA * conn, unsigned int plugin_id TSRMLS_DC)
|
||||
{
|
||||
DBG_ENTER("_mysqlnd_plugin_get_plugin_connection_data_data");
|
||||
DBG_INF_FMT("plugin_id=%u", plugin_id);
|
||||
if (!conn || plugin_id >= mysqlnd_plugin_count()) {
|
||||
return NULL;
|
||||
}
|
||||
DBG_RETURN((void *)((char *)conn + sizeof(MYSQLND_CONN_DATA) + plugin_id * sizeof(void *)));
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ _mysqlnd_plugin_get_plugin_result_data */
|
||||
PHPAPI void ** _mysqlnd_plugin_get_plugin_result_data(const MYSQLND_RES * result, unsigned int plugin_id TSRMLS_DC)
|
||||
{
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
PHPAPI void ** _mysqlnd_plugin_get_plugin_connection_data(const MYSQLND * conn, unsigned int plugin_id TSRMLS_DC);
|
||||
#define mysqlnd_plugin_get_plugin_connection_data(c, p_id) _mysqlnd_plugin_get_plugin_connection_data((c), (p_id) TSRMLS_CC)
|
||||
|
||||
PHPAPI void ** _mysqlnd_plugin_get_plugin_connection_data_data(const MYSQLND_CONN_DATA * conn, unsigned int plugin_id TSRMLS_DC);
|
||||
#define mysqlnd_plugin_get_plugin_connection_data_data(c, p_id) _mysqlnd_plugin_get_plugin_connection_data_data((c), (p_id) TSRMLS_CC)
|
||||
|
||||
PHPAPI void ** _mysqlnd_plugin_get_plugin_result_data(const MYSQLND_RES * result, unsigned int plugin_id TSRMLS_DC);
|
||||
#define mysqlnd_plugin_get_plugin_result_data(r, p_id) _mysqlnd_plugin_get_plugin_result_data((r), (p_id) TSRMLS_CC)
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
/* {{{ mysqlnd_local_infile_init */
|
||||
static
|
||||
int mysqlnd_local_infile_init(void **ptr, char *filename, void **userdata TSRMLS_DC)
|
||||
int mysqlnd_local_infile_init(void ** ptr, char * filename, void ** userdata TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_INFILE_INFO *info;
|
||||
php_stream_context *context = NULL;
|
||||
@@ -66,7 +66,7 @@ int mysqlnd_local_infile_init(void **ptr, char *filename, void **userdata TSRMLS
|
||||
|
||||
/* {{{ mysqlnd_local_infile_read */
|
||||
static
|
||||
int mysqlnd_local_infile_read(void *ptr, zend_uchar * buf, unsigned int buf_len TSRMLS_DC)
|
||||
int mysqlnd_local_infile_read(void * ptr, zend_uchar * buf, unsigned int buf_len TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_INFILE_INFO *info = (MYSQLND_INFILE_INFO *)ptr;
|
||||
int count;
|
||||
@@ -87,7 +87,7 @@ int mysqlnd_local_infile_read(void *ptr, zend_uchar * buf, unsigned int buf_len
|
||||
|
||||
/* {{{ mysqlnd_local_infile_error */
|
||||
static
|
||||
int mysqlnd_local_infile_error(void *ptr, char *error_buf, unsigned int error_buf_len TSRMLS_DC)
|
||||
int mysqlnd_local_infile_error(void * ptr, char *error_buf, unsigned int error_buf_len TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_INFILE_INFO *info = (MYSQLND_INFILE_INFO *)ptr;
|
||||
|
||||
@@ -108,7 +108,7 @@ int mysqlnd_local_infile_error(void *ptr, char *error_buf, unsigned int error_bu
|
||||
|
||||
/* {{{ mysqlnd_local_infile_end */
|
||||
static
|
||||
void mysqlnd_local_infile_end(void *ptr TSRMLS_DC)
|
||||
void mysqlnd_local_infile_end(void * ptr TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_INFILE_INFO *info = (MYSQLND_INFILE_INFO *)ptr;
|
||||
|
||||
@@ -125,7 +125,8 @@ void mysqlnd_local_infile_end(void *ptr TSRMLS_DC)
|
||||
|
||||
|
||||
/* {{{ mysqlnd_local_infile_default */
|
||||
PHPAPI void mysqlnd_local_infile_default(MYSQLND *conn)
|
||||
PHPAPI void
|
||||
mysqlnd_local_infile_default(MYSQLND_CONN_DATA * conn)
|
||||
{
|
||||
conn->infile.local_infile_init = mysqlnd_local_infile_init;
|
||||
conn->infile.local_infile_read = mysqlnd_local_infile_read;
|
||||
@@ -134,8 +135,10 @@ PHPAPI void mysqlnd_local_infile_default(MYSQLND *conn)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ mysqlnd_set_local_infile_handler */
|
||||
PHPAPI void mysqlnd_set_local_infile_handler(MYSQLND * const conn, const char * const funcname)
|
||||
PHPAPI void
|
||||
mysqlnd_set_local_infile_handler(MYSQLND_CONN_DATA * const conn, const char * const funcname)
|
||||
{
|
||||
if (!conn->infile.callback) {
|
||||
MAKE_STD_ZVAL(conn->infile.callback);
|
||||
@@ -152,7 +155,7 @@ static const char *lost_conn = "Lost connection to MySQL server during LOAD DATA
|
||||
|
||||
/* {{{ mysqlnd_handle_local_infile */
|
||||
enum_func_status
|
||||
mysqlnd_handle_local_infile(MYSQLND *conn, const char *filename, zend_bool *is_warning TSRMLS_DC)
|
||||
mysqlnd_handle_local_infile(MYSQLND_CONN_DATA * conn, const char * filename, zend_bool * is_warning TSRMLS_DC)
|
||||
{
|
||||
zend_uchar *buf = NULL;
|
||||
zend_uchar empty_packet[MYSQLND_HEADER_SIZE];
|
||||
|
||||
@@ -206,7 +206,7 @@ extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_res);
|
||||
extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_protocol);
|
||||
extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_net);
|
||||
|
||||
enum_func_status mysqlnd_handle_local_infile(MYSQLND *conn, const char *filename, zend_bool *is_warning TSRMLS_DC);
|
||||
enum_func_status mysqlnd_handle_local_infile(MYSQLND_CONN_DATA * conn, const char *filename, zend_bool *is_warning TSRMLS_DC);
|
||||
|
||||
|
||||
|
||||
@@ -228,7 +228,7 @@ struct st_mysqlnd_packet_greet;
|
||||
struct st_mysqlnd_authentication_plugin;
|
||||
|
||||
enum_func_status
|
||||
mysqlnd_auth_handshake(MYSQLND * conn,
|
||||
mysqlnd_auth_handshake(MYSQLND_CONN_DATA * conn,
|
||||
const char * const user,
|
||||
const char * const passwd,
|
||||
const size_t passwd_len,
|
||||
@@ -248,7 +248,7 @@ mysqlnd_auth_handshake(MYSQLND * conn,
|
||||
TSRMLS_DC);
|
||||
|
||||
enum_func_status
|
||||
mysqlnd_auth_change_user(MYSQLND * const conn,
|
||||
mysqlnd_auth_change_user(MYSQLND_CONN_DATA * const conn,
|
||||
const char * const user,
|
||||
const size_t user_len,
|
||||
const char * const passwd,
|
||||
|
||||
@@ -57,7 +57,7 @@ MYSQLND_METHOD(mysqlnd_stmt, store_result)(MYSQLND_STMT * const s TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_STMT_DATA * stmt = s? s->data:NULL;
|
||||
enum_func_status ret;
|
||||
MYSQLND * conn;
|
||||
MYSQLND_CONN_DATA * conn;
|
||||
MYSQLND_RES * result;
|
||||
|
||||
DBG_ENTER("mysqlnd_stmt::store_result");
|
||||
@@ -90,7 +90,7 @@ MYSQLND_METHOD(mysqlnd_stmt, store_result)(MYSQLND_STMT * const s TSRMLS_DC)
|
||||
stmt->default_rset_handler = s->m->store_result;
|
||||
|
||||
SET_EMPTY_ERROR(*stmt->error_info);
|
||||
SET_EMPTY_ERROR(*stmt->conn->error_info);
|
||||
SET_EMPTY_ERROR(*conn->error_info);
|
||||
MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_PS_BUFFERED_SETS);
|
||||
|
||||
result = stmt->result;
|
||||
@@ -126,7 +126,7 @@ static MYSQLND_RES *
|
||||
MYSQLND_METHOD(mysqlnd_stmt, get_result)(MYSQLND_STMT * const s TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_STMT_DATA * stmt = s? s->data:NULL;
|
||||
MYSQLND * conn;
|
||||
MYSQLND_CONN_DATA * conn;
|
||||
MYSQLND_RES *result;
|
||||
|
||||
DBG_ENTER("mysqlnd_stmt::get_result");
|
||||
@@ -155,19 +155,19 @@ MYSQLND_METHOD(mysqlnd_stmt, get_result)(MYSQLND_STMT * const s TSRMLS_DC)
|
||||
}
|
||||
|
||||
SET_EMPTY_ERROR(*stmt->error_info);
|
||||
SET_EMPTY_ERROR(*stmt->conn->error_info);
|
||||
SET_EMPTY_ERROR(*conn->error_info);
|
||||
MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_BUFFERED_SETS);
|
||||
|
||||
do {
|
||||
result = conn->m->result_init(stmt->result->field_count, stmt->persistent TSRMLS_CC);
|
||||
if (!result) {
|
||||
SET_OOM_ERROR(*stmt->conn->error_info);
|
||||
SET_OOM_ERROR(*conn->error_info);
|
||||
break;
|
||||
}
|
||||
|
||||
result->meta = stmt->result->meta->m->clone_metadata(stmt->result->meta, FALSE TSRMLS_CC);
|
||||
if (!result->meta) {
|
||||
SET_OOM_ERROR(*stmt->conn->error_info);
|
||||
SET_OOM_ERROR(*conn->error_info);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -198,8 +198,7 @@ MYSQLND_METHOD(mysqlnd_stmt, more_results)(const MYSQLND_STMT * s TSRMLS_DC)
|
||||
MYSQLND_STMT_DATA * stmt = s? s->data:NULL;
|
||||
DBG_ENTER("mysqlnd_stmt::more_results");
|
||||
/* (conn->state == CONN_NEXT_RESULT_PENDING) too */
|
||||
DBG_RETURN((stmt && stmt->conn && (stmt->conn->upsert_status->server_status &
|
||||
SERVER_MORE_RESULTS_EXISTS))?
|
||||
DBG_RETURN((stmt && stmt->conn && (stmt->conn->m->get_server_status(stmt->conn TSRMLS_CC) & SERVER_MORE_RESULTS_EXISTS))?
|
||||
TRUE:
|
||||
FALSE);
|
||||
}
|
||||
@@ -211,7 +210,7 @@ static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_stmt, next_result)(MYSQLND_STMT * s TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_STMT_DATA * stmt = s? s->data:NULL;
|
||||
MYSQLND * conn;
|
||||
MYSQLND_CONN_DATA * conn;
|
||||
|
||||
DBG_ENTER("mysqlnd_stmt::next_result");
|
||||
if (!stmt || !stmt->conn || !stmt->result) {
|
||||
@@ -474,7 +473,7 @@ mysqlnd_stmt_execute_parse_response(MYSQLND_STMT * const s TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_STMT_DATA * stmt = s? s->data:NULL;
|
||||
enum_func_status ret;
|
||||
MYSQLND * conn;
|
||||
MYSQLND_CONN_DATA * conn;
|
||||
|
||||
DBG_ENTER("mysqlnd_stmt_execute_parse_response");
|
||||
if (!stmt || !stmt->conn) {
|
||||
@@ -582,7 +581,7 @@ MYSQLND_METHOD(mysqlnd_stmt, execute)(MYSQLND_STMT * const s TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_STMT_DATA * stmt = s? s->data:NULL;
|
||||
enum_func_status ret;
|
||||
MYSQLND * conn;
|
||||
MYSQLND_CONN_DATA * conn;
|
||||
zend_uchar *request = NULL;
|
||||
size_t request_len;
|
||||
zend_bool free_request;
|
||||
@@ -936,8 +935,8 @@ static MYSQLND_RES *
|
||||
MYSQLND_METHOD(mysqlnd_stmt, use_result)(MYSQLND_STMT * s TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_STMT_DATA * stmt = s? s->data:NULL;
|
||||
MYSQLND_RES *result;
|
||||
MYSQLND * conn;
|
||||
MYSQLND_RES * result;
|
||||
MYSQLND_CONN_DATA * conn;
|
||||
|
||||
DBG_ENTER("mysqlnd_stmt::use_result");
|
||||
if (!stmt || !stmt->conn || !stmt->result) {
|
||||
@@ -1194,7 +1193,7 @@ MYSQLND_METHOD(mysqlnd_stmt, reset)(MYSQLND_STMT * const s TSRMLS_DC)
|
||||
SET_EMPTY_ERROR(*stmt->conn->error_info);
|
||||
|
||||
if (stmt->stmt_id) {
|
||||
MYSQLND * conn = stmt->conn;
|
||||
MYSQLND_CONN_DATA * conn = stmt->conn;
|
||||
if (stmt->param_bind) {
|
||||
unsigned int i;
|
||||
DBG_INF("resetting long data");
|
||||
@@ -1278,8 +1277,8 @@ MYSQLND_METHOD(mysqlnd_stmt, send_long_data)(MYSQLND_STMT * const s, unsigned in
|
||||
{
|
||||
MYSQLND_STMT_DATA * stmt = s? s->data:NULL;
|
||||
enum_func_status ret = FAIL;
|
||||
MYSQLND * conn;
|
||||
zend_uchar *cmd_buf;
|
||||
MYSQLND_CONN_DATA * conn;
|
||||
zend_uchar * cmd_buf;
|
||||
enum php_mysqlnd_server_command cmd = COM_STMT_SEND_LONG_DATA;
|
||||
|
||||
DBG_ENTER("mysqlnd_stmt::send_long_data");
|
||||
@@ -2134,7 +2133,7 @@ static enum_func_status
|
||||
MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, net_close)(MYSQLND_STMT * const s, zend_bool implicit TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_STMT_DATA * stmt = s? s->data:NULL;
|
||||
MYSQLND * conn;
|
||||
MYSQLND_CONN_DATA * conn;
|
||||
zend_uchar cmd_buf[STMT_ID_LENGTH /* statement id */];
|
||||
enum_mysqlnd_collected_stats statistic = STAT_LAST;
|
||||
|
||||
@@ -2348,7 +2347,7 @@ MYSQLND_CLASS_METHODS_END;
|
||||
|
||||
/* {{{ _mysqlnd_stmt_init */
|
||||
MYSQLND_STMT *
|
||||
_mysqlnd_stmt_init(MYSQLND * const conn TSRMLS_DC)
|
||||
_mysqlnd_stmt_init(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_STMT * ret;
|
||||
DBG_ENTER("_mysqlnd_stmt_init");
|
||||
|
||||
@@ -315,7 +315,7 @@ void mysqlnd_internal_free_result(MYSQLND_RES * result TSRMLS_DC)
|
||||
|
||||
/* {{{ mysqlnd_res::read_result_metadata */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_res, read_result_metadata)(MYSQLND_RES * result, MYSQLND *conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_res, read_result_metadata)(MYSQLND_RES * result, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
DBG_ENTER("mysqlnd_res::read_result_metadata");
|
||||
|
||||
@@ -360,7 +360,7 @@ MYSQLND_METHOD(mysqlnd_res, read_result_metadata)(MYSQLND_RES * result, MYSQLND
|
||||
|
||||
/* {{{ mysqlnd_query_read_result_set_header */
|
||||
enum_func_status
|
||||
mysqlnd_query_read_result_set_header(MYSQLND *conn, MYSQLND_STMT * s TSRMLS_DC)
|
||||
mysqlnd_query_read_result_set_header(MYSQLND_CONN_DATA * conn, MYSQLND_STMT * s TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_STMT_DATA * stmt = s ? s->data:NULL;
|
||||
enum_func_status ret;
|
||||
@@ -1102,7 +1102,7 @@ mysqlnd_fetch_row_buffered(MYSQLND_RES * result, void *param, unsigned int flags
|
||||
|
||||
/* {{{ mysqlnd_res::store_result_fetch_data */
|
||||
enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_res, store_result_fetch_data)(MYSQLND * const conn, MYSQLND_RES * result,
|
||||
MYSQLND_METHOD(mysqlnd_res, store_result_fetch_data)(MYSQLND_CONN_DATA * const conn, MYSQLND_RES * result,
|
||||
MYSQLND_RES_METADATA *meta,
|
||||
zend_bool binary_protocol TSRMLS_DC)
|
||||
{
|
||||
@@ -1248,7 +1248,7 @@ end:
|
||||
/* {{{ mysqlnd_res::store_result */
|
||||
static MYSQLND_RES *
|
||||
MYSQLND_METHOD(mysqlnd_res, store_result)(MYSQLND_RES * result,
|
||||
MYSQLND * const conn,
|
||||
MYSQLND_CONN_DATA * const conn,
|
||||
zend_bool ps_protocol TSRMLS_DC)
|
||||
{
|
||||
enum_func_status ret;
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
PHPAPI MYSQLND_RES * mysqlnd_result_init(unsigned int field_count, zend_bool persistent TSRMLS_DC);
|
||||
|
||||
enum_func_status mysqlnd_query_read_result_set_header(MYSQLND * conn, MYSQLND_STMT * stmt TSRMLS_DC);
|
||||
enum_func_status mysqlnd_query_read_result_set_header(MYSQLND_CONN_DATA * conn, MYSQLND_STMT * stmt TSRMLS_DC);
|
||||
|
||||
#endif /* MYSQLND_RESULT_H */
|
||||
|
||||
|
||||
@@ -138,7 +138,7 @@ mysqlnd_unicode_is_key_numeric(UChar *key, size_t length, long *idx)
|
||||
|
||||
/* {{{ mysqlnd_res_meta::read_metadata */
|
||||
static enum_func_status
|
||||
MYSQLND_METHOD(mysqlnd_res_meta, read_metadata)(MYSQLND_RES_METADATA * const meta, MYSQLND * conn TSRMLS_DC)
|
||||
MYSQLND_METHOD(mysqlnd_res_meta, read_metadata)(MYSQLND_RES_METADATA * const meta, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
unsigned int i = 0;
|
||||
MYSQLND_PACKET_RES_FIELD * field_packet;
|
||||
|
||||
@@ -211,6 +211,7 @@ typedef struct st_mysqlnd_net_options
|
||||
|
||||
|
||||
typedef struct st_mysqlnd_connection MYSQLND;
|
||||
typedef struct st_mysqlnd_connection_data MYSQLND_CONN_DATA;
|
||||
typedef struct st_mysqlnd_net MYSQLND_NET;
|
||||
typedef struct st_mysqlnd_protocol MYSQLND_PROTOCOL;
|
||||
typedef struct st_mysqlnd_res MYSQLND_RES;
|
||||
@@ -374,7 +375,7 @@ struct st_mysqlnd_protocol_methods
|
||||
|
||||
|
||||
typedef MYSQLND * (*func_mysqlnd_object_factory__get_connection)(zend_bool persistent TSRMLS_DC);
|
||||
typedef MYSQLND_STMT * (*func_mysqlnd_object_factory__get_prepared_statement)(MYSQLND * conn TSRMLS_DC);
|
||||
typedef MYSQLND_STMT * (*func_mysqlnd_object_factory__get_prepared_statement)(MYSQLND_CONN_DATA * conn TSRMLS_DC);
|
||||
typedef MYSQLND_NET * (*func_mysqlnd_object_factory__get_io_channel)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info TSRMLS_DC);
|
||||
typedef MYSQLND_PROTOCOL * (*func_mysqlnd_object_factory__get_protocol_decoder)(zend_bool persistent TSRMLS_DC);
|
||||
|
||||
@@ -388,83 +389,84 @@ struct st_mysqlnd_object_factory_methods
|
||||
};
|
||||
|
||||
|
||||
typedef enum_func_status (*func_mysqlnd_conn__init)(MYSQLND * conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__connect)(MYSQLND *conn, const char *host, const char * user, const char * passwd, unsigned int passwd_len, const char * db, unsigned int db_len, unsigned int port, const char * socket_or_pipe, unsigned int mysql_flags TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__init)(MYSQLND_CONN_DATA * conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__connect)(MYSQLND_CONN_DATA * conn, const char * host, const char * user, const char * passwd, unsigned int passwd_len, const char * db, unsigned int db_len, unsigned int port, const char * socket_or_pipe, unsigned int mysql_flags TSRMLS_DC);
|
||||
typedef ulong (*func_mysqlnd_conn__escape_string)(MYSQLND * const conn, char *newstr, const char *escapestr, size_t escapestr_len TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__set_charset)(MYSQLND * const conn, const char * const charset TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__query)(MYSQLND *conn, const char *query, unsigned int query_len TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__send_query)(MYSQLND *conn, const char *query, unsigned int query_len TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__reap_query)(MYSQLND *conn TSRMLS_DC);
|
||||
typedef MYSQLND_RES * (*func_mysqlnd_conn__use_result)(MYSQLND * const conn TSRMLS_DC);
|
||||
typedef MYSQLND_RES * (*func_mysqlnd_conn__store_result)(MYSQLND * const conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__next_result)(MYSQLND * const conn TSRMLS_DC);
|
||||
typedef zend_bool (*func_mysqlnd_conn__more_results)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__set_charset)(MYSQLND_CONN_DATA * const conn, const char * const charset TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__query)(MYSQLND_CONN_DATA * conn, const char * query, unsigned int query_len TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__send_query)(MYSQLND_CONN_DATA * conn, const char *query, unsigned int query_len TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__reap_query)(MYSQLND_CONN_DATA * conn TSRMLS_DC);
|
||||
typedef MYSQLND_RES * (*func_mysqlnd_conn__use_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef MYSQLND_RES * (*func_mysqlnd_conn__store_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__next_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef zend_bool (*func_mysqlnd_conn__more_results)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
|
||||
typedef MYSQLND_STMT * (*func_mysqlnd_conn__stmt_init)(MYSQLND * const conn TSRMLS_DC);
|
||||
typedef MYSQLND_STMT * (*func_mysqlnd_conn__stmt_init)(MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
|
||||
typedef enum_func_status (*func_mysqlnd_conn__shutdown_server)(MYSQLND * const conn, uint8_t level TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__refresh_server)(MYSQLND * const conn, uint8_t options TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__shutdown_server)(MYSQLND_CONN_DATA * const conn, uint8_t level TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__refresh_server)(MYSQLND_CONN_DATA * const conn, uint8_t options TSRMLS_DC);
|
||||
|
||||
typedef enum_func_status (*func_mysqlnd_conn__ping)(MYSQLND * const conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__kill_connection)(MYSQLND *conn, unsigned int pid TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__select_db)(MYSQLND * const conn, const char * const db, unsigned int db_len TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__server_dump_debug_information)(MYSQLND * const conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__change_user)(MYSQLND * const conn, const char * user, const char * passwd, const char * db, zend_bool silent, size_t passwd_len TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__ping)(MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__kill_connection)(MYSQLND_CONN_DATA * conn, unsigned int pid TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__select_db)(MYSQLND_CONN_DATA * const conn, const char * const db, unsigned int db_len TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__server_dump_debug_information)(MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__change_user)(MYSQLND_CONN_DATA * const conn, const char * user, const char * passwd, const char * db, zend_bool silent, size_t passwd_len TSRMLS_DC);
|
||||
|
||||
typedef unsigned int (*func_mysqlnd_conn__get_error_no)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef const char * (*func_mysqlnd_conn__get_error_str)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef const char * (*func_mysqlnd_conn__get_sqlstate)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef uint64_t (*func_mysqlnd_conn__get_thread_id)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef void (*func_mysqlnd_conn__get_statistics)(const MYSQLND * const conn, zval *return_value TSRMLS_DC ZEND_FILE_LINE_DC);
|
||||
typedef unsigned int (*func_mysqlnd_conn__get_error_no)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef const char * (*func_mysqlnd_conn__get_error_str)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef const char * (*func_mysqlnd_conn__get_sqlstate)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef uint64_t (*func_mysqlnd_conn__get_thread_id)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef void (*func_mysqlnd_conn__get_statistics)(const MYSQLND_CONN_DATA * const conn, zval *return_value TSRMLS_DC ZEND_FILE_LINE_DC);
|
||||
|
||||
typedef unsigned long (*func_mysqlnd_conn__get_server_version)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef const char * (*func_mysqlnd_conn__get_server_information)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__get_server_statistics)(MYSQLND *conn, char **message, unsigned int * message_len TSRMLS_DC);
|
||||
typedef const char * (*func_mysqlnd_conn__get_host_information)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef unsigned int (*func_mysqlnd_conn__get_protocol_information)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef const char * (*func_mysqlnd_conn__get_last_message)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef const char * (*func_mysqlnd_conn__charset_name)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef MYSQLND_RES * (*func_mysqlnd_conn__list_fields)(MYSQLND *conn, const char *table, const char *achtung_wild TSRMLS_DC);
|
||||
typedef MYSQLND_RES * (*func_mysqlnd_conn__list_method)(MYSQLND *conn, const char *query, const char *achtung_wild, char *par1 TSRMLS_DC);
|
||||
typedef unsigned long (*func_mysqlnd_conn__get_server_version)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef const char * (*func_mysqlnd_conn__get_server_information)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__get_server_statistics)(MYSQLND_CONN_DATA * conn, char **message, unsigned int * message_len TSRMLS_DC);
|
||||
typedef const char * (*func_mysqlnd_conn__get_host_information)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef unsigned int (*func_mysqlnd_conn__get_protocol_information)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef const char * (*func_mysqlnd_conn__get_last_message)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef const char * (*func_mysqlnd_conn__charset_name)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef MYSQLND_RES * (*func_mysqlnd_conn__list_fields)(MYSQLND_CONN_DATA * conn, const char * table, const char * achtung_wild TSRMLS_DC);
|
||||
typedef MYSQLND_RES * (*func_mysqlnd_conn__list_method)(MYSQLND_CONN_DATA * conn, const char * query, const char * achtung_wild, char *par1 TSRMLS_DC);
|
||||
|
||||
typedef uint64_t (*func_mysqlnd_conn__get_last_insert_id)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef uint64_t (*func_mysqlnd_conn__get_affected_rows)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef unsigned int (*func_mysqlnd_conn__get_warning_count)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef uint64_t (*func_mysqlnd_conn__get_last_insert_id)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef uint64_t (*func_mysqlnd_conn__get_affected_rows)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef unsigned int (*func_mysqlnd_conn__get_warning_count)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
|
||||
typedef unsigned int (*func_mysqlnd_conn__get_field_count)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef unsigned int (*func_mysqlnd_conn__get_field_count)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
|
||||
typedef unsigned int (*func_mysqlnd_conn__get_server_status)(const MYSQLND * const conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__set_server_option)(MYSQLND * const conn, enum_mysqlnd_server_option option TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__set_client_option)(MYSQLND * const conn, enum_mysqlnd_option option, const char * const value TSRMLS_DC);
|
||||
typedef void (*func_mysqlnd_conn__free_contents)(MYSQLND *conn TSRMLS_DC); /* private */
|
||||
typedef void (*func_mysqlnd_conn__free_options)(MYSQLND * conn TSRMLS_DC); /* private */
|
||||
typedef enum_func_status (*func_mysqlnd_conn__close)(MYSQLND *conn, enum_connection_close_type close_type TSRMLS_DC);
|
||||
typedef void (*func_mysqlnd_conn__dtor)(MYSQLND *conn TSRMLS_DC); /* private */
|
||||
typedef unsigned int (*func_mysqlnd_conn__get_server_status)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__set_server_option)(MYSQLND_CONN_DATA * const conn, enum_mysqlnd_server_option option TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__set_client_option)(MYSQLND_CONN_DATA * const conn, enum_mysqlnd_option option, const char * const value TSRMLS_DC);
|
||||
typedef void (*func_mysqlnd_conn__free_contents)(MYSQLND_CONN_DATA * conn TSRMLS_DC);/* private */
|
||||
typedef void (*func_mysqlnd_conn__free_options)(MYSQLND_CONN_DATA * conn TSRMLS_DC); /* private */
|
||||
typedef enum_func_status (*func_mysqlnd_conn__close)(MYSQLND * conn, enum_connection_close_type close_type TSRMLS_DC);
|
||||
typedef void (*func_mysqlnd_conn__dtor)(MYSQLND_CONN_DATA * conn TSRMLS_DC); /* private */
|
||||
typedef void (*func_mysqlnd_conn__outter_dtor)(MYSQLND * conn TSRMLS_DC); /* private */
|
||||
|
||||
typedef enum_func_status (*func_mysqlnd_conn__query_read_result_set_header)(MYSQLND *conn, MYSQLND_STMT *stmt TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__query_read_result_set_header)(MYSQLND_CONN_DATA * conn, MYSQLND_STMT * stmt TSRMLS_DC);
|
||||
|
||||
typedef MYSQLND * (*func_mysqlnd_conn__get_reference)(MYSQLND * const conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__free_reference)(MYSQLND * const conn TSRMLS_DC);
|
||||
typedef enum mysqlnd_connection_state (*func_mysqlnd_conn__get_state)(MYSQLND * const conn TSRMLS_DC);
|
||||
typedef void (*func_mysqlnd_conn__set_state)(MYSQLND * const conn, enum mysqlnd_connection_state new_state TSRMLS_DC);
|
||||
typedef MYSQLND_CONN_DATA * (*func_mysqlnd_conn__get_reference)(MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__free_reference)(MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef enum mysqlnd_connection_state (*func_mysqlnd_conn__get_state)(MYSQLND_CONN_DATA * const conn TSRMLS_DC);
|
||||
typedef void (*func_mysqlnd_conn__set_state)(MYSQLND_CONN_DATA * const conn, enum mysqlnd_connection_state new_state TSRMLS_DC);
|
||||
|
||||
typedef enum_func_status (*func_mysqlnd_conn__simple_command)(MYSQLND *conn, enum php_mysqlnd_server_command command, const zend_uchar * const arg, size_t arg_len, enum mysqlnd_packet_type ok_packet, zend_bool silent, zend_bool ignore_upsert_status TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__simple_command_handle_response)(MYSQLND *conn, enum mysqlnd_packet_type ok_packet, zend_bool silent, enum php_mysqlnd_server_command command, zend_bool ignore_upsert_status TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__simple_command)(MYSQLND_CONN_DATA * conn, enum php_mysqlnd_server_command command, const zend_uchar * const arg, size_t arg_len, enum mysqlnd_packet_type ok_packet, zend_bool silent, zend_bool ignore_upsert_status TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__simple_command_handle_response)(MYSQLND_CONN_DATA * conn, enum mysqlnd_packet_type ok_packet, zend_bool silent, enum php_mysqlnd_server_command command, zend_bool ignore_upsert_status TSRMLS_DC);
|
||||
|
||||
typedef enum_func_status (*func_mysqlnd_conn__restart_psession)(MYSQLND *conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__end_psession)(MYSQLND *conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__send_close)(MYSQLND * conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__restart_psession)(MYSQLND_CONN_DATA * conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__end_psession)(MYSQLND_CONN_DATA * conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__send_close)(MYSQLND_CONN_DATA * conn TSRMLS_DC);
|
||||
|
||||
typedef enum_func_status (*func_mysqlnd_conn__ssl_set)(MYSQLND * const conn, const char * key, const char * const cert, const char * const ca, const char * const capath, const char * const cipher TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__ssl_set)(MYSQLND_CONN_DATA * const conn, const char * key, const char * const cert, const char * const ca, const char * const capath, const char * const cipher TSRMLS_DC);
|
||||
|
||||
typedef MYSQLND_RES * (*func_mysqlnd_conn__result_init)(unsigned int field_count, zend_bool persistent TSRMLS_DC);
|
||||
|
||||
typedef enum_func_status (*func_mysqlnd_conn__set_autocommit)(MYSQLND * conn, unsigned int mode TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__tx_commit)(MYSQLND * conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__tx_rollback)(MYSQLND * conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__set_autocommit)(MYSQLND_CONN_DATA * conn, unsigned int mode TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__tx_commit)(MYSQLND_CONN_DATA * conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__tx_rollback)(MYSQLND_CONN_DATA * conn TSRMLS_DC);
|
||||
|
||||
typedef enum_func_status (*func_mysqlnd_conn__local_tx_start)(MYSQLND * conn, size_t this_func TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__local_tx_end)(MYSQLND * conn, size_t this_func, enum_func_status status TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__local_tx_start)(MYSQLND_CONN_DATA * conn, size_t this_func TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_conn__local_tx_end)(MYSQLND_CONN_DATA * conn, size_t this_func, enum_func_status status TSRMLS_DC);
|
||||
|
||||
|
||||
struct st_mysqlnd_conn_methods
|
||||
@@ -522,6 +524,7 @@ struct st_mysqlnd_conn_methods
|
||||
func_mysqlnd_conn__free_options free_options;
|
||||
func_mysqlnd_conn__close close;
|
||||
func_mysqlnd_conn__dtor dtor;
|
||||
func_mysqlnd_conn__outter_dtor outter_dtor;
|
||||
|
||||
func_mysqlnd_conn__query_read_result_set_header query_read_result_set_header;
|
||||
|
||||
@@ -556,7 +559,7 @@ typedef mysqlnd_fetch_row_func fetch_row_normal_buffered; /* private */
|
||||
typedef mysqlnd_fetch_row_func fetch_row_normal_unbuffered; /* private */
|
||||
|
||||
typedef MYSQLND_RES * (*func_mysqlnd_res__use_result)(MYSQLND_RES * const result, zend_bool ps_protocol TSRMLS_DC);
|
||||
typedef MYSQLND_RES * (*func_mysqlnd_res__store_result)(MYSQLND_RES * result, MYSQLND * const conn, zend_bool ps TSRMLS_DC);
|
||||
typedef MYSQLND_RES * (*func_mysqlnd_res__store_result)(MYSQLND_RES * result, MYSQLND_CONN_DATA * const conn, zend_bool ps TSRMLS_DC);
|
||||
typedef void (*func_mysqlnd_res__fetch_into)(MYSQLND_RES *result, unsigned int flags, zval *return_value, enum_mysqlnd_extension ext TSRMLS_DC ZEND_FILE_LINE_DC);
|
||||
typedef MYSQLND_ROW_C (*func_mysqlnd_res__fetch_row_c)(MYSQLND_RES *result TSRMLS_DC);
|
||||
typedef void (*func_mysqlnd_res__fetch_all)(MYSQLND_RES *result, unsigned int flags, zval *return_value TSRMLS_DC ZEND_FILE_LINE_DC);
|
||||
@@ -571,9 +574,9 @@ typedef const MYSQLND_FIELD *(*func_mysqlnd_res__fetch_field)(MYSQLND_RES * cons
|
||||
typedef const MYSQLND_FIELD *(*func_mysqlnd_res__fetch_field_direct)(MYSQLND_RES * const result, MYSQLND_FIELD_OFFSET fieldnr TSRMLS_DC);
|
||||
typedef const MYSQLND_FIELD *(*func_mysqlnd_res__fetch_fields)(MYSQLND_RES * const result TSRMLS_DC);
|
||||
|
||||
typedef enum_func_status (*func_mysqlnd_res__read_result_metadata)(MYSQLND_RES *result, MYSQLND * conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_res__read_result_metadata)(MYSQLND_RES * result, MYSQLND_CONN_DATA * conn TSRMLS_DC);
|
||||
typedef unsigned long * (*func_mysqlnd_res__fetch_lengths)(MYSQLND_RES * const result TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_res__store_result_fetch_data)(MYSQLND * const conn, MYSQLND_RES *result, MYSQLND_RES_METADATA *meta, zend_bool binary_protocol TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_res__store_result_fetch_data)(MYSQLND_CONN_DATA * const conn, MYSQLND_RES * result, MYSQLND_RES_METADATA *meta, zend_bool binary_protocol TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_res__initialize_result_set_rest)(MYSQLND_RES * const result TSRMLS_DC);
|
||||
|
||||
typedef void (*func_mysqlnd_res__free_result_buffers)(MYSQLND_RES * result TSRMLS_DC); /* private */
|
||||
@@ -640,7 +643,7 @@ typedef const MYSQLND_FIELD * (*func_mysqlnd_res_meta__fetch_field)(MYSQLND_RES_
|
||||
typedef const MYSQLND_FIELD * (*func_mysqlnd_res_meta__fetch_field_direct)(const MYSQLND_RES_METADATA * const meta, MYSQLND_FIELD_OFFSET fieldnr TSRMLS_DC);
|
||||
typedef const MYSQLND_FIELD * (*func_mysqlnd_res_meta__fetch_fields)(MYSQLND_RES_METADATA * const meta TSRMLS_DC);
|
||||
typedef MYSQLND_FIELD_OFFSET (*func_mysqlnd_res_meta__field_tell)(const MYSQLND_RES_METADATA * const meta TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_res_meta__read_metadata)(MYSQLND_RES_METADATA * const meta, MYSQLND * conn TSRMLS_DC);
|
||||
typedef enum_func_status (*func_mysqlnd_res_meta__read_metadata)(MYSQLND_RES_METADATA * const meta, MYSQLND_CONN_DATA * conn TSRMLS_DC);
|
||||
typedef MYSQLND_RES_METADATA * (*func_mysqlnd_res_meta__clone_metadata)(const MYSQLND_RES_METADATA * const meta, zend_bool persistent TSRMLS_DC);
|
||||
typedef void (*func_mysqlnd_res_meta__free_metadata)(MYSQLND_RES_METADATA * meta TSRMLS_DC);
|
||||
|
||||
@@ -790,7 +793,7 @@ struct st_mysqlnd_protocol
|
||||
};
|
||||
|
||||
|
||||
struct st_mysqlnd_connection
|
||||
struct st_mysqlnd_connection_data
|
||||
{
|
||||
/* Operation related */
|
||||
MYSQLND_NET * net;
|
||||
@@ -868,6 +871,13 @@ struct st_mysqlnd_connection
|
||||
};
|
||||
|
||||
|
||||
struct st_mysqlnd_connection
|
||||
{
|
||||
MYSQLND_CONN_DATA * data;
|
||||
zend_bool persistent;
|
||||
};
|
||||
|
||||
|
||||
struct mysqlnd_field_hash_key
|
||||
{
|
||||
zend_bool is_numeric;
|
||||
@@ -921,7 +931,7 @@ struct st_mysqlnd_unbuffered_result
|
||||
|
||||
struct st_mysqlnd_res
|
||||
{
|
||||
MYSQLND *conn;
|
||||
MYSQLND_CONN_DATA *conn;
|
||||
enum_mysqlnd_res_type type;
|
||||
unsigned int field_count;
|
||||
|
||||
@@ -963,7 +973,7 @@ struct st_mysqlnd_result_bind
|
||||
|
||||
struct st_mysqlnd_stmt_data
|
||||
{
|
||||
MYSQLND *conn;
|
||||
MYSQLND_CONN_DATA *conn;
|
||||
unsigned long stmt_id;
|
||||
unsigned long flags;/* cursor is set here */
|
||||
enum_mysqlnd_stmt_state state;
|
||||
@@ -1047,7 +1057,7 @@ struct st_mysqlnd_authentication_plugin;
|
||||
|
||||
typedef zend_uchar * (*func_auth_plugin__get_auth_data)(struct st_mysqlnd_authentication_plugin * self,
|
||||
size_t * auth_data_len,
|
||||
MYSQLND * conn, const char * const user, const char * const passwd,
|
||||
MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd,
|
||||
const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len,
|
||||
const MYSQLND_OPTIONS * const options, unsigned long mysql_flags
|
||||
TSRMLS_DC);
|
||||
|
||||
@@ -301,7 +301,7 @@ mysqlnd_read_header(MYSQLND_NET * net, MYSQLND_PACKET_HEADER * header,
|
||||
|
||||
/* {{{ php_mysqlnd_greet_read */
|
||||
static enum_func_status
|
||||
php_mysqlnd_greet_read(void * _packet, MYSQLND * conn TSRMLS_DC)
|
||||
php_mysqlnd_greet_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
zend_uchar buf[2048];
|
||||
zend_uchar *p = buf;
|
||||
@@ -463,7 +463,7 @@ void php_mysqlnd_greet_free_mem(void * _packet, zend_bool stack_allocation TSRML
|
||||
|
||||
/* {{{ php_mysqlnd_auth_write */
|
||||
static
|
||||
size_t php_mysqlnd_auth_write(void * _packet, MYSQLND * conn TSRMLS_DC)
|
||||
size_t php_mysqlnd_auth_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
zend_uchar buffer[AUTH_WRITE_BUFFER_LEN];
|
||||
zend_uchar *p = buffer + MYSQLND_HEADER_SIZE; /* start after the header */
|
||||
@@ -567,7 +567,7 @@ void php_mysqlnd_auth_free_mem(void * _packet, zend_bool stack_allocation TSRMLS
|
||||
|
||||
/* {{{ php_mysqlnd_auth_response_read */
|
||||
static enum_func_status
|
||||
php_mysqlnd_auth_response_read(void * _packet, MYSQLND * conn TSRMLS_DC)
|
||||
php_mysqlnd_auth_response_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
zend_uchar local_buf[AUTH_RESP_BUFFER_SIZE];
|
||||
size_t buf_len = conn->net->cmd_buffer.buffer? conn->net->cmd_buffer.length: AUTH_RESP_BUFFER_SIZE;
|
||||
@@ -687,7 +687,7 @@ php_mysqlnd_auth_response_free_mem(void * _packet, zend_bool stack_allocation TS
|
||||
|
||||
/* {{{ php_mysqlnd_change_auth_response_write */
|
||||
static size_t
|
||||
php_mysqlnd_change_auth_response_write(void * _packet, MYSQLND * conn TSRMLS_DC)
|
||||
php_mysqlnd_change_auth_response_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_PACKET_CHANGE_AUTH_RESPONSE *packet= (MYSQLND_PACKET_CHANGE_AUTH_RESPONSE *) _packet;
|
||||
zend_uchar * buffer = conn->net->cmd_buffer.length >= packet->auth_data_len? conn->net->cmd_buffer.buffer : mnd_emalloc(packet->auth_data_len);
|
||||
@@ -730,7 +730,7 @@ php_mysqlnd_change_auth_response_free_mem(void * _packet, zend_bool stack_alloca
|
||||
|
||||
/* {{{ php_mysqlnd_ok_read */
|
||||
static enum_func_status
|
||||
php_mysqlnd_ok_read(void * _packet, MYSQLND * conn TSRMLS_DC)
|
||||
php_mysqlnd_ok_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
zend_uchar local_buf[OK_BUFFER_SIZE];
|
||||
size_t buf_len = conn->net->cmd_buffer.buffer? conn->net->cmd_buffer.length : OK_BUFFER_SIZE;
|
||||
@@ -815,7 +815,7 @@ php_mysqlnd_ok_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC)
|
||||
|
||||
/* {{{ php_mysqlnd_eof_read */
|
||||
static enum_func_status
|
||||
php_mysqlnd_eof_read(void * _packet, MYSQLND * conn TSRMLS_DC)
|
||||
php_mysqlnd_eof_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
/*
|
||||
EOF packet is since 4.1 five bytes long,
|
||||
@@ -892,7 +892,7 @@ void php_mysqlnd_eof_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_
|
||||
|
||||
|
||||
/* {{{ php_mysqlnd_cmd_write */
|
||||
size_t php_mysqlnd_cmd_write(void * _packet, MYSQLND * conn TSRMLS_DC)
|
||||
size_t php_mysqlnd_cmd_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
/* Let's have some space, which we can use, if not enough, we will allocate new buffer */
|
||||
MYSQLND_PACKET_COMMAND * packet= (MYSQLND_PACKET_COMMAND *) _packet;
|
||||
@@ -970,7 +970,7 @@ void php_mysqlnd_cmd_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_
|
||||
|
||||
/* {{{ php_mysqlnd_rset_header_read */
|
||||
static enum_func_status
|
||||
php_mysqlnd_rset_header_read(void * _packet, MYSQLND * conn TSRMLS_DC)
|
||||
php_mysqlnd_rset_header_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
enum_func_status ret = PASS;
|
||||
size_t buf_len = conn->net->cmd_buffer.length;
|
||||
@@ -1108,7 +1108,7 @@ static size_t rset_field_offsets[] =
|
||||
|
||||
/* {{{ php_mysqlnd_rset_field_read */
|
||||
static enum_func_status
|
||||
php_mysqlnd_rset_field_read(void * _packet, MYSQLND * conn TSRMLS_DC)
|
||||
php_mysqlnd_rset_field_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
/* Should be enough for the metadata of a single row */
|
||||
MYSQLND_PACKET_RES_FIELD *packet= (MYSQLND_PACKET_RES_FIELD *) _packet;
|
||||
@@ -1314,7 +1314,7 @@ void php_mysqlnd_rset_field_free_mem(void * _packet, zend_bool stack_allocation
|
||||
|
||||
/* {{{ php_mysqlnd_read_row_ex */
|
||||
static enum_func_status
|
||||
php_mysqlnd_read_row_ex(MYSQLND * conn, MYSQLND_MEMORY_POOL * result_set_memory_pool,
|
||||
php_mysqlnd_read_row_ex(MYSQLND_CONN_DATA * conn, MYSQLND_MEMORY_POOL * result_set_memory_pool,
|
||||
MYSQLND_MEMORY_POOL_CHUNK ** buffer,
|
||||
size_t * data_size, zend_bool persistent_alloc,
|
||||
unsigned int prealloc_more_bytes TSRMLS_DC)
|
||||
@@ -1730,7 +1730,7 @@ php_mysqlnd_rowp_read_text_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval
|
||||
if PS => packet->fields is passed from outside
|
||||
*/
|
||||
static enum_func_status
|
||||
php_mysqlnd_rowp_read(void * _packet, MYSQLND * conn TSRMLS_DC)
|
||||
php_mysqlnd_rowp_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_NET * net = conn->net;
|
||||
zend_uchar *p;
|
||||
@@ -1853,7 +1853,7 @@ php_mysqlnd_rowp_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC)
|
||||
|
||||
/* {{{ php_mysqlnd_stats_read */
|
||||
static enum_func_status
|
||||
php_mysqlnd_stats_read(void * _packet, MYSQLND * conn TSRMLS_DC)
|
||||
php_mysqlnd_stats_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
MYSQLND_PACKET_STATS *packet= (MYSQLND_PACKET_STATS *) _packet;
|
||||
size_t buf_len = conn->net->cmd_buffer.length;
|
||||
@@ -1895,7 +1895,7 @@ void php_mysqlnd_stats_free_mem(void * _packet, zend_bool stack_allocation TSRML
|
||||
|
||||
/* {{{ php_mysqlnd_prepare_read */
|
||||
static enum_func_status
|
||||
php_mysqlnd_prepare_read(void * _packet, MYSQLND * conn TSRMLS_DC)
|
||||
php_mysqlnd_prepare_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
/* In case of an error, we should have place to put it */
|
||||
size_t buf_len = conn->net->cmd_buffer.length;
|
||||
@@ -1983,7 +1983,7 @@ php_mysqlnd_prepare_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_D
|
||||
|
||||
/* {{{ php_mysqlnd_chg_user_read */
|
||||
static enum_func_status
|
||||
php_mysqlnd_chg_user_read(void * _packet, MYSQLND * conn TSRMLS_DC)
|
||||
php_mysqlnd_chg_user_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)
|
||||
{
|
||||
/* There could be an error message */
|
||||
size_t buf_len = conn->net->cmd_buffer.length;
|
||||
|
||||
@@ -51,8 +51,8 @@ PHPAPI extern const char * const mysqlnd_command_to_text[COM_END];
|
||||
/* Low-level extraction functionality */
|
||||
typedef struct st_mysqlnd_packet_methods {
|
||||
size_t struct_size;
|
||||
enum_func_status (*read_from_net)(void *packet, MYSQLND *conn TSRMLS_DC);
|
||||
size_t (*write_to_net)(void *packet, MYSQLND *conn TSRMLS_DC);
|
||||
enum_func_status (*read_from_net)(void * packet, MYSQLND_CONN_DATA * conn TSRMLS_DC);
|
||||
size_t (*write_to_net)(void * packet, MYSQLND_CONN_DATA * conn TSRMLS_DC);
|
||||
void (*free_mem)(void *packet, zend_bool stack_allocation TSRMLS_DC);
|
||||
} mysqlnd_packet_methods;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user