bool
BeatBoard::SearchApiService::readDrizzleField( struct json_object* my_array )
{
  drizzle_field_t field;
  size_t total;
  std::string data;
  std::vector<std::string> field_data;

  while (1)
  {
    field= drizzle_field_buffer(&drizzle_response.result, &total, &drizzle_response.ret);
    if ( drizzle_response.ret == DRIZZLE_RETURN_ROW_END)
    {
      std::cerr << "row end" << std::endl;
      fieldToJsonArray( my_array, field_data );
      field_data.clear();
      break;
    }
    else if ( drizzle_response.ret != DRIZZLE_RETURN_OK)
    {
      std::cerr << "drizzle_field_read: " << client->client_error() << std::endl;
      return false;
    }

    if (field != NULL)
    {
      data = std::string(field);
      field_data.push_back(data.substr(0, total));
    }
  }
  return true;
}
Exemple #2
0
drizzle_row_t drizzle_row_buffer(drizzle_result_st *result,
                                 drizzle_return_t *ret_ptr)
{
  size_t total;
  drizzle_field_t field;
  drizzle_row_t row;

  if (result->row == NULL)
  {
    if (drizzle_row_read(result, ret_ptr) == 0 || *ret_ptr != DRIZZLE_RETURN_OK)
      return NULL;

    result->row= malloc((sizeof(drizzle_field_t) + sizeof(size_t)) *
                        result->column_count);
    if (result->row == NULL)
    {
      drizzle_set_error(result->con->drizzle, "drizzle_row_buffer", "malloc");
      *ret_ptr= DRIZZLE_RETURN_MEMORY;
      return NULL;
    }

    result->field_sizes= (size_t *)(result->row + result->column_count);
  }

  while (1)
  {
    field= drizzle_field_buffer(result, &total, ret_ptr);
    if (*ret_ptr == DRIZZLE_RETURN_ROW_END)
      break;
    if (*ret_ptr != DRIZZLE_RETURN_OK)
    {
      if (*ret_ptr != DRIZZLE_RETURN_IO_WAIT)
      {
        free(result->row);
        result->row= NULL;
        result->field_sizes= NULL;
      }

      return NULL;
    }

    result->row[result->field_current - 1]= field;
    result->field_sizes[result->field_current - 1]= total;
  }

  *ret_ptr= DRIZZLE_RETURN_OK;
  row= result->row;
  result->row= NULL;

  return row;
}