|
|
| 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); |
| } | } |