From 7d1033115a5c04a30a9a044ceb8f71047162d200 Mon Sep 17 00:00:00 2001 From: Alexey Botchkov Date: Tue, 15 Apr 2014 18:08:33 +0500 Subject: MDEV-5138 Numerous test failures in "mtr --ps --embedded". The function Protocol::net_store_data(a, b, CHARSET_A, CHARSET_B) should be adapted to be working in the embedded server as it's done with the Protocol::net_store_data(a, b). That new function renamed as net_store_data_cs, so we can make it virtual. --- sql/protocol.cc | 11 +++++++---- sql/protocol.h | 8 ++++++-- 2 files changed, 13 insertions(+), 6 deletions(-) (limited to 'sql') diff --git a/sql/protocol.cc b/sql/protocol.cc index 2f19843e3e2..ac9fb1e9384 100644 --- a/sql/protocol.cc +++ b/sql/protocol.cc @@ -64,7 +64,7 @@ bool Protocol_binary::net_store_data(const uchar *from, size_t length) /* - net_store_data() - extended version with character set conversion. + net_store_data_cs() - extended version with character set conversion. It is optimized for short strings whose length after conversion is garanteed to be less than 251, which accupies @@ -76,8 +76,12 @@ bool Protocol_binary::net_store_data(const uchar *from, size_t length) */ #ifndef EMBEDDED_LIBRARY -bool Protocol::net_store_data(const uchar *from, size_t length, +bool Protocol::net_store_data_cs(const uchar *from, size_t length, CHARSET_INFO *from_cs, CHARSET_INFO *to_cs) +#else +bool Protocol_binary::net_store_data_cs(const uchar *from, size_t length, + CHARSET_INFO *from_cs, CHARSET_INFO *to_cs) +#endif { uint dummy_errors; /* Calculate maxumum possible result length */ @@ -117,7 +121,6 @@ bool Protocol::net_store_data(const uchar *from, size_t length, packet->length((uint) (to - packet->ptr())); return 0; } -#endif /** @@ -1007,7 +1010,7 @@ bool Protocol::store_string_aux(const char *from, size_t length, tocs != &my_charset_bin) { /* Store with conversion */ - return net_store_data((uchar*) from, length, fromcs, tocs); + return net_store_data_cs((uchar*) from, length, fromcs, tocs); } /* Store without conversion */ return net_store_data((uchar*) from, length); diff --git a/sql/protocol.h b/sql/protocol.h index d9bc48ce45d..871d6018458 100644 --- a/sql/protocol.h +++ b/sql/protocol.h @@ -43,14 +43,16 @@ protected: uint field_count; #ifndef EMBEDDED_LIBRARY bool net_store_data(const uchar *from, size_t length); + bool net_store_data_cs(const uchar *from, size_t length, + CHARSET_INFO *fromcs, CHARSET_INFO *tocs); #else virtual bool net_store_data(const uchar *from, size_t length); + virtual bool net_store_data_cs(const uchar *from, size_t length, + CHARSET_INFO *fromcs, CHARSET_INFO *tocs); char **next_field; MYSQL_FIELD *next_mysql_field; MEM_ROOT *alloc; #endif - bool net_store_data(const uchar *from, size_t length, - CHARSET_INFO *fromcs, CHARSET_INFO *tocs); bool store_string_aux(const char *from, size_t length, CHARSET_INFO *fromcs, CHARSET_INFO *tocs); @@ -179,6 +181,8 @@ public: #ifdef EMBEDDED_LIBRARY virtual bool write(); bool net_store_data(const uchar *from, size_t length); + bool net_store_data_cs(const uchar *from, size_t length, + CHARSET_INFO *fromcs, CHARSET_INFO *tocs); #endif virtual bool store_null(); virtual bool store_tiny(longlong from); -- cgit v1.2.1