in squangle/mysql_client/Operation.cpp [964:993]
void FetchOperation::specializedRunImpl() {
try {
MYSQL* mysql = conn()->mysql();
rendered_query_ = queries_.renderQuery(mysql);
mysql_options(mysql, MYSQL_OPT_QUERY_ATTR_RESET, 0);
for (const auto& [key, value] : attributes_) {
if (!setQueryAttribute(key, value)) {
setAsyncClientError(folly::sformat(
"Failed to set query attribute: {} = {}", key, value));
completeOperation(OperationResult::Failed);
return;
}
}
if (use_checksum_ || conn()->getConnectionOptions().getUseChecksum()) {
if (!setQueryAttribute(kQueryChecksumKey, "ON")) {
setAsyncClientError("Failed to set checksum = ON");
completeOperation(OperationResult::Failed);
return;
}
}
socketActionable();
} catch (std::invalid_argument& e) {
setAsyncClientError(
std::string("Unable to parse Query: ") + e.what(),
"Unable to parse Query");
completeOperation(OperationResult::Failed);
}
}