From 19443351ed0ef080e93c8ae25a6091d0f5df8ecb Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Mon, 12 Oct 2015 16:29:50 +0200 Subject: [PATCH] MNDR: - remove static function and make it a method. The function doesn't need to be in mysqlnd_ps.c as it doesn't use any resources anymore from it (it used in the past) --- ext/mysqlnd/mysqlnd.c | 13 +++++++++++-- ext/mysqlnd/mysqlnd_driver.c | 19 ++++++++++--------- ext/mysqlnd/mysqlnd_ps.c | 12 ------------ ext/mysqlnd/mysqlnd_structs.h | 2 +- 4 files changed, 22 insertions(+), 24 deletions(-) diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index 56f3396974..0a7fe8d859 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -2974,7 +2974,16 @@ MYSQLND_METHOD(mysqlnd_conn_data, local_tx_end)(MYSQLND_CONN_DATA * conn, size_t /* }}} */ -MYSQLND_STMT * _mysqlnd_stmt_init(MYSQLND_CONN_DATA * const conn); +/* {{{ _mysqlnd_stmt_init */ +MYSQLND_STMT * +MYSQLND_METHOD(mysqlnd_conn_data, stmt_init)(MYSQLND_CONN_DATA * const conn) +{ + MYSQLND_STMT * ret; + DBG_ENTER("_mysqlnd_stmt_init"); + ret = MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory).get_prepared_statement(conn, conn->persistent); + DBG_RETURN(ret); +} +/* }}} */ MYSQLND_CLASS_METHODS_START(mysqlnd_conn_data) @@ -2990,7 +2999,7 @@ MYSQLND_CLASS_METHODS_START(mysqlnd_conn_data) MYSQLND_METHOD(mysqlnd_conn_data, next_result), MYSQLND_METHOD(mysqlnd_conn_data, more_results), - _mysqlnd_stmt_init, + MYSQLND_METHOD(mysqlnd_conn_data, stmt_init), MYSQLND_METHOD(mysqlnd_conn_data, shutdown), MYSQLND_METHOD(mysqlnd_conn_data, refresh), diff --git a/ext/mysqlnd/mysqlnd_driver.c b/ext/mysqlnd/mysqlnd_driver.c index 859aba7f6e..e3c126c5c5 100644 --- a/ext/mysqlnd/mysqlnd_driver.c +++ b/ext/mysqlnd/mysqlnd_driver.c @@ -196,7 +196,7 @@ MYSQLND_METHOD(mysqlnd_object_factory, clone_connection_object)(MYSQLND * to_be_ /* {{{ mysqlnd_object_factory::get_prepared_statement */ static MYSQLND_STMT * -MYSQLND_METHOD(mysqlnd_object_factory, get_prepared_statement)(MYSQLND_CONN_DATA * const conn) +MYSQLND_METHOD(mysqlnd_object_factory, get_prepared_statement)(MYSQLND_CONN_DATA * const conn, zend_bool persistent) { size_t alloc_size = sizeof(MYSQLND_STMT) + mysqlnd_plugin_count() * sizeof(void *); MYSQLND_STMT * ret = mnd_pecalloc(1, alloc_size, conn->persistent); @@ -210,12 +210,12 @@ MYSQLND_METHOD(mysqlnd_object_factory, get_prepared_statement)(MYSQLND_CONN_DATA ret->m = mysqlnd_stmt_get_methods(); ret->persistent = conn->persistent; - stmt = ret->data = mnd_pecalloc(1, sizeof(MYSQLND_STMT_DATA), conn->persistent); + stmt = ret->data = mnd_pecalloc(1, sizeof(MYSQLND_STMT_DATA), persistent); DBG_INF_FMT("stmt=%p", stmt); if (!stmt) { break; } - stmt->persistent = conn->persistent; + stmt->persistent = persistent; stmt->error_info = &(stmt->error_info_impl); stmt->upsert_status = &(stmt->upsert_status_impl); stmt->state = MYSQLND_STMT_INITTED; @@ -226,18 +226,19 @@ MYSQLND_METHOD(mysqlnd_object_factory, get_prepared_statement)(MYSQLND_CONN_DATA } stmt->prefetch_rows = MYSQLND_DEFAULT_PREFETCH_ROWS; + stmt->error_info->error_list = mnd_pecalloc(1, sizeof(zend_llist), ret->persistent); + if (!stmt->error_info->error_list) { + break; + } + + zend_llist_init(stmt->error_info->error_list, sizeof(MYSQLND_ERROR_LIST_ELEMENT), (llist_dtor_func_t) mysqlnd_error_list_pdtor, persistent); + /* Mark that we reference the connection, thus it won't be be destructed till there is open statements. The last statement or normal query result will close it then. */ stmt->conn = conn->m->get_reference(conn); - stmt->error_info->error_list = mnd_pecalloc(1, sizeof(zend_llist), ret->persistent); - if (!stmt->error_info->error_list) { - break; - } - - zend_llist_init(stmt->error_info->error_list, sizeof(MYSQLND_ERROR_LIST_ELEMENT), (llist_dtor_func_t) mysqlnd_error_list_pdtor, conn->persistent); DBG_RETURN(ret); } while (0); diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c index 461b078808..cc4eaedfdc 100644 --- a/ext/mysqlnd/mysqlnd_ps.c +++ b/ext/mysqlnd/mysqlnd_ps.c @@ -2370,18 +2370,6 @@ MYSQLND_CLASS_METHODS_START(mysqlnd_stmt) MYSQLND_CLASS_METHODS_END; -/* {{{ _mysqlnd_stmt_init */ -MYSQLND_STMT * -_mysqlnd_stmt_init(MYSQLND_CONN_DATA * const conn) -{ - MYSQLND_STMT * ret; - DBG_ENTER("_mysqlnd_stmt_init"); - ret = MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory).get_prepared_statement(conn); - DBG_RETURN(ret); -} -/* }}} */ - - /* {{{ _mysqlnd_init_ps_subsystem */ void _mysqlnd_init_ps_subsystem() { diff --git a/ext/mysqlnd/mysqlnd_structs.h b/ext/mysqlnd/mysqlnd_structs.h index cfd8c1e4f4..4413ccbda5 100644 --- a/ext/mysqlnd/mysqlnd_structs.h +++ b/ext/mysqlnd/mysqlnd_structs.h @@ -401,7 +401,7 @@ struct st_mysqlnd_protocol_payload_decoder_factory_methods typedef MYSQLND * (*func_mysqlnd_object_factory__get_connection)(zend_bool persistent); typedef MYSQLND * (*func_mysqlnd_object_factory__clone_connection_object)(MYSQLND * conn); -typedef MYSQLND_STMT * (*func_mysqlnd_object_factory__get_prepared_statement)(MYSQLND_CONN_DATA * conn); +typedef MYSQLND_STMT * (*func_mysqlnd_object_factory__get_prepared_statement)(MYSQLND_CONN_DATA * conn, zend_bool persistent); typedef MYSQLND_NET * (*func_mysqlnd_object_factory__get_io_channel)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); typedef MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * (*func_mysqlnd_object_factory__get_protocol_payload_decoder_factory)(MYSQLND_CONN_DATA * conn, zend_bool persistent); -- 2.40.0