in squangle/mysql_client/Operation.cpp [1031:1050]
bool FetchOperation::RowStream::slurp() {
CHECK_THROW(mysql_query_result_ != nullptr, db::OperationStateException);
if (current_row_.has_value() || query_finished_) {
return true;
}
MYSQL_ROW row;
auto status = handler_->fetchRow(mysql_query_result_.get(), row);
if (status == MysqlHandler::PENDING) {
return false;
}
if (row == nullptr) {
query_finished_ = true;
return true;
}
unsigned long* field_lengths = mysql_fetch_lengths(mysql_query_result_.get());
current_row_.assign(EphemeralRow(row, field_lengths, &row_fields_));
query_result_size_ += current_row_->calculateRowLength();
++num_rows_seen_;
return true;
}