executeSql method

Future<ResultSet> executeSql (
  1. ExecuteSqlRequest request,
  2. String session,
  3. {String $fields}
)

Executes an SQL statement, returning all results in a single reply. This method cannot be used to return a result set larger than 10 MiB; if the query yields more data than that, the query fails with a FAILED_PRECONDITION error. Operations inside read-write transactions might return ABORTED. If this occurs, the application should restart the transaction from the beginning. See Transaction for more details. Larger result sets can be fetched in streaming fashion by calling ExecuteStreamingSql instead.

request - The metadata request object.

Request parameters:

session - Required. The session in which the SQL query should be performed. Value must have pattern "^projects/^/+/instances/^/+/databases/^/+/sessions/^/+$".

$fields - Selector specifying which fields to include in a partial response.

Completes with a ResultSet.

Completes with a commons.ApiRequestError if the API endpoint returned an error.

If the used http.Client completes with an error when making a REST call, this method will complete with the same error.

Implementation

async.Future<ResultSet> executeSql(
    ExecuteSqlRequest request, core.String session,
    {core.String $fields}) {
  var _url;
  var _queryParams = new core.Map<core.String, core.List<core.String>>();
  var _uploadMedia;
  var _uploadOptions;
  var _downloadOptions = commons.DownloadOptions.Metadata;
  var _body;

  if (request != null) {
    _body = convert.json.encode((request).toJson());
  }
  if (session == null) {
    throw new core.ArgumentError("Parameter session is required.");
  }
  if ($fields != null) {
    _queryParams["fields"] = [$fields];
  }

  _url = 'v1/' +
      commons.Escaper.ecapeVariableReserved('$session') +
      ':executeSql';

  var _response = _requester.request(_url, "POST",
      body: _body,
      queryParams: _queryParams,
      uploadOptions: _uploadOptions,
      uploadMedia: _uploadMedia,
      downloadOptions: _downloadOptions);
  return _response.then((data) => new ResultSet.fromJson(data));
}