Diff for /sql/mysql/parser3mysql.C between versions 1.54 and 1.56

version 1.54, 2019/06/19 23:00:43 version 1.56, 2019/09/03 20:19:34
Line 343  public: Line 343  public:
                 if(transcode_needed) {                  if(transcode_needed) {
                         statement_size=strlen(astatement);                          statement_size=strlen(astatement);
                         // transcode query from $request:charset to ?ClientCharset                          // transcode query from $request:charset to ?ClientCharset
                         services.transcode(astatement, statement_size,                          services.transcode(astatement, statement_size, astatement, statement_size, services.request_charset(), connection.client_charset);
                                 astatement, statement_size,  
                                 services.request_charset(),  
                                 connection.client_charset);  
                 }                  }
   
                 const char *statement;                  const char *statement;
Line 424  public: Line 421  public:
   
                 bool* transcode_column=0;                  bool* transcode_column=0;
                 if(transcode_needed) {                  if(transcode_needed) {
                         transcode_column = new bool[column_count];                          bool transcode_column[column_count];
                         DO_FETCH_FIELDS(                          DO_FETCH_FIELDS(
                                 transcode_column[i] = is_column_transcode_required(field->type);                                  transcode_column[i] = is_column_transcode_required(field->type);
                                 // transcode column's name from ?ClientCharset to $request:charset                                  // transcode column's name from ?ClientCharset to $request:charset
                                 services.transcode(str, length,                                  services.transcode(str, length, str, length, connection.client_charset, services.request_charset());
                                         str, length,  
                                         connection.client_charset,  
                                         services.request_charset());  
                         )                          )
                         CHECK(handlers.before_rows(sql_error));                          CHECK(handlers.before_rows(sql_error));
                         DO_FETCH_ROWS(                          DO_FETCH_ROWS(
                                   // transcode cell's value from ?ClientCharset to $request:charset
                                 if(transcode_column[i])                                  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 {                  } else {
                         // without transcoding                          // without transcoding
Line 449  public: Line 440  public:
                         DO_FETCH_ROWS()                          DO_FETCH_ROWS()
                 }                  }
 cleanup:  cleanup:
                 if(transcode_column)  
                         delete transcode_column;  
                 mysql_free_result(res);                  mysql_free_result(res);
                 if(failed)                  if(failed)
                         services._throw(sql_error);                          services._throw(sql_error);
Line 466  private: Line 455  private:
         void _throw(Connection& connection, const char* aerr_msg) {          void _throw(Connection& connection, const char* aerr_msg) {
                 size_t length=strlen(aerr_msg);                  size_t length=strlen(aerr_msg);
                 if(length && _transcode_required(connection)) {                  if(length && _transcode_required(connection)) {
                         connection.services->transcode(aerr_msg, length,                          connection.services->transcode(aerr_msg, length, aerr_msg, length, connection.client_charset, connection.services->request_charset());
                                 aerr_msg, length,  
                                 connection.client_charset,  
                                 connection.services->request_charset());  
                 }                  }
                 connection.services->_throw(aerr_msg);                  connection.services->_throw(aerr_msg);
         }          }

Removed from v.1.54  
changed lines
  Added in v.1.56


E-mail: