Lines Matching refs:conn

70 MYSQLND_METHOD(mysqlnd_conn_data, free_options)(MYSQLND_CONN_DATA * conn TSRMLS_DC)  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 TSRMLS_DC) in MYSQLND_METHOD()
112 zend_bool pers = conn->persistent; in MYSQLND_METHOD()
116 mysqlnd_local_infile_default(conn); in MYSQLND_METHOD()
117 if (conn->current_result) { in MYSQLND_METHOD()
118 conn->current_result->m.free_result(conn->current_result, TRUE TSRMLS_CC); in MYSQLND_METHOD()
119 conn->current_result = NULL; in MYSQLND_METHOD()
122 if (conn->net) { in MYSQLND_METHOD()
123 conn->net->data->m.free_contents(conn->net TSRMLS_CC); in MYSQLND_METHOD()
128 if (conn->host) { in MYSQLND_METHOD()
129 mnd_pefree(conn->host, pers); in MYSQLND_METHOD()
130 conn->host = NULL; in MYSQLND_METHOD()
132 if (conn->user) { in MYSQLND_METHOD()
133 mnd_pefree(conn->user, pers); in MYSQLND_METHOD()
134 conn->user = NULL; in MYSQLND_METHOD()
136 if (conn->passwd) { in MYSQLND_METHOD()
137 mnd_pefree(conn->passwd, pers); in MYSQLND_METHOD()
138 conn->passwd = NULL; in MYSQLND_METHOD()
140 if (conn->connect_or_select_db) { in MYSQLND_METHOD()
141 mnd_pefree(conn->connect_or_select_db, pers); in MYSQLND_METHOD()
142 conn->connect_or_select_db = NULL; in MYSQLND_METHOD()
144 if (conn->unix_socket) { in MYSQLND_METHOD()
145 mnd_pefree(conn->unix_socket, pers); in MYSQLND_METHOD()
146 conn->unix_socket = NULL; in MYSQLND_METHOD()
148 DBG_INF_FMT("scheme=%s", conn->scheme); in MYSQLND_METHOD()
149 if (conn->scheme) { in MYSQLND_METHOD()
150 mnd_pefree(conn->scheme, pers); in MYSQLND_METHOD()
151 conn->scheme = NULL; in MYSQLND_METHOD()
153 if (conn->server_version) { in MYSQLND_METHOD()
154 mnd_pefree(conn->server_version, pers); in MYSQLND_METHOD()
155 conn->server_version = NULL; in MYSQLND_METHOD()
157 if (conn->host_info) { in MYSQLND_METHOD()
158 mnd_pefree(conn->host_info, pers); in MYSQLND_METHOD()
159 conn->host_info = NULL; in MYSQLND_METHOD()
161 if (conn->auth_plugin_data) { in MYSQLND_METHOD()
162 mnd_pefree(conn->auth_plugin_data, pers); in MYSQLND_METHOD()
163 conn->auth_plugin_data = NULL; in MYSQLND_METHOD()
165 if (conn->last_message) { in MYSQLND_METHOD()
166 mnd_pefree(conn->last_message, pers); in MYSQLND_METHOD()
167 conn->last_message = NULL; in MYSQLND_METHOD()
169 if (conn->error_info->error_list) { in MYSQLND_METHOD()
170 zend_llist_clean(conn->error_info->error_list); in MYSQLND_METHOD()
171 mnd_pefree(conn->error_info->error_list, pers); in MYSQLND_METHOD()
172 conn->error_info->error_list = NULL; in MYSQLND_METHOD()
174 conn->charset = NULL; in MYSQLND_METHOD()
175 conn->greet_charset = NULL; in MYSQLND_METHOD()
184 MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, dtor)(MYSQLND_CONN_DATA * conn TSRMLS_DC) in MYSQLND_METHOD_PRIVATE()
187 DBG_INF_FMT("conn=%llu", conn->thread_id); in MYSQLND_METHOD_PRIVATE()
189 conn->m->free_contents(conn TSRMLS_CC); in MYSQLND_METHOD_PRIVATE()
190 conn->m->free_options(conn TSRMLS_CC); in MYSQLND_METHOD_PRIVATE()
192 if (conn->net) { in MYSQLND_METHOD_PRIVATE()
193 mysqlnd_net_free(conn->net, conn->stats, conn->error_info TSRMLS_CC); in MYSQLND_METHOD_PRIVATE()
194 conn->net = NULL; in MYSQLND_METHOD_PRIVATE()
197 if (conn->protocol) { in MYSQLND_METHOD_PRIVATE()
198 mysqlnd_protocol_free(conn->protocol TSRMLS_CC); in MYSQLND_METHOD_PRIVATE()
199 conn->protocol = NULL; in MYSQLND_METHOD_PRIVATE()
202 if (conn->stats) { in MYSQLND_METHOD_PRIVATE()
203 mysqlnd_stats_end(conn->stats); in MYSQLND_METHOD_PRIVATE()
206 mnd_pefree(conn, conn->persistent); in MYSQLND_METHOD_PRIVATE()
215 MYSQLND_METHOD(mysqlnd_conn_data, simple_command_handle_response)(MYSQLND_CONN_DATA * conn, enum my… in MYSQLND_METHOD()
226 …MYSQLND_PACKET_OK * ok_response = conn->protocol->m.get_ok_packet(conn->protocol, FALSE TSRMLS_CC); in MYSQLND_METHOD()
228 SET_OOM_ERROR(*conn->error_info); in MYSQLND_METHOD()
231 if (FAIL == (ret = PACKET_READ(ok_response, conn))) { in MYSQLND_METHOD()
241 …SET_CLIENT_ERROR(*conn->error_info, ok_response->error_no, ok_response->sqlstate, ok_response->err… in MYSQLND_METHOD()
252 conn->upsert_status->server_status &= ~SERVER_MORE_RESULTS_EXISTS; in MYSQLND_METHOD()
253 SET_ERROR_AFF_ROWS(conn); in MYSQLND_METHOD()
255 SET_NEW_MESSAGE(conn->last_message, conn->last_message_len, in MYSQLND_METHOD()
257 conn->persistent); in MYSQLND_METHOD()
260 memset(conn->upsert_status, 0, sizeof(*conn->upsert_status)); in MYSQLND_METHOD()
261 conn->upsert_status->warning_count = ok_response->warning_count; in MYSQLND_METHOD()
262 conn->upsert_status->server_status = ok_response->server_status; in MYSQLND_METHOD()
263 conn->upsert_status->affected_rows = ok_response->affected_rows; in MYSQLND_METHOD()
264 conn->upsert_status->last_insert_id = ok_response->last_insert_id; in MYSQLND_METHOD()
272 …MYSQLND_PACKET_EOF * ok_response = conn->protocol->m.get_eof_packet(conn->protocol, FALSE TSRMLS_C… in MYSQLND_METHOD()
274 SET_OOM_ERROR(*conn->error_info); in MYSQLND_METHOD()
277 if (FAIL == (ret = PACKET_READ(ok_response, conn))) { in MYSQLND_METHOD()
278 SET_CLIENT_ERROR(*conn->error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, in MYSQLND_METHOD()
287 …SET_CLIENT_ERROR(*conn->error_info, ok_response->error_no, ok_response->sqlstate, ok_response->err… in MYSQLND_METHOD()
288 SET_ERROR_AFF_ROWS(conn); in MYSQLND_METHOD()
290 SET_CLIENT_ERROR(*conn->error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet"); in MYSQLND_METHOD()
303 SET_CLIENT_ERROR(*conn->error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet"); in MYSQLND_METHOD()
315 MYSQLND_METHOD(mysqlnd_conn_data, simple_command_send_request)(MYSQLND_CONN_DATA * conn, enum php_m… in MYSQLND_METHOD()
323 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 TSRMLS_CC); 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 TSRMLS_CC); 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 TSRMLS_CC)) { 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 TSRMLS_CC); in MYSQLND_METHOD()
413 MYSQLND_METHOD(mysqlnd_conn_data, restart_psession)(MYSQLND_CONN_DATA * conn TSRMLS_DC) 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 TSRMLS_DC) in MYSQLND_METHOD()
440 MYSQLND_CONN_DATA * conn, in mysqlnd_switch_to_ssl_if_needed() argument
452 auth_packet = conn->protocol->m.get_auth_packet(conn->protocol, FALSE TSRMLS_CC); in mysqlnd_switch_to_ssl_if_needed()
454 SET_OOM_ERROR(*conn->error_info); in mysqlnd_switch_to_ssl_if_needed()
474 if (!PACKET_WRITE(auth_packet, conn)) { in mysqlnd_switch_to_ssl_if_needed()
478conn->net->data->m.set_client_option(conn->net, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, (const char *) &… in mysqlnd_switch_to_ssl_if_needed()
480 if (FAIL == conn->net->data->m.enable_ssl(conn->net TSRMLS_CC)) { in mysqlnd_switch_to_ssl_if_needed()
487 if (!PACKET_WRITE(auth_packet, conn)) { in mysqlnd_switch_to_ssl_if_needed()
497 CONN_SET_STATE(conn, CONN_QUIT_SENT); in mysqlnd_switch_to_ssl_if_needed()
498 conn->m->send_close(conn TSRMLS_CC); in mysqlnd_switch_to_ssl_if_needed()
499 SET_CLIENT_ERROR(*conn->error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone); in mysqlnd_switch_to_ssl_if_needed()
527 MYSQLND_CONN_DATA * conn, in mysqlnd_run_authentication() argument
568 …struct st_mysqlnd_authentication_plugin * auth_plugin = conn->m->fetch_auth_plugin_by_name(request… in mysqlnd_run_authentication()
572 …SET_CLIENT_ERROR(*conn->error_info, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE, "The server requested au… in mysqlnd_run_authentication()
586 if (conn->auth_plugin_data) { in mysqlnd_run_authentication()
587 mnd_pefree(conn->auth_plugin_data, conn->persistent); in mysqlnd_run_authentication()
588 conn->auth_plugin_data = NULL; in mysqlnd_run_authentication()
590 conn->auth_plugin_data_len = plugin_data_len; in mysqlnd_run_authentication()
591 conn->auth_plugin_data = mnd_pemalloc(conn->auth_plugin_data_len, conn->persistent); in mysqlnd_run_authentication()
592 if (!conn->auth_plugin_data) { in mysqlnd_run_authentication()
593 SET_OOM_ERROR(*conn->error_info); in mysqlnd_run_authentication()
596 memcpy(conn->auth_plugin_data, plugin_data, plugin_data_len); in mysqlnd_run_authentication()
601 auth_plugin->methods.get_auth_data(NULL, &scrambled_data_len, conn, user, passwd, passwd_len, in mysqlnd_run_authentication()
602 … plugin_data, plugin_data_len, options, &conn->net->data->options, mysql_flags TSRMLS_CC); in mysqlnd_run_authentication()
603 if (conn->error_info->error_no) { in mysqlnd_run_authentication()
607 ret = mysqlnd_auth_handshake(conn, user, passwd, passwd_len, db, db_len, options, mysql_flags, in mysqlnd_run_authentication()
616 ret = mysqlnd_auth_change_user(conn, user, strlen(user), passwd, passwd_len, db, db_len, silent, in mysqlnd_run_authentication()
639 DBG_INF_FMT("conn->error_info->error_no = %d", conn->error_info->error_no); in mysqlnd_run_authentication()
640 } while (ret == FAIL && conn->error_info->error_no == 0 && switch_to_auth_protocol != NULL); in mysqlnd_run_authentication()
644 conn->m->set_client_option(conn, MYSQLND_OPT_AUTH_PROTOCOL, requested_protocol TSRMLS_CC); in mysqlnd_run_authentication()
662 MYSQLND_CONN_DATA * conn, in mysqlnd_connect_run_authentication() argument
676 ret = mysqlnd_switch_to_ssl_if_needed(conn, greet_packet, options, mysql_flags TSRMLS_CC); in mysqlnd_connect_run_authentication()
678 ret = mysqlnd_run_authentication(conn, user, passwd, passwd_len, db, db_len, in mysqlnd_connect_run_authentication()
689 MYSQLND_METHOD(mysqlnd_conn_data, execute_init_commands)(MYSQLND_CONN_DATA * conn TSRMLS_DC) in MYSQLND_METHOD()
694 if (conn->options->init_commands) { in MYSQLND_METHOD()
696 for (; current_command < conn->options->num_commands; ++current_command) { in MYSQLND_METHOD()
697 const char * const command = conn->options->init_commands[current_command]; in MYSQLND_METHOD()
699 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_INIT_COMMAND_EXECUTED_COUNT); in MYSQLND_METHOD()
700 if (PASS != conn->m->query(conn, command, strlen(command) TSRMLS_CC)) { in MYSQLND_METHOD()
701 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_INIT_COMMAND_FAILED_COUNT); in MYSQLND_METHOD()
705 if (conn->last_query_type == QUERY_SELECT) { in MYSQLND_METHOD()
706 MYSQLND_RES * result = conn->m->use_result(conn TSRMLS_CC); in MYSQLND_METHOD()
721 MYSQLND_METHOD(mysqlnd_conn_data, get_updated_connect_flags)(MYSQLND_CONN_DATA * conn, unsigned int… in MYSQLND_METHOD()
723 MYSQLND_NET * net = conn->net; in MYSQLND_METHOD()
729 mysql_flags |= conn->options->flags; /* use the flags from set_client_option() */ in MYSQLND_METHOD()
763 MYSQLND_METHOD(mysqlnd_conn_data, connect_handshake)(MYSQLND_CONN_DATA * conn, in MYSQLND_METHOD()
770 MYSQLND_NET * net = conn->net; in MYSQLND_METHOD()
774 greet_packet = conn->protocol->m.get_greet_packet(conn->protocol, FALSE TSRMLS_CC); in MYSQLND_METHOD()
776 SET_OOM_ERROR(*conn->error_info); in MYSQLND_METHOD()
780 if (FAIL == net->data->m.connect_ex(conn->net, conn->scheme, conn->scheme_len, conn->persistent, in MYSQLND_METHOD()
781 conn->stats, conn->error_info TSRMLS_CC)) in MYSQLND_METHOD()
788 if (FAIL == PACKET_READ(greet_packet, conn)) { in MYSQLND_METHOD()
794 …SET_CLIENT_ERROR(*conn->error_info, greet_packet->error_no, greet_packet->sqlstate, greet_packet->… in MYSQLND_METHOD()
800 SET_CLIENT_ERROR(*conn->error_info, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE, in MYSQLND_METHOD()
805 conn->thread_id = greet_packet->thread_id; in MYSQLND_METHOD()
806 conn->protocol_version = greet_packet->protocol_version; in MYSQLND_METHOD()
807 conn->server_version = mnd_pestrdup(greet_packet->server_version, conn->persistent); in MYSQLND_METHOD()
809 conn->greet_charset = mysqlnd_find_charset_nr(greet_packet->charset_no); in MYSQLND_METHOD()
810 if (!conn->greet_charset) { in MYSQLND_METHOD()
813 SET_CLIENT_ERROR(*conn->error_info, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE, in MYSQLND_METHOD()
818 conn->client_flag = mysql_flags; in MYSQLND_METHOD()
819 conn->server_capabilities = greet_packet->server_capabilities; in MYSQLND_METHOD()
821 if (FAIL == mysqlnd_connect_run_authentication(conn, user, passwd, db, db_len, (size_t) passwd_len, in MYSQLND_METHOD()
822 greet_packet, conn->options, mysql_flags TSRMLS_CC)) in MYSQLND_METHOD()
826 memset(conn->upsert_status, 0, sizeof(*conn->upsert_status)); in MYSQLND_METHOD()
827 conn->upsert_status->warning_count = 0; in MYSQLND_METHOD()
828 conn->upsert_status->server_status = greet_packet->server_status; in MYSQLND_METHOD()
829 conn->upsert_status->affected_rows = 0; in MYSQLND_METHOD()
834 conn->client_flag = 0; in MYSQLND_METHOD()
835 conn->server_capabilities = 0; in MYSQLND_METHOD()
844 MYSQLND_METHOD(mysqlnd_conn_data, connect)(MYSQLND_CONN_DATA * conn,
860 MYSQLND_NET * net = conn->net;
863 DBG_INF_FMT("conn=%p", conn);
865 if (PASS != conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
870 SET_EMPTY_ERROR(*conn->error_info);
871 SET_ERROR_AFF_ROWS(conn);
875 conn? conn->persistent:0, conn? CONN_GET_STATE(conn):-1);
877 if (CONN_GET_STATE(conn) > CONN_ALLOCED && CONN_GET_STATE(conn) ) {
880 if (CONN_GET_STATE(conn) < CONN_QUIT_SENT) {
881 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_CLOSE_IMPLICIT);
883 conn->m->send_close(conn TSRMLS_CC);
886 conn->m->free_contents(conn TSRMLS_CC);
887 MYSQLND_DEC_CONN_STATISTIC(conn->stats, STAT_OPENED_CONNECTIONS);
888 if (conn->persistent) {
889 MYSQLND_DEC_CONN_STATISTIC(conn->stats, STAT_OPENED_PERSISTENT_CONNECTIONS);
906conn->m->set_client_option(conn, MYSQLND_OPT_MAX_ALLOWED_PACKET, (char *)&max_allowed_size TSRMLS_…
957 SET_OOM_ERROR(*conn->error_info);
960 DBG_INF_FMT("transport=%s conn->scheme=%s", transport, conn->scheme);
961 conn->scheme = mnd_pestrndup(transport, transport_len, conn->persistent);
962 conn->scheme_len = transport_len;
965 if (!conn->scheme) {
970 mysql_flags = conn->m->get_updated_connect_flags(conn, mysql_flags TSRMLS_CC);
972 …if (FAIL == conn->m->connect_handshake(conn, host, user, passwd, passwd_len, db, db_len, mysql_fla…
977 CONN_SET_STATE(conn, CONN_READY);
989 conn->user = mnd_pestrdup(user, conn->persistent);
990 conn->user_len = strlen(conn->user);
991 conn->passwd = mnd_pestrndup(passwd, passwd_len, conn->persistent);
992 conn->passwd_len = passwd_len;
993 conn->port = port;
994 conn->connect_or_select_db = mnd_pestrndup(db, db_len, conn->persistent);
995 conn->connect_or_select_db_len = db_len;
997 if (!conn->user || !conn->passwd || !conn->connect_or_select_db) {
998 SET_OOM_ERROR(*conn->error_info);
1003 conn->host = mnd_pestrdup(host, conn->persistent);
1004 if (!conn->host) {
1005 SET_OOM_ERROR(*conn->error_info);
1008 conn->host_len = strlen(conn->host);
1011 mnd_sprintf(&p, 0, "%s via TCP/IP", conn->host);
1013 SET_OOM_ERROR(*conn->error_info);
1016 conn->host_info = mnd_pestrdup(p, conn->persistent);
1018 if (!conn->host_info) {
1019 SET_OOM_ERROR(*conn->error_info);
1024 conn->unix_socket = mnd_pestrdup(socket_or_pipe, conn->persistent);
1026 conn->host_info = mnd_pestrdup("Localhost via UNIX socket", conn->persistent);
1029 mnd_sprintf(&p, 0, "%s via named pipe", conn->unix_socket);
1031 SET_OOM_ERROR(*conn->error_info);
1034 conn->host_info = mnd_pestrdup(p, conn->persistent);
1036 if (!conn->host_info) {
1037 SET_OOM_ERROR(*conn->error_info);
1043 if (!conn->unix_socket || !conn->host_info) {
1044 SET_OOM_ERROR(*conn->error_info);
1047 conn->unix_socket_len = strlen(conn->unix_socket);
1049 conn->max_packet_size = MYSQLND_ASSEMBLED_PACKET_MAX_SIZE;
1052 SET_EMPTY_ERROR(*conn->error_info);
1054 mysqlnd_local_infile_default(conn);
1056 if (FAIL == conn->m->execute_init_commands(conn TSRMLS_CC)) {
1060 …MYSQLND_INC_CONN_STATISTIC_W_VALUE2(conn->stats, STAT_CONNECT_SUCCESS, 1, STAT_OPENED_CONNECTIONS,…
1064 if (conn->persistent) {
1065 …MYSQLND_INC_CONN_STATISTIC_W_VALUE2(conn->stats, STAT_PCONNECT_SUCCESS, 1, STAT_OPENED_PERSISTENT_…
1068 DBG_INF_FMT("connection_id=%llu", conn->thread_id);
1070 conn->m->local_tx_end(conn, this_func, PASS TSRMLS_CC);
1075 …R_FMT("[%u] %.128s (trying to connect via %s)", conn->error_info->error_no, conn->error_info->erro…
1076 if (!conn->error_info->error_no) {
1077 …SET_CLIENT_ERROR(*conn->error_info, CR_CONNECTION_ERROR, UNKNOWN_SQLSTATE, conn->error_info->error…
1079 conn->error_info->error_no, conn->error_info->error, conn->scheme);
1082 conn->m->free_contents(conn TSRMLS_CC);
1083 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_CONNECT_FAILURE);
1085 conn->m->local_tx_end(conn, this_func, FAIL TSRMLS_CC);
1106 MYSQLND_CONN_DATA * conn = conn_handle->data; local
1110 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1112 …ret = conn->m->connect(conn, host, user, passwd, passwd_len, db, db_len, port, socket_or_pipe, mys…
1114 conn->m->local_tx_end(conn, this_func, FAIL TSRMLS_CC);
1168 MYSQLND_METHOD(mysqlnd_conn_data, query)(MYSQLND_CONN_DATA * conn, const char * query, unsigned int…
1173 DBG_INF_FMT("conn=%p conn=%llu query=%s", conn, conn->thread_id, query);
1175 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1176 if (PASS == conn->m->send_query(conn, query, query_len TSRMLS_CC) &&
1177 PASS == conn->m->reap_query(conn TSRMLS_CC))
1180 if (conn->last_query_type == QUERY_UPSERT && conn->upsert_status->affected_rows) {
1181 …MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn->stats, STAT_ROWS_AFFECTED_NORMAL, conn->upsert_status->af…
1184 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
1193 MYSQLND_METHOD(mysqlnd_conn_data, send_query)(MYSQLND_CONN_DATA * conn, const char * query, unsigne…
1198 DBG_INF_FMT("conn=%llu query=%s", conn->thread_id, query);
1199 DBG_INF_FMT("conn->server_status=%u", conn->upsert_status->server_status);
1201 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1202 ret = conn->m->simple_command(conn, COM_QUERY, (zend_uchar *) query, query_len,
1206 CONN_SET_STATE(conn, CONN_QUERY_SENT);
1208 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
1210 DBG_INF_FMT("conn->server_status=%u", conn->upsert_status->server_status);
1218 MYSQLND_METHOD(mysqlnd_conn_data, reap_query)(MYSQLND_CONN_DATA * conn TSRMLS_DC)
1221 enum_mysqlnd_connection_state state = CONN_GET_STATE(conn);
1224 DBG_INF_FMT("conn=%llu", conn->thread_id);
1226 DBG_INF_FMT("conn->server_status=%u", conn->upsert_status->server_status);
1227 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1233 ret = conn->m->query_read_result_set_header(conn, NULL TSRMLS_CC);
1235 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
1237 DBG_INF_FMT("conn->server_status=%u", conn->upsert_status->server_status);
1442 MYSQLND_METHOD(mysqlnd_conn_data, list_fields)(MYSQLND_CONN_DATA * conn, const char *table, const c…
1450 …DBG_INF_FMT("conn=%llu table=%s wild=%s", conn->thread_id, table? table:"",achtung_wild? achtung_w…
1452 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1469 if (PASS != conn->m->simple_command(conn, COM_FIELD_LIST, buff, p - buff,
1472 conn->m->local_tx_end(conn, 0, FAIL TSRMLS_CC);
1480 result = conn->m->result_init(5000, conn->persistent TSRMLS_CC);
1485 if (FAIL == result->m.read_result_metadata(result, conn TSRMLS_CC)) {
1497 SET_OOM_ERROR(*conn->error_info);
1504 conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS TSRMLS_CC);
1514 MYSQLND_METHOD(mysqlnd_conn_data, list_method)(MYSQLND_CONN_DATA * conn, const char * query, const …
1522 DBG_INF_FMT("conn=%llu query=%s wild=%u", conn->thread_id, query, achtung_wild);
1524 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1539 if (PASS == conn->m->query(conn, show_query, show_query_len TSRMLS_CC)) {
1540 result = conn->m->store_result(conn TSRMLS_CC);
1545 conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS TSRMLS_CC);
1554 MYSQLND_METHOD(mysqlnd_conn_data, errno)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
1556 return conn->error_info->error_no;
1563 MYSQLND_METHOD(mysqlnd_conn_data, error)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
1565 return conn->error_info->error;
1572 MYSQLND_METHOD(mysqlnd_conn_data, sqlstate)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
1574 return conn->error_info->sqlstate[0] ? conn->error_info->sqlstate:MYSQLND_SQLSTATE_NULL;
1591 MYSQLND_METHOD(mysqlnd_conn_data, ssl_set)(MYSQLND_CONN_DATA * const conn, const char * key, const …
1596 MYSQLND_NET * net = conn->net;
1599 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1606 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
1615 MYSQLND_METHOD(mysqlnd_conn_data, escape_string)(MYSQLND_CONN_DATA * const conn, char * newstr, con…
1620 DBG_INF_FMT("conn=%llu", conn->thread_id);
1622 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1623 DBG_INF_FMT("server_status=%u", conn->upsert_status->server_status);
1624 if (conn->upsert_status->server_status & SERVER_STATUS_NO_BACKSLASH_ESCAPES) {
1625 ret = mysqlnd_cset_escape_quotes(conn->charset, newstr, escapestr, escapestr_len TSRMLS_CC);
1627 ret = mysqlnd_cset_escape_slashes(conn->charset, newstr, escapestr, escapestr_len TSRMLS_CC);
1629 conn->m->local_tx_end(conn, this_func, PASS TSRMLS_CC);
1638 MYSQLND_METHOD(mysqlnd_conn_data, dump_debug_info)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
1643 DBG_INF_FMT("conn=%llu", conn->thread_id);
1644 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1645 ret = conn->m->simple_command(conn, COM_DEBUG, NULL, 0, PROT_EOF_PACKET, FALSE, TRUE TSRMLS_CC);
1647 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
1657 MYSQLND_METHOD(mysqlnd_conn_data, select_db)(MYSQLND_CONN_DATA * const conn, const char * const db,…
1663 DBG_INF_FMT("conn=%llu db=%s", conn->thread_id, db);
1665 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1666 …ret = conn->m->simple_command(conn, COM_INIT_DB, (zend_uchar*) db, db_len, PROT_OK_PACKET, FALSE, …
1671 SET_ERROR_AFF_ROWS(conn);
1673 if (conn->connect_or_select_db) {
1674 mnd_pefree(conn->connect_or_select_db, conn->persistent);
1676 conn->connect_or_select_db = mnd_pestrndup(db, db_len, conn->persistent);
1677 conn->connect_or_select_db_len = db_len;
1678 if (!conn->connect_or_select_db) {
1680 SET_OOM_ERROR(*conn->error_info);
1684 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
1693 MYSQLND_METHOD(mysqlnd_conn_data, ping)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
1699 DBG_INF_FMT("conn=%llu", conn->thread_id);
1701 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1702 ret = conn->m->simple_command(conn, COM_PING, NULL, 0, PROT_OK_PACKET, TRUE, TRUE TSRMLS_CC);
1707 SET_ERROR_AFF_ROWS(conn);
1709 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
1719 MYSQLND_METHOD(mysqlnd_conn_data, statistic)(MYSQLND_CONN_DATA * conn, char **message, unsigned int…
1726 DBG_INF_FMT("conn=%llu", conn->thread_id);
1728 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1730 ret = conn->m->simple_command(conn, COM_STATISTICS, NULL, 0, PROT_LAST, FALSE, TRUE TSRMLS_CC);
1734 stats_header = conn->protocol->m.get_stats_packet(conn->protocol, FALSE TSRMLS_CC);
1736 SET_OOM_ERROR(*conn->error_info);
1740 if (PASS == (ret = PACKET_READ(stats_header, conn))) {
1749 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
1758 MYSQLND_METHOD(mysqlnd_conn_data, kill)(MYSQLND_CONN_DATA * conn, unsigned int pid TSRMLS_DC)
1765 DBG_INF_FMT("conn=%llu pid=%u", conn->thread_id, pid);
1767 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1771 if (pid != conn->thread_id) {
1772 …ret = conn->m->simple_command(conn, COM_PROCESS_KILL, buff, 4, PROT_OK_PACKET, FALSE, TRUE TSRMLS_…
1777 SET_ERROR_AFF_ROWS(conn);
1778 …} else if (PASS == (ret = conn->m->simple_command(conn, COM_PROCESS_KILL, buff, 4, PROT_LAST, FALS…
1779 CONN_SET_STATE(conn, CONN_QUIT_SENT);
1780 conn->m->send_close(conn TSRMLS_CC);
1783 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
1792 MYSQLND_METHOD(mysqlnd_conn_data, set_charset)(MYSQLND_CONN_DATA * const conn, const char * const c…
1799 DBG_INF_FMT("conn=%llu cs=%s", conn->thread_id, csname);
1802 SET_CLIENT_ERROR(*conn->error_info, CR_CANT_FIND_CHARSET, UNKNOWN_SQLSTATE,
1807 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1811 if (FAIL == (ret = conn->m->query(conn, query, query_len TSRMLS_CC))) {
1813 } else if (conn->error_info->error_no) {
1816 conn->charset = charset;
1820 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
1831 MYSQLND_METHOD(mysqlnd_conn_data, refresh)(MYSQLND_CONN_DATA * const conn, uint8_t options TSRMLS_D…
1837 DBG_INF_FMT("conn=%llu options=%lu", conn->thread_id, options);
1839 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1842 ret = conn->m->simple_command(conn, COM_REFRESH, bits, 1, PROT_OK_PACKET, FALSE, TRUE TSRMLS_CC);
1844 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
1853 MYSQLND_METHOD(mysqlnd_conn_data, shutdown)(MYSQLND_CONN_DATA * const conn, uint8_t level TSRMLS_DC)
1859 DBG_INF_FMT("conn=%llu level=%lu", conn->thread_id, level);
1861 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
1864 ret = conn->m->simple_command(conn, COM_SHUTDOWN, bits, 1, PROT_OK_PACKET, FALSE, TRUE TSRMLS_CC);
1866 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
1875 MYSQLND_METHOD(mysqlnd_conn_data, send_close)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
1878 MYSQLND_NET * net = conn->net;
1882 …DBG_INF_FMT("conn=%llu net->data->stream->abstract=%p", conn->thread_id, net_stream? net_stream->a…
1884 if (CONN_GET_STATE(conn) >= CONN_READY) {
1885 MYSQLND_DEC_CONN_STATISTIC(conn->stats, STAT_OPENED_CONNECTIONS);
1886 if (conn->persistent) {
1887 MYSQLND_DEC_CONN_STATISTIC(conn->stats, STAT_OPENED_PERSISTENT_CONNECTIONS);
1890 switch (CONN_GET_STATE(conn)) {
1894 ret = conn->m->simple_command(conn, COM_QUIT, NULL, 0, PROT_LAST, TRUE, TRUE TSRMLS_CC);
1895 net->data->m.close_stream(net, conn->stats, conn->error_info TSRMLS_CC);
1897 CONN_SET_STATE(conn, CONN_QUIT_SENT);
1908 DBG_ERR_FMT("Brutally closing connection [%p][%s]", conn, conn->scheme);
1921 CONN_SET_STATE(conn, CONN_QUIT_SENT);
1925 net->data->m.close_stream(net, conn->stats, conn->error_info TSRMLS_CC);
1936 MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, get_reference)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
1939 ++conn->refcount;
1940 DBG_INF_FMT("conn=%llu new_refcount=%u", conn->thread_id, conn->refcount);
1941 DBG_RETURN(conn);
1948 MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, free_reference)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
1952 DBG_INF_FMT("conn=%llu old_refcount=%u", conn->thread_id, conn->refcount);
1953 if (!(--conn->refcount)) {
1959 ret = conn->m->send_close(conn TSRMLS_CC);
1960 conn->m->dtor(conn TSRMLS_CC);
1969 MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, get_state)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
1972 DBG_RETURN(conn->state);
1979 MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, set_state)(MYSQLND_CONN_DATA * const conn, enum mysqlnd_c…
1983 conn->state = new_state;
1991 MYSQLND_METHOD(mysqlnd_conn_data, field_count)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
1993 return conn->field_count;
2000 MYSQLND_METHOD(mysqlnd_conn_data, server_status)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
2002 return conn->upsert_status->server_status;
2009 MYSQLND_METHOD(mysqlnd_conn_data, insert_id)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
2011 return conn->upsert_status->last_insert_id;
2018 MYSQLND_METHOD(mysqlnd_conn_data, affected_rows)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
2020 return conn->upsert_status->affected_rows;
2027 MYSQLND_METHOD(mysqlnd_conn_data, warning_count)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
2029 return conn->upsert_status->warning_count;
2036 MYSQLND_METHOD(mysqlnd_conn_data, info)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
2038 return conn->last_message;
2060 MYSQLND_METHOD(mysqlnd_conn_data, get_server_info)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
2062 return conn->server_version;
2069 MYSQLND_METHOD(mysqlnd_conn_data, get_host_info)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
2071 return conn->host_info;
2078 MYSQLND_METHOD(mysqlnd_conn_data, get_proto_info)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
2080 return conn->protocol_version;
2087 MYSQLND_METHOD(mysqlnd_conn_data, charset_name)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
2089 return conn->charset->name;
2096 MYSQLND_METHOD(mysqlnd_conn_data, thread_id)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
2098 return conn->thread_id;
2105 MYSQLND_METHOD(mysqlnd_conn_data, get_server_version)(const MYSQLND_CONN_DATA * const conn TSRMLS_D…
2110 if (!(p = conn->server_version)) {
2127 MYSQLND_METHOD(mysqlnd_conn_data, more_results)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC)
2131 DBG_RETURN(conn->upsert_status->server_status & SERVER_MORE_RESULTS_EXISTS? TRUE:FALSE);
2138 MYSQLND_METHOD(mysqlnd_conn_data, next_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
2144 DBG_INF_FMT("conn=%llu", conn->thread_id);
2146 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
2148 if (CONN_GET_STATE(conn) != CONN_NEXT_RESULT_PENDING) {
2152 SET_EMPTY_ERROR(*conn->error_info);
2153 SET_ERROR_AFF_ROWS(conn);
2158 if (FAIL == (ret = conn->m->query_read_result_set_header(conn, NULL TSRMLS_CC))) {
2163 if (!conn->error_info->error_no) {
2166 CONN_SET_STATE(conn, CONN_QUIT_SENT);
2167 conn->m->send_close(conn TSRMLS_CC);
2169 …DBG_INF_FMT("Error from the server : (%u) %s", conn->error_info->error_no, conn->error_info->error…
2173 if (conn->last_query_type == QUERY_UPSERT && conn->upsert_status->affected_rows) {
2174 …MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn->stats, STAT_ROWS_AFFECTED_NORMAL, conn->upsert_status->af…
2177 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
2238 MYSQLND_METHOD(mysqlnd_conn_data, change_user)(MYSQLND_CONN_DATA * const conn,
2251 conn->thread_id, user?user:"", passwd?"***":"null", db?db:"", (silent == TRUE)?1:0 );
2253 if (PASS != conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
2257 SET_EMPTY_ERROR(*conn->error_info);
2258 SET_ERROR_AFF_ROWS(conn);
2271 ret = mysqlnd_run_authentication(conn, user, passwd, strlen(passwd), db, strlen(db),
2272 conn->auth_plugin_data, conn->auth_plugin_data_len, conn->options->auth_protocol,
2273 …0 /*charset not used*/, conn->options, conn->server_capabilities, silent, TRUE/*is_change*/ TSRMLS…
2279 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
2289 MYSQLND_METHOD(mysqlnd_conn_data, set_client_option)(MYSQLND_CONN_DATA * const conn,
2297 DBG_INF_FMT("conn=%llu option=%u", conn->thread_id, option);
2299 if (PASS != conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
2318 ret = conn->net->data->m.set_client_option(conn->net, option, value TSRMLS_CC);
2322 conn->options->int_and_float_native = *(unsigned int*) value;
2327 conn->options->flags |= CLIENT_LOCAL_FILES;
2329 conn->options->flags &= ~CLIENT_LOCAL_FILES;
2338 …ew_init_commands = mnd_perealloc(conn->options->init_commands, sizeof(char *) * (conn->options->nu…
2342 conn->options->init_commands = new_init_commands;
2343 new_command = mnd_pestrdup(value, conn->persistent);
2347 conn->options->init_commands[conn->options->num_commands] = new_command;
2348 ++conn->options->num_commands;
2363 …SET_CLIENT_ERROR(*conn->error_info, CR_CANT_FIND_CHARSET, UNKNOWN_SQLSTATE, "Unknown character set…
2368 new_charset_name = mnd_pestrdup(value, conn->persistent);
2372 if (conn->options->charset_name) {
2373 mnd_pefree(conn->options->charset_name, conn->persistent);
2375 conn->options->charset_name = new_charset_name;
2376 DBG_INF_FMT("charset=%s", conn->options->charset_name);
2380 conn->options->protocol = MYSQL_PROTOCOL_PIPE;
2384 conn->options->protocol = *(unsigned int*) value;
2401 conn->options->max_allowed_packet = *(unsigned int*) value;
2406 char * new_auth_protocol = value? mnd_pestrdup(value, conn->persistent) : NULL;
2410 if (conn->options->auth_protocol) {
2411 mnd_pefree(conn->options->auth_protocol, conn->persistent);
2413 conn->options->auth_protocol = new_auth_protocol;
2414 DBG_INF_FMT("auth_protocol=%s", conn->options->auth_protocol);
2419 conn->options->flags |= CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS;
2421 conn->options->flags &= ~CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS;
2425 if (conn->options->connect_attr) {
2426 … DBG_INF_FMT("Before reset %d attribute(s)", zend_hash_num_elements(conn->options->connect_attr));
2427 zend_hash_clean(conn->options->connect_attr);
2431 if (conn->options->connect_attr && value) {
2432 … DBG_INF_FMT("Before delete %d attribute(s)", zend_hash_num_elements(conn->options->connect_attr));
2433 zend_hash_del(conn->options->connect_attr, value, strlen(value));
2434 DBG_INF_FMT("%d left", zend_hash_num_elements(conn->options->connect_attr));
2446 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
2449 SET_OOM_ERROR(*conn->error_info);
2450 conn->m->local_tx_end(conn, this_func, FAIL TSRMLS_CC);
2487 MYSQLND_METHOD(mysqlnd_conn_data, set_client_option_2d)(MYSQLND_CONN_DATA * const conn,
2496 DBG_INF_FMT("conn=%llu option=%u", conn->thread_id, option);
2498 if (PASS != conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
2503 if (!conn->options->connect_attr) {
2505 conn->options->connect_attr = mnd_pemalloc(sizeof(HashTable), conn->persistent);
2506 if (!conn->options->connect_attr) {
2509 …zend_hash_init(conn->options->connect_attr, 0, NULL, conn->persistent? connect_attr_item_pdtor:con…
2513 const char * copyv = mnd_pestrdup(value, conn->persistent);
2517 zend_hash_update(conn->options->connect_attr, key, strlen(key), &copyv, sizeof(char *), NULL);
2523 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
2526 SET_OOM_ERROR(*conn->error_info);
2527 conn->m->local_tx_end(conn, this_func, FAIL TSRMLS_CC);
2536 MYSQLND_METHOD(mysqlnd_conn_data, use_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
2542 DBG_INF_FMT("conn=%llu", conn->thread_id);
2544 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
2546 if (!conn->current_result) {
2551 if (conn->last_query_type != QUERY_SELECT || CONN_GET_STATE(conn) != CONN_FETCHING_DATA) {
2552 …SET_CLIENT_ERROR(*conn->error_info, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE, mysqlnd_out_of_sync…
2557 MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_UNBUFFERED_SETS);
2559 conn->current_result->conn = conn->m->get_reference(conn TSRMLS_CC);
2560 result = conn->current_result->m.use_result(conn->current_result, FALSE TSRMLS_CC);
2563 conn->current_result->m.free_result(conn->current_result, TRUE TSRMLS_CC);
2565 conn->current_result = NULL;
2568 conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS TSRMLS_CC);
2578 MYSQLND_METHOD(mysqlnd_conn_data, store_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
2584 DBG_INF_FMT("conn=%llu conn=%p", conn->thread_id, conn);
2586 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
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);
2601 result = conn->current_result->m.store_result(conn->current_result, conn, FALSE TSRMLS_CC);
2603 conn->current_result->m.free_result(conn->current_result, TRUE TSRMLS_CC);
2605 conn->current_result = NULL;
2608 conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS TSRMLS_CC);
2617 MYSQLND_METHOD(mysqlnd_conn_data, get_connection_stats)(const MYSQLND_CONN_DATA * const conn,
2621 …mysqlnd_fill_stats_hash(conn->stats, mysqlnd_stats_values_names, return_value TSRMLS_CC ZEND_FILE_…
2629 MYSQLND_METHOD(mysqlnd_conn_data, set_autocommit)(MYSQLND_CONN_DATA * conn, unsigned int mode TSRML…
2635 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
2636 …ret = conn->m->query(conn, (mode) ? "SET AUTOCOMMIT=1":"SET AUTOCOMMIT=0", sizeof("SET AUTOCOMMIT=…
2637 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
2647 MYSQLND_METHOD(mysqlnd_conn_data, tx_commit)(MYSQLND_CONN_DATA * conn TSRMLS_DC)
2649 return conn->m->tx_commit_or_rollback(conn, TRUE, TRANS_COR_NO_OPT, NULL TSRMLS_CC);
2656 MYSQLND_METHOD(mysqlnd_conn_data, tx_rollback)(MYSQLND_CONN_DATA * conn TSRMLS_DC)
2658 return conn->m->tx_commit_or_rollback(conn, FALSE, TRANS_COR_NO_OPT, NULL TSRMLS_CC);
2665 MYSQLND_METHOD(mysqlnd_conn_data, tx_cor_options_to_string)(const MYSQLND_CONN_DATA * const conn, s…
2740 MYSQLND_METHOD(mysqlnd_conn_data, tx_commit_or_rollback)(MYSQLND_CONN_DATA * conn, const zend_bool …
2746 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
2749 conn->m->tx_cor_options_to_string(conn, &tmp_str, flags TSRMLS_CC);
2766 SET_OOM_ERROR(*conn->error_info);
2770 ret = conn->m->query(conn, query, query_len TSRMLS_CC);
2774 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
2784 MYSQLND_METHOD(mysqlnd_conn_data, tx_begin)(MYSQLND_CONN_DATA * conn, const unsigned int mode, cons…
2790 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
2800 unsigned long server_version = conn->m->get_server_version(conn TSRMLS_CC);
2829 SET_OOM_ERROR(*conn->error_info);
2832 ret = conn->m->query(conn, query, query_len TSRMLS_CC);
2836 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
2846 MYSQLND_METHOD(mysqlnd_conn_data, tx_savepoint)(MYSQLND_CONN_DATA * conn, const char * const name T…
2852 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
2857 …SET_CLIENT_ERROR(*conn->error_info, CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, "Savepoint name not provid…
2862 SET_OOM_ERROR(*conn->error_info);
2865 ret = conn->m->query(conn, query, query_len TSRMLS_CC);
2868 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
2878 MYSQLND_METHOD(mysqlnd_conn_data, tx_savepoint_release)(MYSQLND_CONN_DATA * conn, const char * cons…
2884 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
2889 …SET_CLIENT_ERROR(*conn->error_info, CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, "Savepoint name not provid…
2894 SET_OOM_ERROR(*conn->error_info);
2897 ret = conn->m->query(conn, query, query_len TSRMLS_CC);
2900 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
2910 MYSQLND_METHOD(mysqlnd_conn_data, local_tx_start)(MYSQLND_CONN_DATA * conn, size_t this_func TSRMLS…
2921 MYSQLND_METHOD(mysqlnd_conn_data, local_tx_end)(MYSQLND_CONN_DATA * conn, size_t this_func, enum_fu…
2931 MYSQLND_METHOD(mysqlnd_conn_data, init)(MYSQLND_CONN_DATA * conn TSRMLS_DC)
2934 mysqlnd_stats_init(&conn->stats, STAT_LAST);
2935 SET_ERROR_AFF_ROWS(conn);
2937 conn->net = mysqlnd_net_init(conn->persistent, conn->stats, conn->error_info TSRMLS_CC);
2938 conn->protocol = mysqlnd_protocol_init(conn->persistent TSRMLS_CC);
2940 DBG_RETURN(conn->stats && conn->net && conn->protocol? PASS:FAIL);
2945 MYSQLND_STMT * _mysqlnd_stmt_init(MYSQLND_CONN_DATA * const conn TSRMLS_DC);
3042 MYSQLND_METHOD(mysqlnd_conn, clone_object)(MYSQLND * const conn TSRMLS_DC)
3046 …ret = MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory).clone_connection_object(conn TSRMLS_…
3054 MYSQLND_METHOD_PRIVATE(mysqlnd_conn, dtor)(MYSQLND * conn TSRMLS_DC)
3057 DBG_INF_FMT("conn=%llu", conn->data->thread_id);
3059 conn->data->m->free_reference(conn->data TSRMLS_CC);
3061 mnd_pefree(conn, conn->persistent);
3073 MYSQLND_CONN_DATA * conn = conn_handle->data; local
3077 DBG_INF_FMT("conn=%llu", conn->thread_id);
3079 if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
3080 if (CONN_GET_STATE(conn) >= CONN_READY) {
3086 MYSQLND_INC_CONN_STATISTIC(conn->stats, close_type_to_stat_map[close_type]);
3093 ret = conn->m->send_close(conn TSRMLS_CC);
3096 conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);