Skip to content

Commit

Permalink
Merge pull request sogou#295 from holmes1412/master
Browse files Browse the repository at this point in the history
fix mysql as_int() as_ulonglong() length bug and rollback version 0.9.4
  • Loading branch information
holmes1412 authored Mar 17, 2021
2 parents 1ff698d + d9db40f commit 2d79b80
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 7 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ set(CMAKE_SKIP_RPATH TRUE)

project(
workflow
VERSION 0.9.5
VERSION 0.9.4
LANGUAGES C CXX
)

Expand Down
11 changes: 10 additions & 1 deletion src/nameservice/WFServiceGovernance.cc
Original file line number Diff line number Diff line change
Expand Up @@ -197,8 +197,17 @@ void WFServiceGovernance::success(RouteManager::RouteResult *result,
WFNSTracing *tracing,
CommTarget *target)
{
EndpointAddress *server;
if (tracing->deleter)
{
auto *v = (std::vector<EndpointAddress *> *)(tracing->data);
server = (*v)[v->size() - 1];
}
else
server = (EndpointAddress *)tracing->data;

pthread_rwlock_rdlock(&this->rwlock);
this->recover_server_from_breaker((EndpointAddress *)tracing->data);
this->recover_server_from_breaker(server);
pthread_rwlock_unlock(&this->rwlock);

WFDNSResolver::success(result, tracing, target);
Expand Down
5 changes: 3 additions & 2 deletions src/protocol/MySQLResult.inl
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,8 @@ inline int MySQLCell::as_int() const
{
if (!this->is_int())
return 0;
char num[MYSQL_NUM_STR_LENGTH + 1];

char num[MYSQL_INT_STR_LENGTH + 1];
memcpy(num, this->data, this->len);
num[this->len] = '\0';
return atoi(num);
Expand Down Expand Up @@ -222,7 +223,7 @@ inline unsigned long long MySQLCell::as_ulonglong() const
if (!this->is_ulonglong())
return 0;

char num[MYSQL_NUM_STR_LENGTH + 1];
char num[MYSQL_LONG_STR_LENGTH + 1];
memcpy(num, this->data, this->len);
num[this->len] = '\0';
return strtoull(num, NULL, 10);
Expand Down
7 changes: 4 additions & 3 deletions src/protocol/mysql_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@

#define MYSQL_STATE_LENGTH 5
#define MYSQL_STATE_DEFAULT "HY000"
#define MYSQL_NUM_STR_LENGTH 8 // 8 Length-Encoded Integer
#define MYSQL_FLOAT_STR_LENGTH 7 // 7 for float
#define MYSQL_DOUBLE_STR_LENGTH 19 // 19 for long double
#define MYSQL_INT_STR_LENGTH 11 // 10 for unsigned int
#define MYSQL_LONG_STR_LENGTH 21 // 20 for unsigned long long
#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/OK packet
#define MYSQL_SERVER_MORE_RESULTS_EXIST 0x0008
Expand Down

0 comments on commit 2d79b80

Please sign in to comment.