From 28a4a9d8397b72613d4bce9f163b5f7d676d737c Mon Sep 17 00:00:00 2001 From: holmes1412 Date: Sat, 17 Oct 2020 17:55:23 +0800 Subject: [PATCH 1/2] Fix EncodeStream check_merge() bug. --- src/util/EncodeStream.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/EncodeStream.cc b/src/util/EncodeStream.cc index fde4b480..fa01f91c 100644 --- a/src/util/EncodeStream.cc +++ b/src/util/EncodeStream.cc @@ -70,7 +70,7 @@ void EncodeStream::check_merge() next = pos->next; } - while (pos != head) + if (pos != head) { __buff *x = list_entry(pos, __buff, buffer_list); From 153e7e87b4857dfabec56c63abd73d7341f3a524 Mon Sep 17 00:00:00 2001 From: holmes1412 Date: Tue, 1 Dec 2020 17:27:33 +0800 Subject: [PATCH 2/2] fix MySQL parse OK_Packet info --- src/protocol/mysql_parser.c | 6 ++++-- src/protocol/mysql_types.h | 2 +- tutorial/tutorial-12-mysql_cli.cc | 5 +++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/protocol/mysql_parser.c b/src/protocol/mysql_parser.c index 87ff8502..b535b69e 100644 --- a/src/protocol/mysql_parser.c +++ b/src/protocol/mysql_parser.c @@ -212,10 +212,12 @@ static int parse_ok_packet(const void *buf, size_t len, mysql_parser_t *parser) parser->info_offset = p - (const char *)buf; parser->info_len = info_len; - } else + } else { + parser->info_offset = 7; parser->info_len = 0; + } - parser->offset += 7; + parser->offset += parser->info_offset + parser->info_len; parser->affected_rows = (affected_rows == (unsigned long long)-1) ? 0 : affected_rows; parser->insert_id = (insert_id == (unsigned long long)-1) ? 0 : insert_id; parser->server_status = server_status; diff --git a/src/protocol/mysql_types.h b/src/protocol/mysql_types.h index bbeb0154..48b5406d 100644 --- a/src/protocol/mysql_types.h +++ b/src/protocol/mysql_types.h @@ -26,7 +26,7 @@ #define MYSQL_FLOAT_STR_LENGTH 7 // 7 for float #define MYSQL_DOUBLE_STR_LENGTH 19 // 19 for long double -// may be set by server in EOF packet +// may be set by server in EOF/OK packet #define MYSQL_SERVER_MORE_RESULTS_EXIST 0x0008 enum diff --git a/tutorial/tutorial-12-mysql_cli.cc b/tutorial/tutorial-12-mysql_cli.cc index fd4a3c35..e7de2176 100644 --- a/tutorial/tutorial-12-mysql_cli.cc +++ b/tutorial/tutorial-12-mysql_cli.cc @@ -185,9 +185,10 @@ void mysql_callback(WFMySQLTask *task) fprintf(stderr, "row "); else fprintf(stderr, "rows "); - fprintf(stderr, "affected. %d warnings. insert_id=%llu.\n", + fprintf(stderr, "affected. %d warnings. insert_id=%llu. %s\n", task->get_resp()->get_warnings(), - task->get_resp()->get_last_insert_id()); + task->get_resp()->get_last_insert_id(), + task->get_resp()->get_info().c_str()); } else if (resp->get_packet_type() == MYSQL_PACKET_ERROR) {