diff options
author | Andrey Hristov <andrey@php.net> | 2015-11-02 14:16:18 +0100 |
---|---|---|
committer | Andrey Hristov <andrey@php.net> | 2015-11-12 16:19:16 +0100 |
commit | 7e6f9a84cb8693ec24ec44d902c15d99300d3641 (patch) | |
tree | 4a9e401838d2bb5012e01370c7db624bf4c47e9c /ext/mysqlnd/mysqlnd.c | |
parent | aa4966d4e37076ed560ba0a10f0758863d8af389 (diff) | |
download | php-git-7e6f9a84cb8693ec24ec44d902c15d99300d3641.tar.gz |
MNDR:
- split handle_response() into handle_OK and handle_EOF
Diffstat (limited to 'ext/mysqlnd/mysqlnd.c')
-rw-r--r-- | ext/mysqlnd/mysqlnd.c | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index fd41cd4bb1..13eb7af57c 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -356,109 +356,6 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, dtor)(MYSQLND_CONN_DATA * conn) } /* }}} */ -#if 0 -/* {{{ mysqlnd_conn_data::send_command_handle_response */ -static enum_func_status -MYSQLND_METHOD(mysqlnd_conn_data, send_command_handle_response)( - MYSQLND_CONN_DATA * const conn, - const enum mysqlnd_packet_type ok_packet, - const zend_bool silent, - const enum php_mysqlnd_server_command command, - const zend_bool ignore_upsert_status) -{ - enum_func_status ret = FAIL; - - DBG_ENTER("mysqlnd_conn_data::send_command_handle_response"); - DBG_INF_FMT("silent=%u packet=%u command=%s", silent, ok_packet, mysqlnd_command_to_text[command]); - - switch (ok_packet) { - case PROT_OK_PACKET:{ - MYSQLND_PACKET_OK * ok_response = conn->payload_decoder_factory->m.get_ok_packet(conn->payload_decoder_factory, FALSE); - if (!ok_response) { - SET_OOM_ERROR(conn->error_info); - break; - } - if (FAIL == (ret = PACKET_READ(ok_response))) { - if (!silent) { - DBG_ERR_FMT("Error while reading %s's OK packet", mysqlnd_command_to_text[command]); - php_error_docref(NULL, E_WARNING, "Error while reading %s's OK packet. PID=%u", - mysqlnd_command_to_text[command], getpid()); - } - } else { - DBG_INF_FMT("OK from server"); - if (0xFF == ok_response->field_count) { - /* The server signalled error. Set the error */ - SET_CLIENT_ERROR(conn->error_info, ok_response->error_no, ok_response->sqlstate, ok_response->error); - ret = FAIL; - /* - Cover a protocol design error: error packet does not - contain the server status. Therefore, the client has no way - to find out whether there are more result sets of - a multiple-result-set statement pending. Luckily, in 5.0 an - error always aborts execution of a statement, wherever it is - a multi-statement or a stored procedure, so it should be - safe to unconditionally turn off the flag here. - */ - conn->upsert_status->server_status &= ~SERVER_MORE_RESULTS_EXISTS; - UPSERT_STATUS_SET_AFFECTED_ROWS_TO_ERROR(conn->upsert_status); - } else { - SET_NEW_MESSAGE(conn->last_message, conn->last_message_len, - ok_response->message, ok_response->message_len, - conn->persistent); - - if (!ignore_upsert_status) { - UPSERT_STATUS_RESET(conn->upsert_status); - conn->upsert_status->warning_count = ok_response->warning_count; - conn->upsert_status->server_status = ok_response->server_status; - conn->upsert_status->affected_rows = ok_response->affected_rows; - conn->upsert_status->last_insert_id = ok_response->last_insert_id; - } - } - } - PACKET_FREE(ok_response); - break; - } - case PROT_EOF_PACKET:{ - MYSQLND_PACKET_EOF * ok_response = conn->payload_decoder_factory->m.get_eof_packet(conn->payload_decoder_factory, FALSE); - if (!ok_response) { - SET_OOM_ERROR(conn->error_info); - break; - } - if (FAIL == (ret = PACKET_READ(ok_response))) { - SET_CLIENT_ERROR(conn->error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, - "Malformed packet"); - if (!silent) { - DBG_ERR_FMT("Error while reading %s's EOF packet", mysqlnd_command_to_text[command]); - php_error_docref(NULL, E_WARNING, "Error while reading %s's EOF packet. PID=%d", - mysqlnd_command_to_text[command], getpid()); - } - } else if (0xFF == ok_response->field_count) { - /* The server signalled error. Set the error */ - SET_CLIENT_ERROR(conn->error_info, ok_response->error_no, ok_response->sqlstate, ok_response->error); - UPSERT_STATUS_SET_AFFECTED_ROWS_TO_ERROR(conn->upsert_status); - } else if (0xFE != ok_response->field_count) { - SET_CLIENT_ERROR(conn->error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet"); - if (!silent) { - DBG_ERR_FMT("EOF packet expected, field count wasn't 0xFE but 0x%2X", ok_response->field_count); - php_error_docref(NULL, E_WARNING, "EOF packet expected, field count wasn't 0xFE but 0x%2X", - ok_response->field_count); - } - } else { - DBG_INF_FMT("OK from server"); - } - PACKET_FREE(ok_response); - break; - } - default: - SET_CLIENT_ERROR(conn->error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet"); - php_error_docref(NULL, E_ERROR, "Wrong response packet %u passed to the function", ok_packet); - break; - } - DBG_INF(ret == PASS ? "PASS":"FAIL"); - DBG_RETURN(ret); -} -/* }}} */ -#endif /* {{{ mysqlnd_conn_data::set_server_option */ static enum_func_status |