Lines Matching refs:conn

233 MYSQLND_METHOD(mysqlnd_conn_data, free_options)(MYSQLND_CONN_DATA * conn)  in MYSQLND_METHOD()
235 zend_bool pers = conn->persistent; in MYSQLND_METHOD()
237 if (conn->options->charset_name) { in MYSQLND_METHOD()
238 mnd_pefree(conn->options->charset_name, pers); in MYSQLND_METHOD()
239 conn->options->charset_name = NULL; in MYSQLND_METHOD()
241 if (conn->options->auth_protocol) { in MYSQLND_METHOD()
242 mnd_pefree(conn->options->auth_protocol, pers); in MYSQLND_METHOD()
243 conn->options->auth_protocol = NULL; in MYSQLND_METHOD()
245 if (conn->options->num_commands) { in MYSQLND_METHOD()
247 for (i = 0; i < conn->options->num_commands; i++) { in MYSQLND_METHOD()
249 mnd_pefree(conn->options->init_commands[i], pers); in MYSQLND_METHOD()
251 mnd_pefree(conn->options->init_commands, pers); in MYSQLND_METHOD()
252 conn->options->init_commands = NULL; in MYSQLND_METHOD()
254 if (conn->options->cfg_file) { in MYSQLND_METHOD()
255 mnd_pefree(conn->options->cfg_file, pers); in MYSQLND_METHOD()
256 conn->options->cfg_file = NULL; in MYSQLND_METHOD()
258 if (conn->options->cfg_section) { in MYSQLND_METHOD()
259 mnd_pefree(conn->options->cfg_section, pers); in MYSQLND_METHOD()
260 conn->options->cfg_section = NULL; in MYSQLND_METHOD()
262 if (conn->options->connect_attr) { in MYSQLND_METHOD()
263 zend_hash_destroy(conn->options->connect_attr); in MYSQLND_METHOD()
264 mnd_pefree(conn->options->connect_attr, pers); in MYSQLND_METHOD()
265 conn->options->connect_attr = NULL; in MYSQLND_METHOD()
273 MYSQLND_METHOD(mysqlnd_conn_data, free_contents)(MYSQLND_CONN_DATA * conn) in MYSQLND_METHOD()
275 zend_bool pers = conn->persistent; in MYSQLND_METHOD()
279 if (conn->current_result) { in MYSQLND_METHOD()
280 conn->current_result->m.free_result(conn->current_result, TRUE); in MYSQLND_METHOD()
281 conn->current_result = NULL; in MYSQLND_METHOD()
284 if (conn->protocol_frame_codec) { in MYSQLND_METHOD()
285 conn->protocol_frame_codec->data->m.free_contents(conn->protocol_frame_codec); in MYSQLND_METHOD()
288 if (conn->vio) { in MYSQLND_METHOD()
289 conn->vio->data->m.free_contents(conn->vio); in MYSQLND_METHOD()
294 if (conn->hostname.s) { in MYSQLND_METHOD()
295 mnd_pefree(conn->hostname.s, pers); in MYSQLND_METHOD()
296 conn->hostname.s = NULL; in MYSQLND_METHOD()
298 if (conn->username.s) { in MYSQLND_METHOD()
299 mnd_pefree(conn->username.s, pers); in MYSQLND_METHOD()
300 conn->username.s = NULL; in MYSQLND_METHOD()
302 if (conn->password.s) { in MYSQLND_METHOD()
303 mnd_pefree(conn->password.s, pers); in MYSQLND_METHOD()
304 conn->password.s = NULL; in MYSQLND_METHOD()
306 if (conn->connect_or_select_db.s) { in MYSQLND_METHOD()
307 mnd_pefree(conn->connect_or_select_db.s, pers); in MYSQLND_METHOD()
308 conn->connect_or_select_db.s = NULL; in MYSQLND_METHOD()
310 if (conn->unix_socket.s) { in MYSQLND_METHOD()
311 mnd_pefree(conn->unix_socket.s, pers); in MYSQLND_METHOD()
312 conn->unix_socket.s = NULL; in MYSQLND_METHOD()
314 DBG_INF_FMT("scheme=%s", conn->scheme.s); in MYSQLND_METHOD()
315 if (conn->scheme.s) { in MYSQLND_METHOD()
316 mnd_pefree(conn->scheme.s, pers); in MYSQLND_METHOD()
317 conn->scheme.s = NULL; in MYSQLND_METHOD()
319 if (conn->server_version) { in MYSQLND_METHOD()
320 mnd_pefree(conn->server_version, pers); in MYSQLND_METHOD()
321 conn->server_version = NULL; in MYSQLND_METHOD()
323 if (conn->host_info) { in MYSQLND_METHOD()
324 mnd_pefree(conn->host_info, pers); in MYSQLND_METHOD()
325 conn->host_info = NULL; in MYSQLND_METHOD()
327 if (conn->authentication_plugin_data.s) { in MYSQLND_METHOD()
328 mnd_pefree(conn->authentication_plugin_data.s, pers); in MYSQLND_METHOD()
329 conn->authentication_plugin_data.s = NULL; in MYSQLND_METHOD()
331 if (conn->last_message.s) { in MYSQLND_METHOD()
332 mnd_pefree(conn->last_message.s, pers); in MYSQLND_METHOD()
333 conn->last_message.s = NULL; in MYSQLND_METHOD()
336 conn->charset = NULL; in MYSQLND_METHOD()
337 conn->greet_charset = NULL; in MYSQLND_METHOD()
346 MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, dtor)(MYSQLND_CONN_DATA * conn) in MYSQLND_METHOD_PRIVATE()
349 DBG_INF_FMT("conn=%llu", conn->thread_id); in MYSQLND_METHOD_PRIVATE()
351 conn->m->free_contents(conn); in MYSQLND_METHOD_PRIVATE()
352 conn->m->free_options(conn); in MYSQLND_METHOD_PRIVATE()
354 if (conn->error_info) { in MYSQLND_METHOD_PRIVATE()
355 mysqlnd_error_info_free_contents(conn->error_info); in MYSQLND_METHOD_PRIVATE()
356 conn->error_info = NULL; in MYSQLND_METHOD_PRIVATE()
359 if (conn->protocol_frame_codec) { in MYSQLND_METHOD_PRIVATE()
360 mysqlnd_pfc_free(conn->protocol_frame_codec, conn->stats, conn->error_info); in MYSQLND_METHOD_PRIVATE()
361 conn->protocol_frame_codec = NULL; in MYSQLND_METHOD_PRIVATE()
364 if (conn->vio) { in MYSQLND_METHOD_PRIVATE()
365 mysqlnd_vio_free(conn->vio, conn->stats, conn->error_info); in MYSQLND_METHOD_PRIVATE()
366 conn->vio = NULL; in MYSQLND_METHOD_PRIVATE()
369 if (conn->payload_decoder_factory) { in MYSQLND_METHOD_PRIVATE()
370 mysqlnd_protocol_payload_decoder_factory_free(conn->payload_decoder_factory); in MYSQLND_METHOD_PRIVATE()
371 conn->payload_decoder_factory = NULL; in MYSQLND_METHOD_PRIVATE()
374 if (conn->stats) { in MYSQLND_METHOD_PRIVATE()
375 mysqlnd_stats_end(conn->stats, conn->persistent); in MYSQLND_METHOD_PRIVATE()
378 mnd_pefree(conn, conn->persistent); in MYSQLND_METHOD_PRIVATE()
387 MYSQLND_METHOD(mysqlnd_conn_data, set_server_option)(MYSQLND_CONN_DATA * const conn, enum_mysqlnd_s… in MYSQLND_METHOD()
392 if (PASS == conn->m->local_tx_start(conn, this_func)) { in MYSQLND_METHOD()
393 …struct st_mysqlnd_protocol_command * command = conn->command_factory(COM_SET_OPTION, conn, option); in MYSQLND_METHOD()
399 conn->m->local_tx_end(conn, this_func, ret); in MYSQLND_METHOD()
408 MYSQLND_METHOD(mysqlnd_conn_data, restart_psession)(MYSQLND_CONN_DATA * conn) in MYSQLND_METHOD()
411 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_CONNECT_REUSED); in MYSQLND_METHOD()
413 if (conn->last_message.s) { in MYSQLND_METHOD()
414 mnd_pefree(conn->last_message.s, conn->persistent); in MYSQLND_METHOD()
415 conn->last_message.s = NULL; in MYSQLND_METHOD()
424 MYSQLND_METHOD(mysqlnd_conn_data, end_psession)(MYSQLND_CONN_DATA * conn) in MYSQLND_METHOD()
452 MYSQLND_METHOD(mysqlnd_conn_data, execute_init_commands)(MYSQLND_CONN_DATA * conn) in MYSQLND_METHOD()
457 if (conn->options->init_commands) { in MYSQLND_METHOD()
459 for (; current_command < conn->options->num_commands; ++current_command) { in MYSQLND_METHOD()
460 const char * const command = conn->options->init_commands[current_command]; in MYSQLND_METHOD()
462 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_INIT_COMMAND_EXECUTED_COUNT); in MYSQLND_METHOD()
463 if (PASS != conn->m->query(conn, command, strlen(command))) { in MYSQLND_METHOD()
464 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_INIT_COMMAND_FAILED_COUNT); in MYSQLND_METHOD()
468 if (conn->last_query_type == QUERY_SELECT) { in MYSQLND_METHOD()
469 MYSQLND_RES * result = conn->m->use_result(conn, 0); in MYSQLND_METHOD()
484 MYSQLND_METHOD(mysqlnd_conn_data, get_updated_connect_flags)(MYSQLND_CONN_DATA * conn, unsigned int… in MYSQLND_METHOD()
487 MYSQLND_PFC * pfc = conn->protocol_frame_codec; in MYSQLND_METHOD()
489 MYSQLND_VIO * vio = conn->vio; in MYSQLND_METHOD()
495 mysql_flags |= conn->options->flags; /* use the flags from set_client_option() */ in MYSQLND_METHOD()
528 MYSQLND_METHOD(mysqlnd_conn_data, connect_handshake)(MYSQLND_CONN_DATA * conn, in MYSQLND_METHOD()
538 …if (PASS == conn->vio->data->m.connect(conn->vio, *scheme, conn->persistent, conn->stats, conn->er… in MYSQLND_METHOD()
539 …PASS == conn->protocol_frame_codec->data->m.reset(conn->protocol_frame_codec, conn->stats, conn->e… in MYSQLND_METHOD()
542 …struct st_mysqlnd_protocol_command * command = conn->command_factory(COM_HANDSHAKE, conn, username… in MYSQLND_METHOD()
554 MYSQLND_METHOD(mysqlnd_conn_data, get_scheme)(MYSQLND_CONN_DATA * conn, MYSQLND_CSTRING hostname, M…
591 MYSQLND_METHOD(mysqlnd_conn_data, connect)(MYSQLND_CONN_DATA * conn,
607 MYSQLND_PFC * pfc = conn->protocol_frame_codec;
611 DBG_INF_FMT("conn=%p", conn);
613 if (PASS != conn->m->local_tx_start(conn, this_func)) {
618 SET_EMPTY_ERROR(conn->error_info);
619 UPSERT_STATUS_SET_AFFECTED_ROWS_TO_ERROR(conn->upsert_status);
623 conn? conn->persistent:0, conn? (int)GET_CONNECTION_STATE(&conn->state):-1);
625 if (GET_CONNECTION_STATE(&conn->state) > CONN_ALLOCED) {
628 if (GET_CONNECTION_STATE(&conn->state) < CONN_QUIT_SENT) {
629 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_CLOSE_IMPLICIT);
631 conn->m->send_close(conn);
634 conn->m->free_contents(conn);
650 conn->m->set_client_option(conn, MYSQLND_OPT_MAX_ALLOWED_PACKET, (char *)&max_allowed_size);
675 transport = conn->m->get_scheme(conn, hostname, &socket_or_pipe, port, &unix_socket, &named_pipe);
677 mysql_flags = conn->m->get_updated_connect_flags(conn, mysql_flags);
681 …if (FAIL == conn->m->connect_handshake(conn, &scheme, &username, &password, &database, mysql_flags…
687 SET_CONNECTION_STATE(&conn->state, CONN_READY);
700 conn->scheme.s = mnd_pestrndup(transport.s, transport.l, conn->persistent);
701 conn->scheme.l = transport.l;
707 if (!conn->scheme.s) {
711 conn->username.l = username.l;
712 conn->username.s = mnd_pestrndup(username.s, conn->username.l, conn->persistent);
713 conn->password.l = password.l;
714 conn->password.s = mnd_pestrndup(password.s, conn->password.l, conn->persistent);
715 conn->port = port;
716 conn->connect_or_select_db.l = database.l;
717conn->connect_or_select_db.s = mnd_pestrndup(database.s, conn->connect_or_select_db.l, conn->persi…
719 if (!conn->username.s || !conn->password.s|| !conn->connect_or_select_db.s) {
720 SET_OOM_ERROR(conn->error_info);
725 conn->hostname.s = mnd_pestrndup(hostname.s, hostname.l, conn->persistent);
726 if (!conn->hostname.s) {
727 SET_OOM_ERROR(conn->error_info);
730 conn->hostname.l = hostname.l;
733 mnd_sprintf(&p, 0, "%s via TCP/IP", conn->hostname.s);
735 SET_OOM_ERROR(conn->error_info);
738 conn->host_info = mnd_pestrdup(p, conn->persistent);
740 if (!conn->host_info) {
741 SET_OOM_ERROR(conn->error_info);
746 conn->unix_socket.s = mnd_pestrdup(socket_or_pipe.s, conn->persistent);
748 conn->host_info = mnd_pestrdup("Localhost via UNIX socket", conn->persistent);
751 mnd_sprintf(&p, 0, "%s via named pipe", conn->unix_socket.s);
753 SET_OOM_ERROR(conn->error_info);
756 conn->host_info = mnd_pestrdup(p, conn->persistent);
758 if (!conn->host_info) {
759 SET_OOM_ERROR(conn->error_info);
765 if (!conn->unix_socket.s || !conn->host_info) {
766 SET_OOM_ERROR(conn->error_info);
769 conn->unix_socket.l = strlen(conn->unix_socket.s);
772 SET_EMPTY_ERROR(conn->error_info);
774 mysqlnd_local_infile_default(conn);
776 if (FAIL == conn->m->execute_init_commands(conn)) {
780 …MYSQLND_INC_CONN_STATISTIC_W_VALUE2(conn->stats, STAT_CONNECT_SUCCESS, 1, STAT_OPENED_CONNECTIONS,…
784 if (conn->persistent) {
785 …MYSQLND_INC_CONN_STATISTIC_W_VALUE2(conn->stats, STAT_PCONNECT_SUCCESS, 1, STAT_OPENED_PERSISTENT_…
788 DBG_INF_FMT("connection_id=%llu", conn->thread_id);
790 conn->m->local_tx_end(conn, this_func, PASS);
799 …R_FMT("[%u] %.128s (trying to connect via %s)", conn->error_info->error_no, conn->error_info->erro…
800 if (!conn->error_info->error_no) {
801 …SET_CLIENT_ERROR(conn->error_info, CR_CONNECTION_ERROR, UNKNOWN_SQLSTATE, conn->error_info->error?…
802 …NING, "[%u] %.128s (trying to connect via %s)", conn->error_info->error_no, conn->error_info->erro…
805 conn->m->free_contents(conn);
806 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_CONNECT_FAILURE);
808 conn->m->local_tx_end(conn, this_func, FAIL);
829 MYSQLND_CONN_DATA * conn = conn_handle->data; local
833 if (PASS == conn->m->local_tx_start(conn, this_func)) {
835 …ret = conn->m->connect(conn, hostname, username, password, database, port, socket_or_pipe, mysql_f…
837 conn->m->local_tx_end(conn, this_func, FAIL);
850 MYSQLND_METHOD(mysqlnd_conn_data, query)(MYSQLND_CONN_DATA * conn, const char * const query, const …
855 DBG_INF_FMT("conn=%p conn=%llu query=%s", conn, conn->thread_id, query);
857 if (PASS == conn->m->local_tx_start(conn, this_func)) {
858 …if (PASS == conn->m->send_query(conn, query, query_len, MYSQLND_SEND_QUERY_IMPLICIT, NULL, NULL) &&
859 PASS == conn->m->reap_query(conn, MYSQLND_REAP_RESULT_IMPLICIT))
862 …if (conn->last_query_type == QUERY_UPSERT && UPSERT_STATUS_GET_AFFECTED_ROWS(conn->upsert_status))…
863 …MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn->stats, STAT_ROWS_AFFECTED_NORMAL, UPSERT_STATUS_GET_AFFEC…
866 conn->m->local_tx_end(conn, this_func, ret);
875 MYSQLND_METHOD(mysqlnd_conn_data, send_query)(MYSQLND_CONN_DATA * conn, const char * const query, c…
881 DBG_INF_FMT("conn=%llu query=%s", conn->thread_id, query);
882 DBG_INF_FMT("conn->server_status=%u", UPSERT_STATUS_GET_SERVER_STATUS(conn->upsert_status));
884 if (type == MYSQLND_SEND_QUERY_IMPLICIT || PASS == conn->m->local_tx_start(conn, this_func))
887 …struct st_mysqlnd_protocol_command * command = conn->command_factory(COM_QUERY, conn, query_string…
894 conn->m->local_tx_end(conn, this_func, ret);
897 DBG_INF_FMT("conn->server_status=%u", UPSERT_STATUS_GET_SERVER_STATUS(conn->upsert_status));
905 MYSQLND_METHOD(mysqlnd_conn_data, reap_query)(MYSQLND_CONN_DATA * conn, enum_mysqlnd_reap_result_ty…
910 DBG_INF_FMT("conn=%llu", conn->thread_id);
912 DBG_INF_FMT("conn->server_status=%u", UPSERT_STATUS_GET_SERVER_STATUS(conn->upsert_status));
913 if (type == MYSQLND_REAP_RESULT_IMPLICIT || PASS == conn->m->local_tx_start(conn, this_func))
915 struct st_mysqlnd_protocol_command * command = conn->command_factory(COM_REAP_RESULT, conn);
922 conn->m->local_tx_end(conn, this_func, ret);
925 DBG_INF_FMT("conn->server_status=%u", UPSERT_STATUS_GET_SERVER_STATUS(conn->upsert_status));
933 MYSQLND_METHOD(mysqlnd_conn_data, list_method)(MYSQLND_CONN_DATA * conn, const char * const query, …
941 DBG_INF_FMT("conn=%llu query=%s wild=%u", conn->thread_id, query, achtung_wild);
943 if (PASS == conn->m->local_tx_start(conn, this_func)) {
958 if (PASS == conn->m->query(conn, show_query, show_query_len)) {
959 result = conn->m->store_result(conn, MYSQLND_STORE_NO_COPY);
964 conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS);
973 MYSQLND_METHOD(mysqlnd_conn_data, err_no)(const MYSQLND_CONN_DATA * const conn)
975 return conn->error_info->error_no;
982 MYSQLND_METHOD(mysqlnd_conn_data, error)(const MYSQLND_CONN_DATA * const conn)
984 return conn->error_info->error;
991 MYSQLND_METHOD(mysqlnd_conn_data, sqlstate)(const MYSQLND_CONN_DATA * const conn)
993 return conn->error_info->sqlstate[0] ? conn->error_info->sqlstate:MYSQLND_SQLSTATE_NULL;
1010 MYSQLND_METHOD(mysqlnd_conn_data, ssl_set)(MYSQLND_CONN_DATA * const conn, const char * key, const …
1015 MYSQLND_VIO * vio = conn->vio;
1018 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1025 conn->m->local_tx_end(conn, this_func, ret);
1034 MYSQLND_METHOD(mysqlnd_conn_data, escape_string)(MYSQLND_CONN_DATA * const conn, char * newstr, con…
1039 DBG_INF_FMT("conn=%llu", conn->thread_id);
1041 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1042 DBG_INF_FMT("server_status=%u", UPSERT_STATUS_GET_SERVER_STATUS(conn->upsert_status));
1043 if (UPSERT_STATUS_GET_SERVER_STATUS(conn->upsert_status) & SERVER_STATUS_NO_BACKSLASH_ESCAPES) {
1044 ret = mysqlnd_cset_escape_quotes(conn->charset, newstr, escapestr, escapestr_len);
1046 ret = mysqlnd_cset_escape_slashes(conn->charset, newstr, escapestr, escapestr_len);
1048 conn->m->local_tx_end(conn, this_func, PASS);
1057 MYSQLND_METHOD(mysqlnd_conn_data, dump_debug_info)(MYSQLND_CONN_DATA * const conn)
1062 DBG_INF_FMT("conn=%llu", conn->thread_id);
1063 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1064 struct st_mysqlnd_protocol_command * command = conn->command_factory(COM_DEBUG, conn);
1070 conn->m->local_tx_end(conn, this_func, ret);
1080 MYSQLND_METHOD(mysqlnd_conn_data, select_db)(MYSQLND_CONN_DATA * const conn, const char * const db,…
1086 DBG_INF_FMT("conn=%llu db=%s", conn->thread_id, db);
1088 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1090 struct st_mysqlnd_protocol_command * command = conn->command_factory(COM_INIT_DB, conn, database);
1096 conn->m->local_tx_end(conn, this_func, ret);
1105 MYSQLND_METHOD(mysqlnd_conn_data, ping)(MYSQLND_CONN_DATA * const conn)
1111 DBG_INF_FMT("conn=%llu", conn->thread_id);
1113 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1114 struct st_mysqlnd_protocol_command * command = conn->command_factory(COM_PING, conn);
1119 conn->m->local_tx_end(conn, this_func, ret);
1129 MYSQLND_METHOD(mysqlnd_conn_data, statistic)(MYSQLND_CONN_DATA * conn, zend_string **message)
1135 DBG_INF_FMT("conn=%llu", conn->thread_id);
1137 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1138 …struct st_mysqlnd_protocol_command * command = conn->command_factory(COM_STATISTICS, conn, message…
1143 conn->m->local_tx_end(conn, this_func, ret);
1152 MYSQLND_METHOD(mysqlnd_conn_data, kill)(MYSQLND_CONN_DATA * conn, unsigned int pid)
1158 DBG_INF_FMT("conn=%llu pid=%u", conn->thread_id, pid);
1160 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1163 unsigned int read_response = (pid != conn->thread_id);
1164 …struct st_mysqlnd_protocol_command * command = conn->command_factory(COM_PROCESS_KILL, conn, proce…
1169 conn->m->local_tx_end(conn, this_func, ret);
1178 MYSQLND_METHOD(mysqlnd_conn_data, set_charset)(MYSQLND_CONN_DATA * const conn, const char * const c…
1185 DBG_INF_FMT("conn=%llu cs=%s", conn->thread_id, csname);
1188 SET_CLIENT_ERROR(conn->error_info, CR_CANT_FIND_CHARSET, UNKNOWN_SQLSTATE,
1193 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1197 if (FAIL == (ret = conn->m->query(conn, query, query_len))) {
1199 } else if (conn->error_info->error_no) {
1202 conn->charset = charset;
1206 conn->m->local_tx_end(conn, this_func, ret);
1217 MYSQLND_METHOD(mysqlnd_conn_data, refresh)(MYSQLND_CONN_DATA * const conn, uint8_t options)
1222 DBG_INF_FMT("conn=%llu options=%lu", conn->thread_id, options);
1224 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1226 …struct st_mysqlnd_protocol_command * command = conn->command_factory(COM_REFRESH, conn, options_pa…
1231 conn->m->local_tx_end(conn, this_func, ret);
1240 MYSQLND_METHOD(mysqlnd_conn_data, shutdown)(MYSQLND_CONN_DATA * const conn, uint8_t level)
1245 DBG_INF_FMT("conn=%llu level=%lu", conn->thread_id, level);
1247 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1249 …struct st_mysqlnd_protocol_command * command = conn->command_factory(COM_SHUTDOWN, conn, level_par…
1254 conn->m->local_tx_end(conn, this_func, ret);
1263 MYSQLND_METHOD(mysqlnd_conn_data, send_close)(MYSQLND_CONN_DATA * const conn)
1266 MYSQLND_VIO * vio = conn->vio;
1268 enum mysqlnd_connection_state state = GET_CONNECTION_STATE(&conn->state);
1271 …DBG_INF_FMT("conn=%llu vio->data->stream->abstract=%p", conn->thread_id, net_stream? net_stream->a…
1276 if (conn->persistent) {
1284 struct st_mysqlnd_protocol_command * command = conn->command_factory(COM_QUIT, conn);
1289 vio->data->m.close_stream(vio, conn->stats, conn->error_info);
1291 SET_CONNECTION_STATE(&conn->state, CONN_QUIT_SENT);
1302 DBG_ERR_FMT("Brutally closing connection [%p][%s]", conn, conn->scheme.s);
1315 SET_CONNECTION_STATE(&conn->state, CONN_QUIT_SENT);
1319 vio->data->m.close_stream(vio, conn->stats, conn->error_info);
1330 MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, get_reference)(MYSQLND_CONN_DATA * const conn)
1333 ++conn->refcount;
1334 DBG_INF_FMT("conn=%llu new_refcount=%u", conn->thread_id, conn->refcount);
1335 DBG_RETURN(conn);
1342 MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, free_reference)(MYSQLND_CONN_DATA * const conn)
1346 DBG_INF_FMT("conn=%llu old_refcount=%u", conn->thread_id, conn->refcount);
1347 if (!(--conn->refcount)) {
1353 ret = conn->m->send_close(conn);
1354 conn->m->dtor(conn);
1363 MYSQLND_METHOD(mysqlnd_conn_data, field_count)(const MYSQLND_CONN_DATA * const conn)
1365 return conn->field_count;
1372 MYSQLND_METHOD(mysqlnd_conn_data, server_status)(const MYSQLND_CONN_DATA * const conn)
1374 return UPSERT_STATUS_GET_SERVER_STATUS(conn->upsert_status);
1381 MYSQLND_METHOD(mysqlnd_conn_data, insert_id)(const MYSQLND_CONN_DATA * const conn)
1383 return UPSERT_STATUS_GET_LAST_INSERT_ID(conn->upsert_status);
1390 MYSQLND_METHOD(mysqlnd_conn_data, affected_rows)(const MYSQLND_CONN_DATA * const conn)
1392 return UPSERT_STATUS_GET_AFFECTED_ROWS(conn->upsert_status);
1399 MYSQLND_METHOD(mysqlnd_conn_data, warning_count)(const MYSQLND_CONN_DATA * const conn)
1401 return UPSERT_STATUS_GET_WARNINGS(conn->upsert_status);
1408 MYSQLND_METHOD(mysqlnd_conn_data, info)(const MYSQLND_CONN_DATA * const conn)
1410 return conn->last_message.s;
1433 MYSQLND_METHOD(mysqlnd_conn_data, get_server_info)(const MYSQLND_CONN_DATA * const conn)
1435 return conn->server_version;
1442 MYSQLND_METHOD(mysqlnd_conn_data, get_host_info)(const MYSQLND_CONN_DATA * const conn)
1444 return conn->host_info;
1451 MYSQLND_METHOD(mysqlnd_conn_data, get_proto_info)(const MYSQLND_CONN_DATA * const conn)
1453 return conn->protocol_version;
1460 MYSQLND_METHOD(mysqlnd_conn_data, charset_name)(const MYSQLND_CONN_DATA * const conn)
1462 return conn->charset->name;
1469 MYSQLND_METHOD(mysqlnd_conn_data, thread_id)(const MYSQLND_CONN_DATA * const conn)
1471 return conn->thread_id;
1478 MYSQLND_METHOD(mysqlnd_conn_data, get_server_version)(const MYSQLND_CONN_DATA * const conn)
1483 if (!(p = conn->server_version)) {
1500 MYSQLND_METHOD(mysqlnd_conn_data, more_results)(const MYSQLND_CONN_DATA * const conn)
1504 …DBG_RETURN(UPSERT_STATUS_GET_SERVER_STATUS(conn->upsert_status) & SERVER_MORE_RESULTS_EXISTS? TRUE…
1511 MYSQLND_METHOD(mysqlnd_conn_data, next_result)(MYSQLND_CONN_DATA * const conn)
1517 DBG_INF_FMT("conn=%llu", conn->thread_id);
1519 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1521 if (GET_CONNECTION_STATE(&conn->state) != CONN_NEXT_RESULT_PENDING) {
1525 SET_EMPTY_ERROR(conn->error_info);
1526 UPSERT_STATUS_SET_AFFECTED_ROWS_TO_ERROR(conn->upsert_status);
1531 if (FAIL == (ret = conn->m->query_read_result_set_header(conn, NULL))) {
1536 if (!conn->error_info->error_no) {
1539 SET_CONNECTION_STATE(&conn->state, CONN_QUIT_SENT);
1540 conn->m->send_close(conn);
1542 …DBG_INF_FMT("Error from the server : (%u) %s", conn->error_info->error_no, conn->error_info->error…
1546 …if (conn->last_query_type == QUERY_UPSERT && UPSERT_STATUS_GET_AFFECTED_ROWS(conn->upsert_status))…
1547 …MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn->stats, STAT_ROWS_AFFECTED_NORMAL, UPSERT_STATUS_GET_AFFEC…
1550 conn->m->local_tx_end(conn, this_func, ret);
1613 MYSQLND_METHOD(mysqlnd_conn_data, change_user)(MYSQLND_CONN_DATA * const conn,
1626 conn->thread_id, user?user:"", passwd?"***":"null", db?db:"", (silent == TRUE)?1:0 );
1628 if (PASS != conn->m->local_tx_start(conn, this_func)) {
1632 SET_EMPTY_ERROR(conn->error_info);
1633 UPSERT_STATUS_SET_AFFECTED_ROWS_TO_ERROR(conn->upsert_status);
1647 ret = mysqlnd_run_authentication(conn, user, passwd, passwd_len, db, strlen(db),
1648 conn->authentication_plugin_data, conn->options->auth_protocol,
1649 … 0 /*charset not used*/, conn->options, conn->server_capabilities, silent, TRUE/*is_change*/);
1655 conn->m->local_tx_end(conn, this_func, ret);
1665 MYSQLND_METHOD(mysqlnd_conn_data, set_client_option)(MYSQLND_CONN_DATA * const conn,
1673 DBG_INF_FMT("conn=%llu option=%u", conn->thread_id, option);
1675 if (PASS != conn->m->local_tx_start(conn, this_func)) {
1691 ret = conn->vio->data->m.set_client_option(conn->vio, option, value);
1696 …ret = conn->protocol_frame_codec->data->m.set_client_option(conn->protocol_frame_codec, option, va…
1700 conn->options->int_and_float_native = *(unsigned int*) value;
1705 conn->options->flags |= CLIENT_LOCAL_FILES;
1707 conn->options->flags &= ~CLIENT_LOCAL_FILES;
1716 …ew_init_commands = mnd_perealloc(conn->options->init_commands, sizeof(char *) * (conn->options->nu…
1720 conn->options->init_commands = new_init_commands;
1721 new_command = mnd_pestrdup(value, conn->persistent);
1725 conn->options->init_commands[conn->options->num_commands] = new_command;
1726 ++conn->options->num_commands;
1741 …SET_CLIENT_ERROR(conn->error_info, CR_CANT_FIND_CHARSET, UNKNOWN_SQLSTATE, "Unknown character set"…
1746 new_charset_name = mnd_pestrdup(value, conn->persistent);
1750 if (conn->options->charset_name) {
1751 mnd_pefree(conn->options->charset_name, conn->persistent);
1753 conn->options->charset_name = new_charset_name;
1754 DBG_INF_FMT("charset=%s", conn->options->charset_name);
1758 conn->options->protocol = MYSQL_PROTOCOL_PIPE;
1762 conn->options->protocol = *(unsigned int*) value;
1779 conn->options->max_allowed_packet = *(unsigned int*) value;
1784 char * new_auth_protocol = value? mnd_pestrdup(value, conn->persistent) : NULL;
1788 if (conn->options->auth_protocol) {
1789 mnd_pefree(conn->options->auth_protocol, conn->persistent);
1791 conn->options->auth_protocol = new_auth_protocol;
1792 DBG_INF_FMT("auth_protocol=%s", conn->options->auth_protocol);
1797 conn->options->flags |= CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS;
1799 conn->options->flags &= ~CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS;
1803 if (conn->options->connect_attr) {
1804 … DBG_INF_FMT("Before reset %d attribute(s)", zend_hash_num_elements(conn->options->connect_attr));
1805 zend_hash_clean(conn->options->connect_attr);
1809 if (conn->options->connect_attr && value) {
1810 … DBG_INF_FMT("Before delete %d attribute(s)", zend_hash_num_elements(conn->options->connect_attr));
1811 zend_hash_str_del(conn->options->connect_attr, value, strlen(value));
1812 DBG_INF_FMT("%d left", zend_hash_num_elements(conn->options->connect_attr));
1824 conn->m->local_tx_end(conn, this_func, ret);
1827 SET_OOM_ERROR(conn->error_info);
1828 conn->m->local_tx_end(conn, this_func, FAIL);
1837 MYSQLND_METHOD(mysqlnd_conn_data, set_client_option_2d)(MYSQLND_CONN_DATA * const conn,
1846 DBG_INF_FMT("conn=%llu option=%u", conn->thread_id, option);
1848 if (PASS != conn->m->local_tx_start(conn, this_func)) {
1853 if (!conn->options->connect_attr) {
1855 conn->options->connect_attr = mnd_pemalloc(sizeof(HashTable), conn->persistent);
1856 if (!conn->options->connect_attr) {
1859 zend_hash_init(conn->options->connect_attr, 0, NULL, ZVAL_PTR_DTOR, conn->persistent);
1865 zend_hash_str_update(conn->options->connect_attr, key, strlen(key), &attrz);
1871 conn->m->local_tx_end(conn, this_func, ret);
1874 SET_OOM_ERROR(conn->error_info);
1875 conn->m->local_tx_end(conn, this_func, FAIL);
1884 MYSQLND_METHOD(mysqlnd_conn_data, use_result)(MYSQLND_CONN_DATA * const conn, const unsigned int fl…
1890 DBG_INF_FMT("conn=%llu", conn->thread_id);
1892 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1894 if (!conn->current_result) {
1899 …if (conn->last_query_type != QUERY_SELECT || GET_CONNECTION_STATE(&conn->state) != CONN_FETCHING_D…
1900 …SET_CLIENT_ERROR(conn->error_info, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE, mysqlnd_out_of_sync);
1905 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_UNBUFFERED_SETS);
1907 conn->current_result->conn = conn->m->get_reference(conn);
1908 result = conn->current_result->m.use_result(conn->current_result, FALSE);
1911 conn->current_result->m.free_result(conn->current_result, TRUE);
1913 conn->current_result = NULL;
1916 conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS);
1926 MYSQLND_METHOD(mysqlnd_conn_data, store_result)(MYSQLND_CONN_DATA * const conn, const unsigned int …
1932 DBG_INF_FMT("conn=%llu conn=%p", conn->thread_id, conn);
1934 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1937 if (!conn->current_result) {
1942 …if (conn->last_query_type != QUERY_SELECT || GET_CONNECTION_STATE(&conn->state) != CONN_FETCHING_D…
1943 …SET_CLIENT_ERROR(conn->error_info, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE, mysqlnd_out_of_sync);
1948 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_BUFFERED_SETS);
1951 if ((conn->m->get_client_api_capabilities(conn) & MYSQLND_CLIENT_KNOWS_RSET_COPY_DATA)) {
1963 SET_CLIENT_ERROR(conn->error_info, CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, "Unknown fetch mode");
1967 result = conn->current_result->m.store_result(conn->current_result, conn, f);
1969 conn->current_result->m.free_result(conn->current_result, TRUE);
1971 conn->current_result = NULL;
1974 conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS);
1983 MYSQLND_METHOD(mysqlnd_conn_data, get_connection_stats)(const MYSQLND_CONN_DATA * const conn,
1987 mysqlnd_fill_stats_hash(conn->stats, mysqlnd_stats_values_names, return_value ZEND_FILE_LINE_CC);
1995 MYSQLND_METHOD(mysqlnd_conn_data, set_autocommit)(MYSQLND_CONN_DATA * conn, unsigned int mode)
2001 if (PASS == conn->m->local_tx_start(conn, this_func)) {
2002 …ret = conn->m->query(conn, (mode) ? "SET AUTOCOMMIT=1":"SET AUTOCOMMIT=0", sizeof("SET AUTOCOMMIT=…
2003 conn->m->local_tx_end(conn, this_func, ret);
2013 MYSQLND_METHOD(mysqlnd_conn_data, tx_commit)(MYSQLND_CONN_DATA * conn)
2015 return conn->m->tx_commit_or_rollback(conn, TRUE, TRANS_COR_NO_OPT, NULL);
2022 MYSQLND_METHOD(mysqlnd_conn_data, tx_rollback)(MYSQLND_CONN_DATA * conn)
2024 return conn->m->tx_commit_or_rollback(conn, FALSE, TRANS_COR_NO_OPT, NULL);
2031 MYSQLND_METHOD(mysqlnd_conn_data, tx_cor_options_to_string)(const MYSQLND_CONN_DATA * const conn, s…
2106 MYSQLND_METHOD(mysqlnd_conn_data, tx_commit_or_rollback)(MYSQLND_CONN_DATA * conn, const zend_bool …
2112 if (PASS == conn->m->local_tx_start(conn, this_func)) {
2115 conn->m->tx_cor_options_to_string(conn, &tmp_str, flags);
2132 SET_OOM_ERROR(conn->error_info);
2136 ret = conn->m->query(conn, query, query_len);
2140 conn->m->local_tx_end(conn, this_func, ret);
2150 MYSQLND_METHOD(mysqlnd_conn_data, tx_begin)(MYSQLND_CONN_DATA * conn, const unsigned int mode, cons…
2156 if (PASS == conn->m->local_tx_start(conn, this_func)) {
2166 zend_ulong server_version = conn->m->get_server_version(conn);
2195 SET_OOM_ERROR(conn->error_info);
2198 ret = conn->m->query(conn, query, query_len);
2202 conn->m->local_tx_end(conn, this_func, ret);
2212 MYSQLND_METHOD(mysqlnd_conn_data, tx_savepoint)(MYSQLND_CONN_DATA * conn, const char * const name)
2218 if (PASS == conn->m->local_tx_start(conn, this_func)) {
2223 …SET_CLIENT_ERROR(conn->error_info, CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, "Savepoint name not provide…
2228 SET_OOM_ERROR(conn->error_info);
2231 ret = conn->m->query(conn, query, query_len);
2234 conn->m->local_tx_end(conn, this_func, ret);
2244 MYSQLND_METHOD(mysqlnd_conn_data, tx_savepoint_release)(MYSQLND_CONN_DATA * conn, const char * cons…
2250 if (PASS == conn->m->local_tx_start(conn, this_func)) {
2255 …SET_CLIENT_ERROR(conn->error_info, CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, "Savepoint name not provide…
2260 SET_OOM_ERROR(conn->error_info);
2263 ret = conn->m->query(conn, query, query_len);
2266 conn->m->local_tx_end(conn, this_func, ret);
2276 MYSQLND_METHOD(mysqlnd_conn_data, negotiate_client_api_capabilities)(MYSQLND_CONN_DATA * const conn
2280 if (conn) {
2281 ret = conn->client_api_capabilities;
2282 conn->client_api_capabilities = flags;
2292 MYSQLND_METHOD(mysqlnd_conn_data, get_client_api_capabilities)(const MYSQLND_CONN_DATA * const conn)
2295 DBG_RETURN(conn? conn->client_api_capabilities : 0);
2302 MYSQLND_METHOD(mysqlnd_conn_data, local_tx_start)(MYSQLND_CONN_DATA * conn, const size_t this_func)
2312 MYSQLND_METHOD(mysqlnd_conn_data, local_tx_end)(MYSQLND_CONN_DATA * conn, const size_t this_func, c…
2322 MYSQLND_METHOD(mysqlnd_conn_data, stmt_init)(MYSQLND_CONN_DATA * const conn)
2326 ret = conn->object_factory.get_prepared_statement(conn, conn->persistent);
2424 MYSQLND_METHOD(mysqlnd_conn, clone_object)(MYSQLND * const conn)
2428 ret = conn->data->object_factory.clone_connection_object(conn);
2436 MYSQLND_METHOD_PRIVATE(mysqlnd_conn, dtor)(MYSQLND * conn)
2439 DBG_INF_FMT("conn=%llu", conn->data->thread_id);
2441 conn->data->m->free_reference(conn->data);
2443 mnd_pefree(conn, conn->persistent);
2455 MYSQLND_CONN_DATA * conn = conn_handle->data; local
2459 DBG_INF_FMT("conn=%llu", conn->thread_id);
2461 if (PASS == conn->m->local_tx_start(conn, this_func)) {
2462 if (GET_CONNECTION_STATE(&conn->state) >= CONN_READY) {
2468 MYSQLND_INC_CONN_STATISTIC(conn->stats, close_type_to_stat_map[close_type]);
2475 ret = conn->m->send_close(conn);
2478 conn->m->local_tx_end(conn, this_func, ret);