32static bool mysqlnd_library_initted =
FALSE;
42 "Andrey Hristov <andrey@php.net>, Ulf Wendel <uw@php.net>, Georg Richter <georg@php.net>",
57 if (mysqlnd_library_initted ==
TRUE) {
61 mysqlnd_library_initted =
FALSE;
71 if (mysqlnd_library_initted ==
FALSE) {
72 mysqlnd_library_initted =
TRUE;
83#if MYSQLND_DBG_ENABLED == 1
91#if MYSQLND_CHARSETS_SANITY_CHECK == 1
92 void mysqlnd_charsets_sanity_check(
void);
93 mysqlnd_charsets_sanity_check();
109 DBG_ENTER(
"mysqlnd_driver::get_connection");
116 if (!new_object->
data) {
125 data->error_info = &
data->error_info_impl;
127 data->options = &(
data->options_impl);
130 data->upsert_status = &(
data->upsert_status_impl);
148 if (!
data->protocol_frame_codec || !
data->vio || !
data->payload_decoder_factory || !
data->command) {
149 new_object->m->dtor(new_object);
165 DBG_ENTER(
"mysqlnd_driver::clone_connection_object");
166 DBG_INF_FMT(
"persistent=%u", to_be_cloned->persistent);
167 if (!to_be_cloned || !to_be_cloned->data) {
170 new_object =
mnd_pecalloc(1, alloc_size_ret, to_be_cloned->persistent);
174 new_object->
persistent = to_be_cloned->persistent;
175 new_object->m = to_be_cloned->m;
177 new_object->
data = to_be_cloned->data->m->get_reference(to_be_cloned->data);
178 if (!new_object->
data) {
179 new_object->m->dtor(new_object);
195 DBG_ENTER(
"mysqlnd_object_factory::get_prepared_statement");
199 DBG_INF_FMT(
"stmt=%p", stmt);
215 stmt->
conn = conn->m->get_reference(conn);
230 DBG_ENTER(
"mysqlnd_object_factory::get_pfc");
237 pfc->
data->m.init(pfc, stats, error_info);
252 DBG_ENTER(
"mysqlnd_object_factory::get_vio");
259 vio->
data->m.init(vio, stats, error_info);
273 DBG_ENTER(
"mysqlnd_object_factory::get_protocol_payload_decoder_factory");
292 MYSQLND_METHOD(mysqlnd_object_factory, get_protocol_payload_decoder_factory)
const php_stream_filter_factory * factory
PHPAPI MYSQLND_STATS * mysqlnd_global_stats
PHPAPI unsigned int mysqlnd_plugin_count(void)
PHPAPI const MYSQLND_STRING mysqlnd_stats_values_names[]
#define PHP_MYSQLND_VERSION
PHPAPI unsigned int mysqlnd_plugin_register_ex(struct st_mysqlnd_plugin_header *plugin)
#define MYSQLND_PLUGIN_API_VERSION
#define MYSQLND_VERSION_ID
#define MYSQLND_METHOD(class, method)
#define mnd_pecalloc(nmemb, size, p)
#define mnd_ecalloc(nmemb, size)
#define mnd_emalloc(size)
#define mnd_pefree(ptr, pers)
void mysqlnd_register_builtin_authentication_plugins(void)
PHPAPI void mysqlnd_connection_state_init(struct st_mysqlnd_connection_state *const state)
PHPAPI void mysqlnd_error_info_init(MYSQLND_ERROR_INFO *const info, const bool persistent)
void mysqlnd_upsert_status_init(MYSQLND_UPSERT_STATUS *const upsert_status)
#define UPSERT_STATUS_SET_AFFECTED_ROWS_TO_ERROR(status)
void mysqlnd_debug_trace_plugin_register(void)
#define DBG_RETURN(value)
PHPAPI void mysqlnd_library_init(void)
PHPAPI void mysqlnd_library_end(void)
#define MYSQLND_NET_CMD_BUFFER_MIN_SIZE
#define mysqlnd_conn_data_get_methods()
#define mysqlnd_stmt_get_methods()
#define mysqlnd_conn_data_set_methods(m)
#define mysqlnd_vio_get_methods()
#define mysqlnd_command_get_methods()
#define mysqlnd_pfc_get_methods()
#define mysqlnd_conn_get_methods()
#define mysqlnd_conn_set_methods(m)
void mysqlnd_plugin_subsystem_init(void)
void mysqlnd_plugin_subsystem_end(void)
void mysqlnd_example_plugin_register(void)
PHPAPI MYSQLND_PFC * mysqlnd_pfc_init(const bool persistent, MYSQLND_CLASS_METHODS_TYPE(mysqlnd_object_factory) *object_factory, MYSQLND_STATS *stats, MYSQLND_ERROR_INFO *error_info)
void _mysqlnd_init_ps_subsystem(void)
PHPAPI void mysqlnd_reverse_api_end(void)
PHPAPI void mysqlnd_reverse_api_init(void)
PHPAPI void mysqlnd_stats_end(MYSQLND_STATS *stats, const bool persistent)
PHPAPI void mysqlnd_stats_init(MYSQLND_STATS **stats, const size_t statistic_count, const bool persistent)
#define MYSQLND_CLASS_METHODS_END
struct st_mysqlnd_vio MYSQLND_VIO
struct st_mysqlnd_connection_data MYSQLND_CONN_DATA
#define MYSQLND_CLASS_METHODS_TYPE(class)
struct st_mysqlnd_stats MYSQLND_STATS
struct st_mysqlnd_protocol_frame_codec MYSQLND_PFC
struct st_mysqlnd_protocol_frame_codec_data MYSQLND_PFC_DATA
struct st_mysqlnd_protocol_payload_decoder_factory MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY
struct st_mysqlnd_connection MYSQLND
struct st_mysqlnd_vio_data MYSQLND_VIO_DATA
struct st_mysqlnd_stmt_data MYSQLND_STMT_DATA
struct st_mysqlnd_stmt MYSQLND_STMT
#define MYSQLND_CLASS_METHODS_START(class)
struct st_mysqlnd_error_info MYSQLND_ERROR_INFO
#define MYSQLND_CLASS_METHOD_TABLE_NAME(class)
PHPAPI MYSQLND_VIO * mysqlnd_vio_init(bool persistent, MYSQLND_CLASS_METHODS_TYPE(mysqlnd_object_factory) *object_factory, MYSQLND_STATS *stats, MYSQLND_ERROR_INFO *error_info)
PHPAPI MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * mysqlnd_protocol_payload_decoder_factory_init(MYSQLND_CONN_DATA *conn, const bool persistent)
struct st_mysqlnd_protocol_frame_codec_data * data
MYSQLND_ERROR_INFO error_info_impl
enum_mysqlnd_stmt_state state
MYSQLND_CMD_BUFFER execute_cmd_buffer
MYSQLND_ERROR_INFO * error_info
MYSQLND_UPSERT_STATUS * upsert_status
MYSQLND_UPSERT_STATUS upsert_status_impl
struct st_mysqlnd_vio_data * data
#define ZEND_MM_ALIGNED_SIZE(size)