/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the timestream-query-2018-11-01.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.TimestreamQuery.Model
{
///
/// Container for the parameters to the Query operation.
/// Query
is a synchronous operation that enables you to run a query against
/// your Amazon Timestream data. Query
will time out after 60 seconds. You
/// must update the default timeout in the SDK to support a timeout of 60 seconds. See
/// the code
/// sample for details.
///
///
///
/// Your query request will fail in the following cases:
///
/// -
///
/// If you submit a
Query
request with the same client token outside of
/// the 5-minute idempotency window.
///
/// -
///
/// If you submit a
Query
request with the same client token, but change
/// other parameters, within the 5-minute idempotency window.
///
/// -
///
/// If the size of the row (including the query metadata) exceeds 1 MB, then the query
/// will fail with the following error message:
///
///
///
///
Query aborted as max page response size has been exceeded by the output result
/// row
///
/// -
///
/// If the IAM principal of the query initiator and the result reader are not the same
/// and/or the query initiator and the result reader do not have the same query string
/// in the query requests, the query will fail with an
Invalid pagination token
/// error.
///
///
///
public partial class QueryRequest : AmazonTimestreamQueryRequest
{
private string _clientToken;
private int? _maxRows;
private string _nextToken;
private string _queryString;
///
/// Gets and sets the property ClientToken.
///
/// Unique, case-sensitive string of up to 64 ASCII characters specified when a Query
/// request is made. Providing a ClientToken
makes the call to Query
/// idempotent. This means that running the same query repeatedly will produce
/// the same result. In other words, making multiple identical Query
requests
/// has the same effect as making a single request. When using ClientToken
/// in a query, note the following:
///
/// -
///
/// If the Query API is instantiated without a
ClientToken
, the Query SDK
/// generates a ClientToken
on your behalf.
///
/// -
///
/// If the
Query
invocation only contains the ClientToken
but
/// does not include a NextToken
, that invocation of Query
is
/// assumed to be a new query run.
///
/// -
///
/// If the invocation contains
NextToken
, that particular invocation is assumed
/// to be a subsequent invocation of a prior call to the Query API, and a result set is
/// returned.
///
/// -
///
/// After 4 hours, any request with the same
ClientToken
is treated as a
/// new request.
///
///
///
[AWSProperty(Sensitive=true, Min=32, Max=128)]
public string ClientToken
{
get { return this._clientToken; }
set { this._clientToken = value; }
}
// Check to see if ClientToken property is set
internal bool IsSetClientToken()
{
return this._clientToken != null;
}
///
/// Gets and sets the property MaxRows.
///
/// The total number of rows to be returned in the Query
output. The initial
/// run of Query
with a MaxRows
value specified will return
/// the result set of the query in two cases:
///
/// -
///
/// The size of the result is less than
1MB
.
///
/// -
///
/// The number of rows in the result set is less than the value of
maxRows
.
///
///
///
/// Otherwise, the initial invocation of Query
only returns a NextToken
,
/// which can then be used in subsequent calls to fetch the result set. To resume pagination,
/// provide the NextToken
value in the subsequent command.
///
///
///
/// If the row size is large (e.g. a row has many columns), Timestream may return fewer
/// rows to keep the response size from exceeding the 1 MB limit. If MaxRows
/// is not provided, Timestream will send the necessary number of rows to meet the 1 MB
/// limit.
///
///
[AWSProperty(Min=1, Max=1000)]
public int MaxRows
{
get { return this._maxRows.GetValueOrDefault(); }
set { this._maxRows = value; }
}
// Check to see if MaxRows property is set
internal bool IsSetMaxRows()
{
return this._maxRows.HasValue;
}
///
/// Gets and sets the property NextToken.
///
/// A pagination token used to return a set of results. When the Query
API
/// is invoked using NextToken
, that particular invocation is assumed to
/// be a subsequent invocation of a prior call to Query
, and a result set
/// is returned. However, if the Query
invocation only contains the ClientToken
,
/// that invocation of Query
is assumed to be a new query run.
///
///
///
/// Note the following when using NextToken in a query:
///
/// -
///
/// A pagination token can be used for up to five
Query
invocations, OR for
/// a duration of up to 1 hour – whichever comes first.
///
/// -
///
/// Using the same
NextToken
will return the same set of records. To keep
/// paginating through the result set, you must to use the most recent nextToken
.
///
/// -
///
/// Suppose a
Query
invocation returns two NextToken
values,
/// TokenA
and TokenB
. If TokenB
is used in a subsequent
/// Query
invocation, then TokenA
is invalidated and cannot
/// be reused.
///
/// -
///
/// To request a previous result set from a query after pagination has begun, you must
/// re-invoke the Query API.
///
///
-
///
/// The latest
NextToken
should be used to paginate until null
/// is returned, at which point a new NextToken
should be used.
///
/// -
///
/// If the IAM principal of the query initiator and the result reader are not the same
/// and/or the query initiator and the result reader do not have the same query string
/// in the query requests, the query will fail with an
Invalid pagination token
/// error.
///
///
///
[AWSProperty(Min=1, Max=2048)]
public string NextToken
{
get { return this._nextToken; }
set { this._nextToken = value; }
}
// Check to see if NextToken property is set
internal bool IsSetNextToken()
{
return this._nextToken != null;
}
///
/// Gets and sets the property QueryString.
///
/// The query to be run by Timestream.
///
///
[AWSProperty(Required=true, Sensitive=true, Min=1, Max=262144)]
public string QueryString
{
get { return this._queryString; }
set { this._queryString = value; }
}
// Check to see if QueryString property is set
internal bool IsSetQueryString()
{
return this._queryString != null;
}
}
}