37 DBG_ENTER(
"mysqlnd_command::set_option");
49 conn->error_info, conn->upsert_status, &conn->last_message);
64 DBG_ENTER(
"mysqlnd_command::debug");
75 conn->error_info, conn->upsert_status, &conn->last_message);
91 DBG_ENTER(
"mysqlnd_command::init_db");
102 conn->error_info, conn->upsert_status, &conn->last_message);
111 mysqlnd_set_persistent_string(&conn->connect_or_select_db, db.s, db.l, conn->persistent);
127 DBG_ENTER(
"mysqlnd_command::ping");
138 conn->error_info, conn->upsert_status, &conn->last_message);
158 DBG_ENTER(
"mysqlnd_command::statistics");
171 conn->payload_decoder_factory->m.init_stats_packet(&stats_header);
174 *message = zend_string_init(stats_header.
message.
s, stats_header.
message.
l, 0);
194 DBG_ENTER(
"mysqlnd_command::process_kill");
204 if (
PASS ==
ret && read_response) {
206 conn->error_info, conn->upsert_status, &conn->last_message);
217 conn->m->send_close(conn);
234 DBG_ENTER(
"mysqlnd_command::refresh");
246 conn->error_info, conn->upsert_status, &conn->last_message);
261 DBG_ENTER(
"mysqlnd_command::quit");
283 DBG_ENTER(
"mysqlnd_command::query");
309 DBG_ENTER(
"mysqlnd_command::change_user");
331 DBG_ENTER(
"mysqlnd_command::reap_result");
334 DBG_ERR_FMT(
"Connection not opened, clear or has been closed. State=%u",
state);
337 ret = conn->m->query_read_result_set_header(conn,
NULL);
351 DBG_ENTER(
"mysqlnd_command::stmt_prepare");
373 DBG_ENTER(
"mysqlnd_command::stmt_execute");
376 (
const unsigned char *) payload.s, payload.l,
FALSE,
396 DBG_ENTER(
"mysqlnd_command::stmt_fetch");
420 DBG_ENTER(
"mysqlnd_command::stmt_reset");
432 conn->error_info, conn->upsert_status, &conn->last_message);
447 DBG_ENTER(
"mysqlnd_command::stmt_send_long_data");
470 DBG_ENTER(
"mysqlnd_command::stmt_close");
488MYSQLND_METHOD(mysqlnd_command, enable_ssl)(
MYSQLND_CONN_DATA *
const conn,
const size_t client_capabilities,
const size_t server_capabilities,
const unsigned int charset_no)
493 DBG_ENTER(
"mysqlnd_command::enable_ssl");
495 DBG_INF_FMT(
"client_capability_flags=%zu", client_capabilities);
497 DBG_INF_FMT(
"CLIENT_FOUND_ROWS= %d", client_capabilities &
CLIENT_FOUND_ROWS? 1:0);
498 DBG_INF_FMT(
"CLIENT_LONG_FLAG= %d", client_capabilities &
CLIENT_LONG_FLAG? 1:0);
499 DBG_INF_FMT(
"CLIENT_NO_SCHEMA= %d", client_capabilities &
CLIENT_NO_SCHEMA? 1:0);
500 DBG_INF_FMT(
"CLIENT_COMPRESS= %d", client_capabilities &
CLIENT_COMPRESS? 1:0);
501 DBG_INF_FMT(
"CLIENT_ODBC= %d", client_capabilities &
CLIENT_ODBC? 1:0);
506 DBG_INF_FMT(
"CLIENT_SSL= %d", client_capabilities &
CLIENT_SSL? 1:0);
509 DBG_INF_FMT(
"CLIENT_RESERVED= %d", client_capabilities &
CLIENT_RESERVED? 1:0);
514 DBG_INF_FMT(
"CLIENT_CONNECT_ATTRS= %d", client_capabilities &
CLIENT_PLUGIN_AUTH? 1:0);
521 conn->payload_decoder_factory->m.init_auth_packet(&auth_packet);
527#ifdef MYSQLND_SSL_SUPPORTED
530 if (server_has_ssl ==
FALSE) {
534 MYSQLND_SSL_PEER_VERIFY:
536 MYSQLND_SSL_PEER_DONT_VERIFY:
537 MYSQLND_SSL_PEER_DEFAULT);
538 DBG_INF(
"Switching to SSL");
545 if (
FAIL == conn->vio->data->m.enable_ssl(conn->vio)) {
565 conn->m->send_close(conn);
577 const char *
const user = username.s;
579 const char *
const passwd = password.s;
580 const size_t passwd_len = password.l;
582 const char *
const db = database.s;
583 const size_t db_len = database.l;
585 const size_t mysql_flags = client_flags;
589 DBG_ENTER(
"mysqlnd_command::handshake");
591 DBG_INF_FMT(
"stream=%p", conn->vio->data->m.get_stream(conn->vio));
592 DBG_INF_FMT(
"[user=%s] [db=%s:%zu] [flags=%zu]", user, db, db_len, mysql_flags);
594 conn->payload_decoder_factory->m.init_greet_packet(&greet_packet);
597 DBG_ERR(
"Error while reading greeting packet");
601 DBG_ERR_FMT(
"errorno=%u error=%s", greet_packet.
error_no, greet_packet.
error);
604 }
else if (greet_packet.
pre41) {
613 conn->thread_id = greet_packet.
thread_id;
622 conn->greet_charset = read_charset;
630 conn->options, mysql_flags))
641 conn->server_capabilities = 0;
PHPAPI ZEND_COLD void php_error_docref(const char *docref, int type, const char *format,...)
#define MYSQLND_METHOD(class, method)
PHPAPI const MYSQLND_CHARSET * mysqlnd_find_charset_nr(const unsigned int charsetno)
#define mnd_pestrdup(ptr, pers)
#define mnd_sprintf_free(p)
#define mnd_sprintf(p, mx_len, fmt,...)
enum_func_status mysqlnd_connect_run_authentication(MYSQLND_CONN_DATA *const conn, const char *const user, const char *const passwd, const char *const db, const size_t db_len, const size_t passwd_len, const MYSQLND_STRING authentication_plugin_data, const char *const authentication_protocol, const unsigned int charset_no, const size_t server_capabilities, const MYSQLND_SESSION_OPTIONS *const session_options, const zend_ulong mysql_flags)
#define MYSQLND_UTF8_MB4_DEFAULT_ID
#define MYSQLND_UTF8_MB3_DEFAULT_ID
PHPAPI const char *const mysqlnd_server_gone
#define SET_CONNECTION_STATE(state_struct, s)
#define UPSERT_STATUS_SET_AFFECTED_ROWS_TO_ERROR(status)
#define GET_CONNECTION_STATE(state_struct)
#define UPSERT_STATUS_RESET(status)
#define UPSERT_STATUS_SET_SERVER_STATUS(status, server_st)
#define DBG_RETURN(value)
#define CLIENT_SSL_DONT_VERIFY_SERVER_CERT
#define CLIENT_LOCAL_FILES
#define CLIENT_REMEMBER_OPTIONS
#define CR_NOT_IMPLEMENTED
#define CLIENT_SECURE_CONNECTION
#define CR_SERVER_GONE_ERROR
#define CLIENT_PLUGIN_AUTH
@ MYSQL_OPT_SSL_VERIFY_SERVER_CERT
#define CLIENT_MULTI_RESULTS
#define CLIENT_FOUND_ROWS
#define CLIENT_SSL_VERIFY_SERVER_CERT
#define CLIENT_LONG_PASSWORD
#define CLIENT_TRANSACTIONS
#define CLIENT_MULTI_STATEMENTS
#define CLIENT_IGNORE_SPACE
#define MYSQLND_STMT_ID_LENGTH
#define CLIENT_PS_MULTI_RESULTS
#define MYSQLND_ASSEMBLED_PACKET_MAX_SIZE
#define CLIENT_IGNORE_SIGPIPE
#define CR_CONNECTION_ERROR
enum mysqlnd_server_option enum_mysqlnd_server_option
@ COM_STMT_SEND_LONG_DATA
#define CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS
enum mysqlnd_connection_state enum_mysqlnd_connection_state
#define CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA
#define CLIENT_PROTOCOL_41
enum func_status enum_func_status
#define CLIENT_SESSION_TRACK
#define CLIENT_INTERACTIVE
#define MYSQLND_CLASS_METHODS_END
struct st_mysqlnd_connection_data MYSQLND_CONN_DATA
struct st_mysqlnd_const_string MYSQLND_CSTRING
enum_func_status(* func_mysqlnd_protocol_payload_decoder_factory__send_command)(MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY *payload_decoder_factory, const enum php_mysqlnd_server_command command, const zend_uchar *const arg, const size_t arg_len, const bool silent, MYSQLND_CONNECTION_STATE *connection_state, MYSQLND_ERROR_INFO *error_info, MYSQLND_UPSERT_STATUS *upsert_status, MYSQLND_STATS *stats, func_mysqlnd_conn_data__send_close send_close, void *send_close_ctx)
struct st_mysqlnd_charset MYSQLND_CHARSET
#define SET_CLIENT_ERROR(info, err_no, sqlstate, error)
#define MYSQLND_CLASS_METHODS_START(class)
enum_func_status(* func_mysqlnd_protocol_payload_decoder_factory__send_command_handle_response)(MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY *payload_decoder_factory, const enum mysqlnd_packet_type ok_packet, const bool silent, const enum php_mysqlnd_server_command command, const bool ignore_upsert_status, MYSQLND_ERROR_INFO *error_info, MYSQLND_UPSERT_STATUS *upsert_status, MYSQLND_STRING *last_message)
#define PACKET_FREE(packet)
struct st_mysqlnd_packet_stats MYSQLND_PACKET_STATS
#define PACKET_WRITE(conn, packet)
struct st_mysqlnd_packet_auth MYSQLND_PACKET_AUTH
struct st_mysqlnd_packet_greet MYSQLND_PACKET_GREET
#define PACKET_READ(conn, packet)
unsigned const char * end
PHP_JSON_API size_t int options
char sqlstate[MYSQLND_SQLSTATE_LENGTH+1]
uint32_t server_capabilities
char error[MYSQLND_ERRMSG_SIZE+1]
MYSQLND_STRING authentication_plugin_data
struct _zend_string zend_string