--- sql/mysql/parser3mysql.C 2019/09/03 20:16:55 1.55 +++ sql/mysql/parser3mysql.C 2019/09/05 15:45:13 1.57 @@ -15,7 +15,7 @@ #include "pa_sql_driver.h" -volatile const char * IDENT_PARSER3MYSQL_C="$Id: parser3mysql.C,v 1.55 2019/09/03 20:16:55 moko Exp $" IDENT_PA_SQL_DRIVER_H; +volatile const char * IDENT_PARSER3MYSQL_C="$Id: parser3mysql.C,v 1.57 2019/09/05 15:45:13 moko Exp $" IDENT_PA_SQL_DRIVER_H; #define NO_CLIENT_LONG_LONG #include "mysql.h" @@ -343,10 +343,7 @@ public: if(transcode_needed) { statement_size=strlen(astatement); // transcode query from $request:charset to ?ClientCharset - services.transcode(astatement, statement_size, - astatement, statement_size, - services.request_charset(), - connection.client_charset); + services.transcode(astatement, statement_size, astatement, statement_size, services.request_charset(), connection.client_charset); } const char *statement; @@ -422,25 +419,18 @@ public: } \ } - bool* transcode_column=0; if(transcode_needed) { bool transcode_column[column_count]; DO_FETCH_FIELDS( transcode_column[i] = is_column_transcode_required(field->type); // transcode column's name from ?ClientCharset to $request:charset - services.transcode(str, length, - str, length, - connection.client_charset, - services.request_charset()); + services.transcode(str, length, str, length, connection.client_charset, services.request_charset()); ) CHECK(handlers.before_rows(sql_error)); DO_FETCH_ROWS( + // transcode cell's value from ?ClientCharset to $request:charset if(transcode_column[i]) - // transcode cell's value from ?ClientCharset to $request:charset - services.transcode(str, length, - str, length, - connection.client_charset, - services.request_charset()); + services.transcode(str, length, str, length, connection.client_charset, services.request_charset()); ) } else { // without transcoding @@ -464,10 +454,7 @@ private: void _throw(Connection& connection, const char* aerr_msg) { size_t length=strlen(aerr_msg); if(length && _transcode_required(connection)) { - connection.services->transcode(aerr_msg, length, - aerr_msg, length, - connection.client_charset, - connection.services->request_charset()); + connection.services->transcode(aerr_msg, length, aerr_msg, length, connection.client_charset, connection.services->request_charset()); } connection.services->_throw(aerr_msg); }