- 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)
This commit is contained in:
Andrey Hristov 2015-10-12 16:29:50 +02:00
parent 3f7a7837cd
commit 19443351ed
4 changed files with 22 additions and 24 deletions

View file

@ -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) 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, next_result),
MYSQLND_METHOD(mysqlnd_conn_data, more_results), 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, shutdown),
MYSQLND_METHOD(mysqlnd_conn_data, refresh), MYSQLND_METHOD(mysqlnd_conn_data, refresh),

View file

@ -196,7 +196,7 @@ MYSQLND_METHOD(mysqlnd_object_factory, clone_connection_object)(MYSQLND * to_be_
/* {{{ mysqlnd_object_factory::get_prepared_statement */ /* {{{ mysqlnd_object_factory::get_prepared_statement */
static MYSQLND_STMT * 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 *); size_t alloc_size = sizeof(MYSQLND_STMT) + mysqlnd_plugin_count() * sizeof(void *);
MYSQLND_STMT * ret = mnd_pecalloc(1, alloc_size, conn->persistent); 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->m = mysqlnd_stmt_get_methods();
ret->persistent = conn->persistent; 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); DBG_INF_FMT("stmt=%p", stmt);
if (!stmt) { if (!stmt) {
break; break;
} }
stmt->persistent = conn->persistent; stmt->persistent = persistent;
stmt->error_info = &(stmt->error_info_impl); stmt->error_info = &(stmt->error_info_impl);
stmt->upsert_status = &(stmt->upsert_status_impl); stmt->upsert_status = &(stmt->upsert_status_impl);
stmt->state = MYSQLND_STMT_INITTED; 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->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 Mark that we reference the connection, thus it won't be
be destructed till there is open statements. The last statement be destructed till there is open statements. The last statement
or normal query result will close it then. or normal query result will close it then.
*/ */
stmt->conn = conn->m->get_reference(conn); 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); DBG_RETURN(ret);
} while (0); } while (0);

View file

@ -2370,18 +2370,6 @@ MYSQLND_CLASS_METHODS_START(mysqlnd_stmt)
MYSQLND_CLASS_METHODS_END; 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 */ /* {{{ _mysqlnd_init_ps_subsystem */
void _mysqlnd_init_ps_subsystem() void _mysqlnd_init_ps_subsystem()
{ {

View file

@ -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__get_connection)(zend_bool persistent);
typedef MYSQLND * (*func_mysqlnd_object_factory__clone_connection_object)(MYSQLND * conn); 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_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); typedef MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * (*func_mysqlnd_object_factory__get_protocol_payload_decoder_factory)(MYSQLND_CONN_DATA * conn, zend_bool persistent);