void FetchOperation::specializedRunImpl()

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