Lines Matching refs:conn

70 MYSQLND_METHOD(mysqlnd_conn_data, free_options)(MYSQLND_CONN_DATA * conn)  in MYSQLND_METHOD()
72 zend_bool pers = conn->persistent; in MYSQLND_METHOD()
74 if (conn->options->charset_name) { in MYSQLND_METHOD()
75 mnd_pefree(conn->options->charset_name, pers); in MYSQLND_METHOD()
76 conn->options->charset_name = NULL; in MYSQLND_METHOD()
78 if (conn->options->auth_protocol) { in MYSQLND_METHOD()
79 mnd_pefree(conn->options->auth_protocol, pers); in MYSQLND_METHOD()
80 conn->options->auth_protocol = NULL; in MYSQLND_METHOD()
82 if (conn->options->num_commands) { in MYSQLND_METHOD()
84 for (i = 0; i < conn->options->num_commands; i++) { in MYSQLND_METHOD()
86 mnd_pefree(conn->options->init_commands[i], pers); in MYSQLND_METHOD()
88 mnd_pefree(conn->options->init_commands, pers); in MYSQLND_METHOD()
89 conn->options->init_commands = NULL; in MYSQLND_METHOD()
91 if (conn->options->cfg_file) { in MYSQLND_METHOD()
92 mnd_pefree(conn->options->cfg_file, pers); in MYSQLND_METHOD()
93 conn->options->cfg_file = NULL; in MYSQLND_METHOD()
95 if (conn->options->cfg_section) { in MYSQLND_METHOD()
96 mnd_pefree(conn->options->cfg_section, pers); in MYSQLND_METHOD()
97 conn->options->cfg_section = NULL; in MYSQLND_METHOD()
99 if (conn->options->connect_attr) { in MYSQLND_METHOD()
100 zend_hash_destroy(conn->options->connect_attr); in MYSQLND_METHOD()
101 mnd_pefree(conn->options->connect_attr, pers); in MYSQLND_METHOD()
102 conn->options->connect_attr = NULL; in MYSQLND_METHOD()
110 MYSQLND_METHOD(mysqlnd_conn_data, free_contents)(MYSQLND_CONN_DATA * conn) in MYSQLND_METHOD()
112 zend_bool pers = conn->persistent; in MYSQLND_METHOD()
116 if (conn->current_result) { in MYSQLND_METHOD()
117 conn->current_result->m.free_result(conn->current_result, TRUE); in MYSQLND_METHOD()
118 conn->current_result = NULL; in MYSQLND_METHOD()
121 if (conn->net) { in MYSQLND_METHOD()
122 conn->net->data->m.free_contents(conn->net); in MYSQLND_METHOD()
127 if (conn->host) { in MYSQLND_METHOD()
128 mnd_pefree(conn->host, pers); in MYSQLND_METHOD()
129 conn->host = NULL; in MYSQLND_METHOD()
131 if (conn->user) { in MYSQLND_METHOD()
132 mnd_pefree(conn->user, pers); in MYSQLND_METHOD()
133 conn->user = NULL; in MYSQLND_METHOD()
135 if (conn->passwd) { in MYSQLND_METHOD()
136 mnd_pefree(conn->passwd, pers); in MYSQLND_METHOD()
137 conn->passwd = NULL; in MYSQLND_METHOD()
139 if (conn->connect_or_select_db) { in MYSQLND_METHOD()
140 mnd_pefree(conn->connect_or_select_db, pers); in MYSQLND_METHOD()
141 conn->connect_or_select_db = NULL; in MYSQLND_METHOD()
143 if (conn->unix_socket) { in MYSQLND_METHOD()
144 mnd_pefree(conn->unix_socket, pers); in MYSQLND_METHOD()
145 conn->unix_socket = NULL; in MYSQLND_METHOD()
147 DBG_INF_FMT("scheme=%s", conn->scheme); in MYSQLND_METHOD()
148 if (conn->scheme) { in MYSQLND_METHOD()
149 mnd_pefree(conn->scheme, pers); in MYSQLND_METHOD()
150 conn->scheme = NULL; in MYSQLND_METHOD()
152 if (conn->server_version) { in MYSQLND_METHOD()
153 mnd_pefree(conn->server_version, pers); in MYSQLND_METHOD()
154 conn->server_version = NULL; in MYSQLND_METHOD()
156 if (conn->host_info) { in MYSQLND_METHOD()
157 mnd_pefree(conn->host_info, pers); in MYSQLND_METHOD()
158 conn->host_info = NULL; in MYSQLND_METHOD()
160 if (conn->auth_plugin_data) { in MYSQLND_METHOD()
161 mnd_pefree(conn->auth_plugin_data, pers); in MYSQLND_METHOD()
162 conn->auth_plugin_data = NULL; in MYSQLND_METHOD()
164 if (conn->last_message) { in MYSQLND_METHOD()
165 mnd_pefree(conn->last_message, pers); in MYSQLND_METHOD()
166 conn->last_message = NULL; in MYSQLND_METHOD()
168 if (conn->error_info->error_list) { in MYSQLND_METHOD()
169 zend_llist_clean(conn->error_info->error_list); in MYSQLND_METHOD()
170 mnd_pefree(conn->error_info->error_list, pers); in MYSQLND_METHOD()
171 conn->error_info->error_list = NULL; in MYSQLND_METHOD()
173 conn->charset = NULL; in MYSQLND_METHOD()
174 conn->greet_charset = NULL; in MYSQLND_METHOD()
183 MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, dtor)(MYSQLND_CONN_DATA * conn) in MYSQLND_METHOD_PRIVATE()
186 DBG_INF_FMT("conn=%llu", conn->thread_id); in MYSQLND_METHOD_PRIVATE()
188 conn->m->free_contents(conn); in MYSQLND_METHOD_PRIVATE()
189 conn->m->free_options(conn); in MYSQLND_METHOD_PRIVATE()
191 if (conn->net) { in MYSQLND_METHOD_PRIVATE()
192 mysqlnd_net_free(conn->net, conn->stats, conn->error_info); in MYSQLND_METHOD_PRIVATE()
193 conn->net = NULL; in MYSQLND_METHOD_PRIVATE()
196 if (conn->protocol) { in MYSQLND_METHOD_PRIVATE()
197 mysqlnd_protocol_free(conn->protocol); in MYSQLND_METHOD_PRIVATE()
198 conn->protocol = NULL; in MYSQLND_METHOD_PRIVATE()
201 if (conn->stats) { in MYSQLND_METHOD_PRIVATE()
202 mysqlnd_stats_end(conn->stats, conn->persistent); in MYSQLND_METHOD_PRIVATE()
205 mnd_pefree(conn, conn->persistent); in MYSQLND_METHOD_PRIVATE()
214 MYSQLND_METHOD(mysqlnd_conn_data, simple_command_handle_response)(MYSQLND_CONN_DATA * conn, enum my… in MYSQLND_METHOD()
225 MYSQLND_PACKET_OK * ok_response = conn->protocol->m.get_ok_packet(conn->protocol, FALSE); in MYSQLND_METHOD()
227 SET_OOM_ERROR(*conn->error_info); in MYSQLND_METHOD()
230 if (FAIL == (ret = PACKET_READ(ok_response, conn))) { in MYSQLND_METHOD()
240 …SET_CLIENT_ERROR(*conn->error_info, ok_response->error_no, ok_response->sqlstate, ok_response->err… in MYSQLND_METHOD()
251 conn->upsert_status->server_status &= ~SERVER_MORE_RESULTS_EXISTS; in MYSQLND_METHOD()
252 SET_ERROR_AFF_ROWS(conn); in MYSQLND_METHOD()
254 SET_NEW_MESSAGE(conn->last_message, conn->last_message_len, in MYSQLND_METHOD()
256 conn->persistent); in MYSQLND_METHOD()
259 memset(conn->upsert_status, 0, sizeof(*conn->upsert_status)); in MYSQLND_METHOD()
260 conn->upsert_status->warning_count = ok_response->warning_count; in MYSQLND_METHOD()
261 conn->upsert_status->server_status = ok_response->server_status; in MYSQLND_METHOD()
262 conn->upsert_status->affected_rows = ok_response->affected_rows; in MYSQLND_METHOD()
263 conn->upsert_status->last_insert_id = ok_response->last_insert_id; in MYSQLND_METHOD()
271 MYSQLND_PACKET_EOF * ok_response = conn->protocol->m.get_eof_packet(conn->protocol, FALSE); in MYSQLND_METHOD()
273 SET_OOM_ERROR(*conn->error_info); in MYSQLND_METHOD()
276 if (FAIL == (ret = PACKET_READ(ok_response, conn))) { in MYSQLND_METHOD()
277 SET_CLIENT_ERROR(*conn->error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, in MYSQLND_METHOD()
286 …SET_CLIENT_ERROR(*conn->error_info, ok_response->error_no, ok_response->sqlstate, ok_response->err… in MYSQLND_METHOD()
287 SET_ERROR_AFF_ROWS(conn); in MYSQLND_METHOD()
289 SET_CLIENT_ERROR(*conn->error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet"); in MYSQLND_METHOD()
302 SET_CLIENT_ERROR(*conn->error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet"); in MYSQLND_METHOD()
314 MYSQLND_METHOD(mysqlnd_conn_data, simple_command_send_request)(MYSQLND_CONN_DATA * conn, enum php_m… in MYSQLND_METHOD()
322 DBG_INF_FMT("conn->server_status=%u", conn->upsert_status->server_status); in MYSQLND_METHOD()
325 switch (CONN_GET_STATE(conn)) { in MYSQLND_METHOD()
329 SET_CLIENT_ERROR(*conn->error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone); in MYSQLND_METHOD()
333 …SET_CLIENT_ERROR(*conn->error_info, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE, mysqlnd_out_of_sync… in MYSQLND_METHOD()
334 DBG_ERR_FMT("Command out of sync. State=%u", CONN_GET_STATE(conn)); in MYSQLND_METHOD()
338 SET_ERROR_AFF_ROWS(conn); in MYSQLND_METHOD()
339 SET_EMPTY_ERROR(*conn->error_info); in MYSQLND_METHOD()
341 cmd_packet = conn->protocol->m.get_command_packet(conn->protocol, FALSE); in MYSQLND_METHOD()
343 SET_OOM_ERROR(*conn->error_info); in MYSQLND_METHOD()
353 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_COM_QUIT + command - 1 /* because of COM_SLEEP */ ); in MYSQLND_METHOD()
355 if (! PACKET_WRITE(cmd_packet, conn)) { in MYSQLND_METHOD()
360 CONN_SET_STATE(conn, CONN_QUIT_SENT); in MYSQLND_METHOD()
361 conn->m->send_close(conn); in MYSQLND_METHOD()
373 MYSQLND_METHOD(mysqlnd_conn_data, simple_command)(MYSQLND_CONN_DATA * conn, enum php_mysqlnd_server… in MYSQLND_METHOD()
380 …ret = conn->m->simple_command_send_request(conn, command, arg, arg_len, silent, ignore_upsert_stat… in MYSQLND_METHOD()
382 …ret = conn->m->simple_command_handle_response(conn, ok_packet, silent, command, ignore_upsert_stat… in MYSQLND_METHOD()
393 MYSQLND_METHOD(mysqlnd_conn_data, set_server_option)(MYSQLND_CONN_DATA * const conn, enum_mysqlnd_s… in MYSQLND_METHOD()
399 if (PASS == conn->m->local_tx_start(conn, this_func)) { in MYSQLND_METHOD()
402 …ret = conn->m->simple_command(conn, COM_SET_OPTION, buffer, sizeof(buffer), PROT_EOF_PACKET, FALSE… in MYSQLND_METHOD()
404 conn->m->local_tx_end(conn, this_func, ret); in MYSQLND_METHOD()
413 MYSQLND_METHOD(mysqlnd_conn_data, restart_psession)(MYSQLND_CONN_DATA * conn) in MYSQLND_METHOD()
416 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_CONNECT_REUSED); in MYSQLND_METHOD()
418 if (conn->last_message) { in MYSQLND_METHOD()
419 mnd_pefree(conn->last_message, conn->persistent); in MYSQLND_METHOD()
420 conn->last_message = NULL; in MYSQLND_METHOD()
429 MYSQLND_METHOD(mysqlnd_conn_data, end_psession)(MYSQLND_CONN_DATA * conn) in MYSQLND_METHOD()
440 MYSQLND_CONN_DATA * conn, in mysqlnd_switch_to_ssl_if_needed() argument
476 auth_packet = conn->protocol->m.get_auth_packet(conn->protocol, FALSE); in mysqlnd_switch_to_ssl_if_needed()
478 SET_OOM_ERROR(*conn->error_info); in mysqlnd_switch_to_ssl_if_needed()
502 if (!PACKET_WRITE(auth_packet, conn)) { in mysqlnd_switch_to_ssl_if_needed()
506conn->net->data->m.set_client_option(conn->net, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, (const char *) &… in mysqlnd_switch_to_ssl_if_needed()
508 if (FAIL == conn->net->data->m.enable_ssl(conn->net)) { in mysqlnd_switch_to_ssl_if_needed()
515 if (!PACKET_WRITE(auth_packet, conn)) { in mysqlnd_switch_to_ssl_if_needed()
525 CONN_SET_STATE(conn, CONN_QUIT_SENT); in mysqlnd_switch_to_ssl_if_needed()
526 conn->m->send_close(conn); in mysqlnd_switch_to_ssl_if_needed()
527 SET_CLIENT_ERROR(*conn->error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone); in mysqlnd_switch_to_ssl_if_needed()
555 MYSQLND_CONN_DATA * conn, in mysqlnd_run_authentication() argument
596 …struct st_mysqlnd_authentication_plugin * auth_plugin = conn->m->fetch_auth_plugin_by_name(request… in mysqlnd_run_authentication()
600 …SET_CLIENT_ERROR(*conn->error_info, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE, "The server requested au… in mysqlnd_run_authentication()
614 if (conn->auth_plugin_data) { in mysqlnd_run_authentication()
615 mnd_pefree(conn->auth_plugin_data, conn->persistent); in mysqlnd_run_authentication()
616 conn->auth_plugin_data = NULL; in mysqlnd_run_authentication()
618 conn->auth_plugin_data_len = plugin_data_len; in mysqlnd_run_authentication()
619 conn->auth_plugin_data = mnd_pemalloc(conn->auth_plugin_data_len, conn->persistent); in mysqlnd_run_authentication()
620 if (!conn->auth_plugin_data) { in mysqlnd_run_authentication()
621 SET_OOM_ERROR(*conn->error_info); in mysqlnd_run_authentication()
624 memcpy(conn->auth_plugin_data, plugin_data, plugin_data_len); in mysqlnd_run_authentication()
629 auth_plugin->methods.get_auth_data(NULL, &scrambled_data_len, conn, user, passwd, passwd_len, in mysqlnd_run_authentication()
630 plugin_data, plugin_data_len, options, &conn->net->data->options, mysql_flags); in mysqlnd_run_authentication()
631 if (conn->error_info->error_no) { in mysqlnd_run_authentication()
635 ret = mysqlnd_auth_handshake(conn, user, passwd, passwd_len, db, db_len, options, mysql_flags, in mysqlnd_run_authentication()
644 ret = mysqlnd_auth_change_user(conn, user, strlen(user), passwd, passwd_len, db, db_len, silent, in mysqlnd_run_authentication()
667 DBG_INF_FMT("conn->error_info->error_no = %d", conn->error_info->error_no); in mysqlnd_run_authentication()
668 } while (ret == FAIL && conn->error_info->error_no == 0 && switch_to_auth_protocol != NULL); in mysqlnd_run_authentication()
672 conn->m->set_client_option(conn, MYSQLND_OPT_AUTH_PROTOCOL, requested_protocol); in mysqlnd_run_authentication()
690 MYSQLND_CONN_DATA * conn, in mysqlnd_connect_run_authentication() argument
704 ret = mysqlnd_switch_to_ssl_if_needed(conn, greet_packet, options, mysql_flags); in mysqlnd_connect_run_authentication()
706 ret = mysqlnd_run_authentication(conn, user, passwd, passwd_len, db, db_len, in mysqlnd_connect_run_authentication()
717 MYSQLND_METHOD(mysqlnd_conn_data, execute_init_commands)(MYSQLND_CONN_DATA * conn) in MYSQLND_METHOD()
722 if (conn->options->init_commands) { in MYSQLND_METHOD()
724 for (; current_command < conn->options->num_commands; ++current_command) { in MYSQLND_METHOD()
725 const char * const command = conn->options->init_commands[current_command]; in MYSQLND_METHOD()
727 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_INIT_COMMAND_EXECUTED_COUNT); in MYSQLND_METHOD()
728 if (PASS != conn->m->query(conn, command, strlen(command))) { in MYSQLND_METHOD()
729 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_INIT_COMMAND_FAILED_COUNT); in MYSQLND_METHOD()
733 if (conn->last_query_type == QUERY_SELECT) { in MYSQLND_METHOD()
734 MYSQLND_RES * result = conn->m->use_result(conn, 0); in MYSQLND_METHOD()
749 MYSQLND_METHOD(mysqlnd_conn_data, get_updated_connect_flags)(MYSQLND_CONN_DATA * conn, unsigned int… in MYSQLND_METHOD()
751 MYSQLND_NET * net = conn->net; in MYSQLND_METHOD()
757 mysql_flags |= conn->options->flags; /* use the flags from set_client_option() */ in MYSQLND_METHOD()
787 MYSQLND_METHOD(mysqlnd_conn_data, connect_handshake)(MYSQLND_CONN_DATA * conn, in MYSQLND_METHOD()
794 MYSQLND_NET * net = conn->net; in MYSQLND_METHOD()
798 greet_packet = conn->protocol->m.get_greet_packet(conn->protocol, FALSE); in MYSQLND_METHOD()
800 SET_OOM_ERROR(*conn->error_info); in MYSQLND_METHOD()
804 if (FAIL == net->data->m.connect_ex(conn->net, conn->scheme, conn->scheme_len, conn->persistent, in MYSQLND_METHOD()
805 conn->stats, conn->error_info)) in MYSQLND_METHOD()
812 if (FAIL == PACKET_READ(greet_packet, conn)) { in MYSQLND_METHOD()
818 …SET_CLIENT_ERROR(*conn->error_info, greet_packet->error_no, greet_packet->sqlstate, greet_packet->… in MYSQLND_METHOD()
824 SET_CLIENT_ERROR(*conn->error_info, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE, in MYSQLND_METHOD()
829 conn->thread_id = greet_packet->thread_id; in MYSQLND_METHOD()
830 conn->protocol_version = greet_packet->protocol_version; in MYSQLND_METHOD()
831 conn->server_version = mnd_pestrdup(greet_packet->server_version, conn->persistent); in MYSQLND_METHOD()
833 conn->greet_charset = mysqlnd_find_charset_nr(greet_packet->charset_no); in MYSQLND_METHOD()
834 if (!conn->greet_charset) { in MYSQLND_METHOD()
837 SET_CLIENT_ERROR(*conn->error_info, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE, in MYSQLND_METHOD()
842 conn->client_flag = mysql_flags; in MYSQLND_METHOD()
843 conn->server_capabilities = greet_packet->server_capabilities; in MYSQLND_METHOD()
845 if (FAIL == mysqlnd_connect_run_authentication(conn, user, passwd, db, db_len, (size_t) passwd_len, in MYSQLND_METHOD()
846 greet_packet, conn->options, mysql_flags)) in MYSQLND_METHOD()
850 memset(conn->upsert_status, 0, sizeof(*conn->upsert_status)); in MYSQLND_METHOD()
851 conn->upsert_status->warning_count = 0; in MYSQLND_METHOD()
852 conn->upsert_status->server_status = greet_packet->server_status; in MYSQLND_METHOD()
853 conn->upsert_status->affected_rows = 0; in MYSQLND_METHOD()
858 conn->client_flag = 0; in MYSQLND_METHOD()
859 conn->server_capabilities = 0; in MYSQLND_METHOD()
868 MYSQLND_METHOD(mysqlnd_conn_data, connect)(MYSQLND_CONN_DATA * conn,
884 MYSQLND_NET * net = conn->net;
887 DBG_INF_FMT("conn=%p", conn);
889 if (PASS != conn->m->local_tx_start(conn, this_func)) {
894 SET_EMPTY_ERROR(*conn->error_info);
895 SET_ERROR_AFF_ROWS(conn);
899 conn? conn->persistent:0, conn? CONN_GET_STATE(conn):-1);
901 if (CONN_GET_STATE(conn) > CONN_ALLOCED && CONN_GET_STATE(conn) ) {
904 if (CONN_GET_STATE(conn) < CONN_QUIT_SENT) {
905 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_CLOSE_IMPLICIT);
907 conn->m->send_close(conn);
910 conn->m->free_contents(conn);
911 MYSQLND_DEC_CONN_STATISTIC(conn->stats, STAT_OPENED_CONNECTIONS);
912 if (conn->persistent) {
913 MYSQLND_DEC_CONN_STATISTIC(conn->stats, STAT_OPENED_PERSISTENT_CONNECTIONS);
930 conn->m->set_client_option(conn, MYSQLND_OPT_MAX_ALLOWED_PACKET, (char *)&max_allowed_size);
981 SET_OOM_ERROR(*conn->error_info);
984 DBG_INF_FMT("transport=%s conn->scheme=%s", transport, conn->scheme);
985 conn->scheme = mnd_pestrndup(transport, transport_len, conn->persistent);
986 conn->scheme_len = transport_len;
989 if (!conn->scheme) {
994 mysql_flags = conn->m->get_updated_connect_flags(conn, mysql_flags);
996 …if (FAIL == conn->m->connect_handshake(conn, host, user, passwd, passwd_len, db, db_len, mysql_fla…
1001 CONN_SET_STATE(conn, CONN_READY);
1013 conn->user_len = strlen(user);
1014 conn->user = mnd_pestrndup(user, conn->user_len, conn->persistent);
1015 conn->passwd = mnd_pestrndup(passwd, passwd_len, conn->persistent);
1016 conn->passwd_len = passwd_len;
1017 conn->port = port;
1018 conn->connect_or_select_db = mnd_pestrndup(db, db_len, conn->persistent);
1019 conn->connect_or_select_db_len = db_len;
1021 if (!conn->user || !conn->passwd || !conn->connect_or_select_db) {
1022 SET_OOM_ERROR(*conn->error_info);
1027 conn->host = mnd_pestrndup(host, host_len, conn->persistent);
1028 if (!conn->host) {
1029 SET_OOM_ERROR(*conn->error_info);
1032 conn->host_len = host_len;
1035 mnd_sprintf(&p, 0, "%s via TCP/IP", conn->host);
1037 SET_OOM_ERROR(*conn->error_info);
1040 conn->host_info = mnd_pestrdup(p, conn->persistent);
1042 if (!conn->host_info) {
1043 SET_OOM_ERROR(*conn->error_info);
1048 conn->unix_socket = mnd_pestrdup(socket_or_pipe, conn->persistent);
1050 conn->host_info = mnd_pestrdup("Localhost via UNIX socket", conn->persistent);
1053 mnd_sprintf(&p, 0, "%s via named pipe", conn->unix_socket);
1055 SET_OOM_ERROR(*conn->error_info);
1058 conn->host_info = mnd_pestrdup(p, conn->persistent);
1060 if (!conn->host_info) {
1061 SET_OOM_ERROR(*conn->error_info);
1067 if (!conn->unix_socket || !conn->host_info) {
1068 SET_OOM_ERROR(*conn->error_info);
1071 conn->unix_socket_len = strlen(conn->unix_socket);
1073 conn->max_packet_size = MYSQLND_ASSEMBLED_PACKET_MAX_SIZE;
1076 SET_EMPTY_ERROR(*conn->error_info);
1078 mysqlnd_local_infile_default(conn);
1080 if (FAIL == conn->m->execute_init_commands(conn)) {
1084 …MYSQLND_INC_CONN_STATISTIC_W_VALUE2(conn->stats, STAT_CONNECT_SUCCESS, 1, STAT_OPENED_CONNECTIONS,…
1088 if (conn->persistent) {
1089 …MYSQLND_INC_CONN_STATISTIC_W_VALUE2(conn->stats, STAT_PCONNECT_SUCCESS, 1, STAT_OPENED_PERSISTENT_…
1092 DBG_INF_FMT("connection_id=%llu", conn->thread_id);
1094 conn->m->local_tx_end(conn, this_func, PASS);
1099 …R_FMT("[%u] %.128s (trying to connect via %s)", conn->error_info->error_no, conn->error_info->erro…
1100 if (!conn->error_info->error_no) {
1101 …SET_CLIENT_ERROR(*conn->error_info, CR_CONNECTION_ERROR, UNKNOWN_SQLSTATE, conn->error_info->error…
1103 conn->error_info->error_no, conn->error_info->error, conn->scheme);
1106 conn->m->free_contents(conn);
1107 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_CONNECT_FAILURE);
1109 conn->m->local_tx_end(conn, this_func, FAIL);
1130 MYSQLND_CONN_DATA * conn = conn_handle->data; local
1134 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1136 …ret = conn->m->connect(conn, host, user, passwd, passwd_len, db, db_len, port, socket_or_pipe, mys…
1138 conn->m->local_tx_end(conn, this_func, FAIL);
1193 MYSQLND_METHOD(mysqlnd_conn_data, query)(MYSQLND_CONN_DATA * conn, const char * query, unsigned int…
1198 DBG_INF_FMT("conn=%p conn=%llu query=%s", conn, conn->thread_id, query);
1200 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1201 …if (PASS == conn->m->send_query(conn, query, query_len, MYSQLND_SEND_QUERY_IMPLICIT, NULL, NULL) &&
1202 PASS == conn->m->reap_query(conn, MYSQLND_REAP_RESULT_IMPLICIT))
1205 if (conn->last_query_type == QUERY_UPSERT && conn->upsert_status->affected_rows) {
1206 …MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn->stats, STAT_ROWS_AFFECTED_NORMAL, conn->upsert_status->af…
1209 conn->m->local_tx_end(conn, this_func, ret);
1218 MYSQLND_METHOD(mysqlnd_conn_data, send_query)(MYSQLND_CONN_DATA * conn, const char * query, unsigne…
1224 DBG_INF_FMT("conn=%llu query=%s", conn->thread_id, query);
1225 DBG_INF_FMT("conn->server_status=%u", conn->upsert_status->server_status);
1227 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1228 ret = conn->m->simple_command(conn, COM_QUERY, (zend_uchar *) query, query_len,
1232 CONN_SET_STATE(conn, CONN_QUERY_SENT);
1234 conn->m->local_tx_end(conn, this_func, ret);
1236 DBG_INF_FMT("conn->server_status=%u", conn->upsert_status->server_status);
1244 MYSQLND_METHOD(mysqlnd_conn_data, reap_query)(MYSQLND_CONN_DATA * conn, enum_mysqlnd_reap_result_ty…
1247 enum_mysqlnd_connection_state state = CONN_GET_STATE(conn);
1250 DBG_INF_FMT("conn=%llu", conn->thread_id);
1252 DBG_INF_FMT("conn->server_status=%u", conn->upsert_status->server_status);
1253 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1259 ret = conn->m->query_read_result_set_header(conn, NULL);
1261 conn->m->local_tx_end(conn, this_func, ret);
1263 DBG_INF_FMT("conn->server_status=%u", conn->upsert_status->server_status);
1468 MYSQLND_METHOD(mysqlnd_conn_data, list_fields)(MYSQLND_CONN_DATA * conn, const char *table, const c…
1476 …DBG_INF_FMT("conn=%llu table=%s wild=%s", conn->thread_id, table? table:"",achtung_wild? achtung_w…
1478 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1495 if (PASS != conn->m->simple_command(conn, COM_FIELD_LIST, buff, p - buff,
1498 conn->m->local_tx_end(conn, 0, FAIL);
1506 result = conn->m->result_init(5000, conn->persistent);
1511 if (FAIL == result->m.read_result_metadata(result, conn)) {
1522 SET_OOM_ERROR(*conn->error_info);
1529 conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS);
1539 MYSQLND_METHOD(mysqlnd_conn_data, list_method)(MYSQLND_CONN_DATA * conn, const char * query, const …
1547 DBG_INF_FMT("conn=%llu query=%s wild=%u", conn->thread_id, query, achtung_wild);
1549 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1564 if (PASS == conn->m->query(conn, show_query, show_query_len)) {
1565 result = conn->m->store_result(conn, MYSQLND_STORE_NO_COPY);
1570 conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS);
1579 MYSQLND_METHOD(mysqlnd_conn_data, errno)(const MYSQLND_CONN_DATA * const conn)
1581 return conn->error_info->error_no;
1588 MYSQLND_METHOD(mysqlnd_conn_data, error)(const MYSQLND_CONN_DATA * const conn)
1590 return conn->error_info->error;
1597 MYSQLND_METHOD(mysqlnd_conn_data, sqlstate)(const MYSQLND_CONN_DATA * const conn)
1599 return conn->error_info->sqlstate[0] ? conn->error_info->sqlstate:MYSQLND_SQLSTATE_NULL;
1616 MYSQLND_METHOD(mysqlnd_conn_data, ssl_set)(MYSQLND_CONN_DATA * const conn, const char * key, const …
1621 MYSQLND_NET * net = conn->net;
1624 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1631 conn->m->local_tx_end(conn, this_func, ret);
1640 MYSQLND_METHOD(mysqlnd_conn_data, escape_string)(MYSQLND_CONN_DATA * const conn, char * newstr, con…
1645 DBG_INF_FMT("conn=%llu", conn->thread_id);
1647 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1648 DBG_INF_FMT("server_status=%u", conn->upsert_status->server_status);
1649 if (conn->upsert_status->server_status & SERVER_STATUS_NO_BACKSLASH_ESCAPES) {
1650 ret = mysqlnd_cset_escape_quotes(conn->charset, newstr, escapestr, escapestr_len);
1652 ret = mysqlnd_cset_escape_slashes(conn->charset, newstr, escapestr, escapestr_len);
1654 conn->m->local_tx_end(conn, this_func, PASS);
1663 MYSQLND_METHOD(mysqlnd_conn_data, dump_debug_info)(MYSQLND_CONN_DATA * const conn)
1668 DBG_INF_FMT("conn=%llu", conn->thread_id);
1669 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1670 ret = conn->m->simple_command(conn, COM_DEBUG, NULL, 0, PROT_EOF_PACKET, FALSE, TRUE);
1672 conn->m->local_tx_end(conn, this_func, ret);
1682 MYSQLND_METHOD(mysqlnd_conn_data, select_db)(MYSQLND_CONN_DATA * const conn, const char * const db,…
1688 DBG_INF_FMT("conn=%llu db=%s", conn->thread_id, db);
1690 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1691 …ret = conn->m->simple_command(conn, COM_INIT_DB, (zend_uchar*) db, db_len, PROT_OK_PACKET, FALSE, …
1696 SET_ERROR_AFF_ROWS(conn);
1698 if (conn->connect_or_select_db) {
1699 mnd_pefree(conn->connect_or_select_db, conn->persistent);
1701 conn->connect_or_select_db = mnd_pestrndup(db, db_len, conn->persistent);
1702 conn->connect_or_select_db_len = db_len;
1703 if (!conn->connect_or_select_db) {
1705 SET_OOM_ERROR(*conn->error_info);
1709 conn->m->local_tx_end(conn, this_func, ret);
1718 MYSQLND_METHOD(mysqlnd_conn_data, ping)(MYSQLND_CONN_DATA * const conn)
1724 DBG_INF_FMT("conn=%llu", conn->thread_id);
1726 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1727 ret = conn->m->simple_command(conn, COM_PING, NULL, 0, PROT_OK_PACKET, TRUE, TRUE);
1732 SET_ERROR_AFF_ROWS(conn);
1734 conn->m->local_tx_end(conn, this_func, ret);
1744 MYSQLND_METHOD(mysqlnd_conn_data, statistic)(MYSQLND_CONN_DATA * conn, zend_string **message)
1751 DBG_INF_FMT("conn=%llu", conn->thread_id);
1753 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1755 ret = conn->m->simple_command(conn, COM_STATISTICS, NULL, 0, PROT_LAST, FALSE, TRUE);
1759 stats_header = conn->protocol->m.get_stats_packet(conn->protocol, FALSE);
1761 SET_OOM_ERROR(*conn->error_info);
1765 if (PASS == (ret = PACKET_READ(stats_header, conn))) {
1773 conn->m->local_tx_end(conn, this_func, ret);
1782 MYSQLND_METHOD(mysqlnd_conn_data, kill)(MYSQLND_CONN_DATA * conn, unsigned int pid)
1789 DBG_INF_FMT("conn=%llu pid=%u", conn->thread_id, pid);
1791 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1795 if (pid != conn->thread_id) {
1796 ret = conn->m->simple_command(conn, COM_PROCESS_KILL, buff, 4, PROT_OK_PACKET, FALSE, TRUE);
1801 SET_ERROR_AFF_ROWS(conn);
1802 …} else if (PASS == (ret = conn->m->simple_command(conn, COM_PROCESS_KILL, buff, 4, PROT_LAST, FALS…
1803 CONN_SET_STATE(conn, CONN_QUIT_SENT);
1804 conn->m->send_close(conn);
1807 conn->m->local_tx_end(conn, this_func, ret);
1816 MYSQLND_METHOD(mysqlnd_conn_data, set_charset)(MYSQLND_CONN_DATA * const conn, const char * const c…
1823 DBG_INF_FMT("conn=%llu cs=%s", conn->thread_id, csname);
1826 SET_CLIENT_ERROR(*conn->error_info, CR_CANT_FIND_CHARSET, UNKNOWN_SQLSTATE,
1831 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1835 if (FAIL == (ret = conn->m->query(conn, query, query_len))) {
1837 } else if (conn->error_info->error_no) {
1840 conn->charset = charset;
1844 conn->m->local_tx_end(conn, this_func, ret);
1855 MYSQLND_METHOD(mysqlnd_conn_data, refresh)(MYSQLND_CONN_DATA * const conn, uint8_t options)
1861 DBG_INF_FMT("conn=%llu options=%lu", conn->thread_id, options);
1863 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1866 ret = conn->m->simple_command(conn, COM_REFRESH, bits, 1, PROT_OK_PACKET, FALSE, TRUE);
1868 conn->m->local_tx_end(conn, this_func, ret);
1877 MYSQLND_METHOD(mysqlnd_conn_data, shutdown)(MYSQLND_CONN_DATA * const conn, uint8_t level)
1883 DBG_INF_FMT("conn=%llu level=%lu", conn->thread_id, level);
1885 if (PASS == conn->m->local_tx_start(conn, this_func)) {
1888 ret = conn->m->simple_command(conn, COM_SHUTDOWN, bits, 1, PROT_OK_PACKET, FALSE, TRUE);
1890 conn->m->local_tx_end(conn, this_func, ret);
1899 MYSQLND_METHOD(mysqlnd_conn_data, send_close)(MYSQLND_CONN_DATA * const conn)
1902 MYSQLND_NET * net = conn->net;
1907 …DBG_INF_FMT("conn=%llu net->data->stream->abstract=%p", conn->thread_id, net_stream? net_stream->a…
1909 if (CONN_GET_STATE(conn) >= CONN_READY) {
1910 MYSQLND_DEC_CONN_STATISTIC(conn->stats, STAT_OPENED_CONNECTIONS);
1911 if (conn->persistent) {
1912 MYSQLND_DEC_CONN_STATISTIC(conn->stats, STAT_OPENED_PERSISTENT_CONNECTIONS);
1915 state = CONN_GET_STATE(conn);
1921 ret = conn->m->simple_command(conn, COM_QUIT, NULL, 0, PROT_LAST, TRUE, TRUE);
1922 net->data->m.close_stream(net, conn->stats, conn->error_info);
1924 CONN_SET_STATE(conn, CONN_QUIT_SENT);
1935 DBG_ERR_FMT("Brutally closing connection [%p][%s]", conn, conn->scheme);
1948 CONN_SET_STATE(conn, CONN_QUIT_SENT);
1952 net->data->m.close_stream(net, conn->stats, conn->error_info);
1963 MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, get_reference)(MYSQLND_CONN_DATA * const conn)
1966 ++conn->refcount;
1967 DBG_INF_FMT("conn=%llu new_refcount=%u", conn->thread_id, conn->refcount);
1968 DBG_RETURN(conn);
1975 MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, free_reference)(MYSQLND_CONN_DATA * const conn)
1979 DBG_INF_FMT("conn=%llu old_refcount=%u", conn->thread_id, conn->refcount);
1980 if (!(--conn->refcount)) {
1986 ret = conn->m->send_close(conn);
1987 conn->m->dtor(conn);
1996 MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, get_state)(const MYSQLND_CONN_DATA * const conn)
1999 DBG_RETURN(conn->state);
2006 MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, set_state)(MYSQLND_CONN_DATA * const conn, enum mysqlnd_c…
2010 conn->state = new_state;
2018 MYSQLND_METHOD(mysqlnd_conn_data, field_count)(const MYSQLND_CONN_DATA * const conn)
2020 return conn->field_count;
2027 MYSQLND_METHOD(mysqlnd_conn_data, server_status)(const MYSQLND_CONN_DATA * const conn)
2029 return conn->upsert_status->server_status;
2036 MYSQLND_METHOD(mysqlnd_conn_data, insert_id)(const MYSQLND_CONN_DATA * const conn)
2038 return conn->upsert_status->last_insert_id;
2045 MYSQLND_METHOD(mysqlnd_conn_data, affected_rows)(const MYSQLND_CONN_DATA * const conn)
2047 return conn->upsert_status->affected_rows;
2054 MYSQLND_METHOD(mysqlnd_conn_data, warning_count)(const MYSQLND_CONN_DATA * const conn)
2056 return conn->upsert_status->warning_count;
2063 MYSQLND_METHOD(mysqlnd_conn_data, info)(const MYSQLND_CONN_DATA * const conn)
2065 return conn->last_message;
2087 MYSQLND_METHOD(mysqlnd_conn_data, get_server_info)(const MYSQLND_CONN_DATA * const conn)
2089 return conn->server_version;
2096 MYSQLND_METHOD(mysqlnd_conn_data, get_host_info)(const MYSQLND_CONN_DATA * const conn)
2098 return conn->host_info;
2105 MYSQLND_METHOD(mysqlnd_conn_data, get_proto_info)(const MYSQLND_CONN_DATA * const conn)
2107 return conn->protocol_version;
2114 MYSQLND_METHOD(mysqlnd_conn_data, charset_name)(const MYSQLND_CONN_DATA * const conn)
2116 return conn->charset->name;
2123 MYSQLND_METHOD(mysqlnd_conn_data, thread_id)(const MYSQLND_CONN_DATA * const conn)
2125 return conn->thread_id;
2132 MYSQLND_METHOD(mysqlnd_conn_data, get_server_version)(const MYSQLND_CONN_DATA * const conn)
2137 if (!(p = conn->server_version)) {
2154 MYSQLND_METHOD(mysqlnd_conn_data, more_results)(const MYSQLND_CONN_DATA * const conn)
2158 DBG_RETURN(conn->upsert_status->server_status & SERVER_MORE_RESULTS_EXISTS? TRUE:FALSE);
2165 MYSQLND_METHOD(mysqlnd_conn_data, next_result)(MYSQLND_CONN_DATA * const conn)
2171 DBG_INF_FMT("conn=%llu", conn->thread_id);
2173 if (PASS == conn->m->local_tx_start(conn, this_func)) {
2175 if (CONN_GET_STATE(conn) != CONN_NEXT_RESULT_PENDING) {
2179 SET_EMPTY_ERROR(*conn->error_info);
2180 SET_ERROR_AFF_ROWS(conn);
2185 if (FAIL == (ret = conn->m->query_read_result_set_header(conn, NULL))) {
2190 if (!conn->error_info->error_no) {
2193 CONN_SET_STATE(conn, CONN_QUIT_SENT);
2194 conn->m->send_close(conn);
2196 …DBG_INF_FMT("Error from the server : (%u) %s", conn->error_info->error_no, conn->error_info->error…
2200 if (conn->last_query_type == QUERY_UPSERT && conn->upsert_status->affected_rows) {
2201 …MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn->stats, STAT_ROWS_AFFECTED_NORMAL, conn->upsert_status->af…
2204 conn->m->local_tx_end(conn, this_func, ret);
2267 MYSQLND_METHOD(mysqlnd_conn_data, change_user)(MYSQLND_CONN_DATA * const conn,
2280 conn->thread_id, user?user:"", passwd?"***":"null", db?db:"", (silent == TRUE)?1:0 );
2282 if (PASS != conn->m->local_tx_start(conn, this_func)) {
2286 SET_EMPTY_ERROR(*conn->error_info);
2287 SET_ERROR_AFF_ROWS(conn);
2300 ret = mysqlnd_run_authentication(conn, user, passwd, passwd_len, db, strlen(db),
2301 conn->auth_plugin_data, conn->auth_plugin_data_len, conn->options->auth_protocol,
2302 … 0 /*charset not used*/, conn->options, conn->server_capabilities, silent, TRUE/*is_change*/);
2308 conn->m->local_tx_end(conn, this_func, ret);
2318 MYSQLND_METHOD(mysqlnd_conn_data, set_client_option)(MYSQLND_CONN_DATA * const conn,
2326 DBG_INF_FMT("conn=%llu option=%u", conn->thread_id, option);
2328 if (PASS != conn->m->local_tx_start(conn, this_func)) {
2347 ret = conn->net->data->m.set_client_option(conn->net, option, value);
2351 conn->options->int_and_float_native = *(unsigned int*) value;
2356 conn->options->flags |= CLIENT_LOCAL_FILES;
2358 conn->options->flags &= ~CLIENT_LOCAL_FILES;
2367 …ew_init_commands = mnd_perealloc(conn->options->init_commands, sizeof(char *) * (conn->options->nu…
2371 conn->options->init_commands = new_init_commands;
2372 new_command = mnd_pestrdup(value, conn->persistent);
2376 conn->options->init_commands[conn->options->num_commands] = new_command;
2377 ++conn->options->num_commands;
2392 …SET_CLIENT_ERROR(*conn->error_info, CR_CANT_FIND_CHARSET, UNKNOWN_SQLSTATE, "Unknown character set…
2397 new_charset_name = mnd_pestrdup(value, conn->persistent);
2401 if (conn->options->charset_name) {
2402 mnd_pefree(conn->options->charset_name, conn->persistent);
2404 conn->options->charset_name = new_charset_name;
2405 DBG_INF_FMT("charset=%s", conn->options->charset_name);
2409 conn->options->protocol = MYSQL_PROTOCOL_PIPE;
2413 conn->options->protocol = *(unsigned int*) value;
2430 conn->options->max_allowed_packet = *(unsigned int*) value;
2435 char * new_auth_protocol = value? mnd_pestrdup(value, conn->persistent) : NULL;
2439 if (conn->options->auth_protocol) {
2440 mnd_pefree(conn->options->auth_protocol, conn->persistent);
2442 conn->options->auth_protocol = new_auth_protocol;
2443 DBG_INF_FMT("auth_protocol=%s", conn->options->auth_protocol);
2448 conn->options->flags |= CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS;
2450 conn->options->flags &= ~CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS;
2454 if (conn->options->connect_attr) {
2455 … DBG_INF_FMT("Before reset %d attribute(s)", zend_hash_num_elements(conn->options->connect_attr));
2456 zend_hash_clean(conn->options->connect_attr);
2460 if (conn->options->connect_attr && value) {
2461 … DBG_INF_FMT("Before delete %d attribute(s)", zend_hash_num_elements(conn->options->connect_attr));
2462 zend_hash_str_del(conn->options->connect_attr, value, strlen(value));
2463 DBG_INF_FMT("%d left", zend_hash_num_elements(conn->options->connect_attr));
2475 conn->m->local_tx_end(conn, this_func, ret);
2478 SET_OOM_ERROR(*conn->error_info);
2479 conn->m->local_tx_end(conn, this_func, FAIL);
2488 MYSQLND_METHOD(mysqlnd_conn_data, set_client_option_2d)(MYSQLND_CONN_DATA * const conn,
2497 DBG_INF_FMT("conn=%llu option=%u", conn->thread_id, option);
2499 if (PASS != conn->m->local_tx_start(conn, this_func)) {
2504 if (!conn->options->connect_attr) {
2506 conn->options->connect_attr = mnd_pemalloc(sizeof(HashTable), conn->persistent);
2507 if (!conn->options->connect_attr) {
2510 zend_hash_init(conn->options->connect_attr, 0, NULL, ZVAL_PTR_DTOR, conn->persistent);
2516 zend_hash_str_update(conn->options->connect_attr, key, strlen(key), &attrz);
2522 conn->m->local_tx_end(conn, this_func, ret);
2525 SET_OOM_ERROR(*conn->error_info);
2526 conn->m->local_tx_end(conn, this_func, FAIL);
2535 MYSQLND_METHOD(mysqlnd_conn_data, use_result)(MYSQLND_CONN_DATA * const conn, const unsigned int fl…
2541 DBG_INF_FMT("conn=%llu", conn->thread_id);
2543 if (PASS == conn->m->local_tx_start(conn, this_func)) {
2545 if (!conn->current_result) {
2550 if (conn->last_query_type != QUERY_SELECT || CONN_GET_STATE(conn) != CONN_FETCHING_DATA) {
2551 …SET_CLIENT_ERROR(*conn->error_info, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE, mysqlnd_out_of_sync…
2556 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_UNBUFFERED_SETS);
2558 conn->current_result->conn = conn->m->get_reference(conn);
2559 result = conn->current_result->m.use_result(conn->current_result, FALSE);
2562 conn->current_result->m.free_result(conn->current_result, TRUE);
2564 conn->current_result = NULL;
2567 conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS);
2577 MYSQLND_METHOD(mysqlnd_conn_data, store_result)(MYSQLND_CONN_DATA * const conn, const unsigned int …
2583 DBG_INF_FMT("conn=%llu conn=%p", conn->thread_id, conn);
2585 if (PASS == conn->m->local_tx_start(conn, this_func)) {
2588 if (!conn->current_result) {
2593 if (conn->last_query_type != QUERY_SELECT || CONN_GET_STATE(conn) != CONN_FETCHING_DATA) {
2594 …SET_CLIENT_ERROR(*conn->error_info, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE, mysqlnd_out_of_sync…
2599 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_BUFFERED_SETS);
2602 if ((conn->m->get_client_api_capabilities(conn) & MYSQLND_CLIENT_KNOWS_RSET_COPY_DATA)) {
2614 SET_CLIENT_ERROR(*conn->error_info, CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, "Unknown fetch mode");
2618 result = conn->current_result->m.store_result(conn->current_result, conn, f);
2620 conn->current_result->m.free_result(conn->current_result, TRUE);
2622 conn->current_result = NULL;
2625 conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS);
2634 MYSQLND_METHOD(mysqlnd_conn_data, get_connection_stats)(const MYSQLND_CONN_DATA * const conn,
2638 mysqlnd_fill_stats_hash(conn->stats, mysqlnd_stats_values_names, return_value ZEND_FILE_LINE_CC);
2646 MYSQLND_METHOD(mysqlnd_conn_data, set_autocommit)(MYSQLND_CONN_DATA * conn, unsigned int mode)
2652 if (PASS == conn->m->local_tx_start(conn, this_func)) {
2653 …ret = conn->m->query(conn, (mode) ? "SET AUTOCOMMIT=1":"SET AUTOCOMMIT=0", sizeof("SET AUTOCOMMIT=…
2654 conn->m->local_tx_end(conn, this_func, ret);
2664 MYSQLND_METHOD(mysqlnd_conn_data, tx_commit)(MYSQLND_CONN_DATA * conn)
2666 return conn->m->tx_commit_or_rollback(conn, TRUE, TRANS_COR_NO_OPT, NULL);
2673 MYSQLND_METHOD(mysqlnd_conn_data, tx_rollback)(MYSQLND_CONN_DATA * conn)
2675 return conn->m->tx_commit_or_rollback(conn, FALSE, TRANS_COR_NO_OPT, NULL);
2682 MYSQLND_METHOD(mysqlnd_conn_data, tx_cor_options_to_string)(const MYSQLND_CONN_DATA * const conn, s…
2757 MYSQLND_METHOD(mysqlnd_conn_data, tx_commit_or_rollback)(MYSQLND_CONN_DATA * conn, const zend_bool …
2763 if (PASS == conn->m->local_tx_start(conn, this_func)) {
2766 conn->m->tx_cor_options_to_string(conn, &tmp_str, flags);
2783 SET_OOM_ERROR(*conn->error_info);
2787 ret = conn->m->query(conn, query, query_len);
2791 conn->m->local_tx_end(conn, this_func, ret);
2801 MYSQLND_METHOD(mysqlnd_conn_data, tx_begin)(MYSQLND_CONN_DATA * conn, const unsigned int mode, cons…
2807 if (PASS == conn->m->local_tx_start(conn, this_func)) {
2817 zend_ulong server_version = conn->m->get_server_version(conn);
2846 SET_OOM_ERROR(*conn->error_info);
2849 ret = conn->m->query(conn, query, query_len);
2853 conn->m->local_tx_end(conn, this_func, ret);
2863 MYSQLND_METHOD(mysqlnd_conn_data, tx_savepoint)(MYSQLND_CONN_DATA * conn, const char * const name)
2869 if (PASS == conn->m->local_tx_start(conn, this_func)) {
2874 …SET_CLIENT_ERROR(*conn->error_info, CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, "Savepoint name not provid…
2879 SET_OOM_ERROR(*conn->error_info);
2882 ret = conn->m->query(conn, query, query_len);
2885 conn->m->local_tx_end(conn, this_func, ret);
2895 MYSQLND_METHOD(mysqlnd_conn_data, tx_savepoint_release)(MYSQLND_CONN_DATA * conn, const char * cons…
2901 if (PASS == conn->m->local_tx_start(conn, this_func)) {
2906 …SET_CLIENT_ERROR(*conn->error_info, CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, "Savepoint name not provid…
2911 SET_OOM_ERROR(*conn->error_info);
2914 ret = conn->m->query(conn, query, query_len);
2917 conn->m->local_tx_end(conn, this_func, ret);
2927 MYSQLND_METHOD(mysqlnd_conn_data, negotiate_client_api_capabilities)(MYSQLND_CONN_DATA * const conn
2931 if (conn) {
2932 ret = conn->client_api_capabilities;
2933 conn->client_api_capabilities = flags;
2943 MYSQLND_METHOD(mysqlnd_conn_data, get_client_api_capabilities)(const MYSQLND_CONN_DATA * const conn)
2946 DBG_RETURN(conn? conn->client_api_capabilities : 0);
2953 MYSQLND_METHOD(mysqlnd_conn_data, local_tx_start)(MYSQLND_CONN_DATA * conn, size_t this_func)
2964 MYSQLND_METHOD(mysqlnd_conn_data, local_tx_end)(MYSQLND_CONN_DATA * conn, size_t this_func, enum_fu…
2974 MYSQLND_METHOD(mysqlnd_conn_data, init)(MYSQLND_CONN_DATA * conn)
2977 mysqlnd_stats_init(&conn->stats, STAT_LAST, conn->persistent);
2978 SET_ERROR_AFF_ROWS(conn);
2980 conn->net = mysqlnd_net_init(conn->persistent, conn->stats, conn->error_info);
2981 conn->protocol = mysqlnd_protocol_init(conn->persistent);
2983 DBG_RETURN(conn->stats && conn->net && conn->protocol? PASS:FAIL);
2988 MYSQLND_STMT * _mysqlnd_stmt_init(MYSQLND_CONN_DATA * const conn);
3088 MYSQLND_METHOD(mysqlnd_conn, clone_object)(MYSQLND * const conn)
3092 ret = MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory).clone_connection_object(conn);
3100 MYSQLND_METHOD_PRIVATE(mysqlnd_conn, dtor)(MYSQLND * conn)
3103 DBG_INF_FMT("conn=%llu", conn->data->thread_id);
3105 conn->data->m->free_reference(conn->data);
3107 mnd_pefree(conn, conn->persistent);
3119 MYSQLND_CONN_DATA * conn = conn_handle->data; local
3123 DBG_INF_FMT("conn=%llu", conn->thread_id);
3125 if (PASS == conn->m->local_tx_start(conn, this_func)) {
3126 if (CONN_GET_STATE(conn) >= CONN_READY) {
3132 MYSQLND_INC_CONN_STATISTIC(conn->stats, close_type_to_stat_map[close_type]);
3139 ret = conn->m->send_close(conn);
3142 conn->m->local_tx_end(conn, this_func, ret);