aws_sdk_timestreamquery/operation/query/
_query_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq)]
5pub struct QueryInput {
6    /// <p>The query to be run by Timestream.</p>
7    pub query_string: ::std::option::Option<::std::string::String>,
8    /// <p>Unique, case-sensitive string of up to 64 ASCII characters specified when a <code>Query</code> request is made. Providing a <code>ClientToken</code> makes the call to <code>Query</code> <i>idempotent</i>. This means that running the same query repeatedly will produce the same result. In other words, making multiple identical <code>Query</code> requests has the same effect as making a single request. When using <code>ClientToken</code> in a query, note the following:</p>
9    /// <ul>
10    /// <li>
11    /// <p>If the Query API is instantiated without a <code>ClientToken</code>, the Query SDK generates a <code>ClientToken</code> on your behalf.</p></li>
12    /// <li>
13    /// <p>If the <code>Query</code> invocation only contains the <code>ClientToken</code> but does not include a <code>NextToken</code>, that invocation of <code>Query</code> is assumed to be a new query run.</p></li>
14    /// <li>
15    /// <p>If the invocation contains <code>NextToken</code>, that particular invocation is assumed to be a subsequent invocation of a prior call to the Query API, and a result set is returned.</p></li>
16    /// <li>
17    /// <p>After 4 hours, any request with the same <code>ClientToken</code> is treated as a new request.</p></li>
18    /// </ul>
19    pub client_token: ::std::option::Option<::std::string::String>,
20    /// <p>A pagination token used to return a set of results. When the <code>Query</code> API is invoked using <code>NextToken</code>, that particular invocation is assumed to be a subsequent invocation of a prior call to <code>Query</code>, and a result set is returned. However, if the <code>Query</code> invocation only contains the <code>ClientToken</code>, that invocation of <code>Query</code> is assumed to be a new query run.</p>
21    /// <p>Note the following when using NextToken in a query:</p>
22    /// <ul>
23    /// <li>
24    /// <p>A pagination token can be used for up to five <code>Query</code> invocations, OR for a duration of up to 1 hour – whichever comes first.</p></li>
25    /// <li>
26    /// <p>Using the same <code>NextToken</code> will return the same set of records. To keep paginating through the result set, you must to use the most recent <code>nextToken</code>.</p></li>
27    /// <li>
28    /// <p>Suppose a <code>Query</code> invocation returns two <code>NextToken</code> values, <code>TokenA</code> and <code>TokenB</code>. If <code>TokenB</code> is used in a subsequent <code>Query</code> invocation, then <code>TokenA</code> is invalidated and cannot be reused.</p></li>
29    /// <li>
30    /// <p>To request a previous result set from a query after pagination has begun, you must re-invoke the Query API.</p></li>
31    /// <li>
32    /// <p>The latest <code>NextToken</code> should be used to paginate until <code>null</code> is returned, at which point a new <code>NextToken</code> should be used.</p></li>
33    /// <li>
34    /// <p>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 <code>Invalid pagination token</code> error.</p></li>
35    /// </ul>
36    pub next_token: ::std::option::Option<::std::string::String>,
37    /// <p>The total number of rows to be returned in the <code>Query</code> output. The initial run of <code>Query</code> with a <code>MaxRows</code> value specified will return the result set of the query in two cases:</p>
38    /// <ul>
39    /// <li>
40    /// <p>The size of the result is less than <code>1MB</code>.</p></li>
41    /// <li>
42    /// <p>The number of rows in the result set is less than the value of <code>maxRows</code>.</p></li>
43    /// </ul>
44    /// <p>Otherwise, the initial invocation of <code>Query</code> only returns a <code>NextToken</code>, which can then be used in subsequent calls to fetch the result set. To resume pagination, provide the <code>NextToken</code> value in the subsequent command.</p>
45    /// <p>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 <code>MaxRows</code> is not provided, Timestream will send the necessary number of rows to meet the 1 MB limit.</p>
46    pub max_rows: ::std::option::Option<i32>,
47    /// <p>Encapsulates settings for enabling <code>QueryInsights</code>.</p>
48    /// <p>Enabling <code>QueryInsights</code> returns insights and metrics in addition to query results for the query that you executed. You can use <code>QueryInsights</code> to tune your query performance.</p>
49    pub query_insights: ::std::option::Option<crate::types::QueryInsights>,
50}
51impl QueryInput {
52    /// <p>The query to be run by Timestream.</p>
53    pub fn query_string(&self) -> ::std::option::Option<&str> {
54        self.query_string.as_deref()
55    }
56    /// <p>Unique, case-sensitive string of up to 64 ASCII characters specified when a <code>Query</code> request is made. Providing a <code>ClientToken</code> makes the call to <code>Query</code> <i>idempotent</i>. This means that running the same query repeatedly will produce the same result. In other words, making multiple identical <code>Query</code> requests has the same effect as making a single request. When using <code>ClientToken</code> in a query, note the following:</p>
57    /// <ul>
58    /// <li>
59    /// <p>If the Query API is instantiated without a <code>ClientToken</code>, the Query SDK generates a <code>ClientToken</code> on your behalf.</p></li>
60    /// <li>
61    /// <p>If the <code>Query</code> invocation only contains the <code>ClientToken</code> but does not include a <code>NextToken</code>, that invocation of <code>Query</code> is assumed to be a new query run.</p></li>
62    /// <li>
63    /// <p>If the invocation contains <code>NextToken</code>, that particular invocation is assumed to be a subsequent invocation of a prior call to the Query API, and a result set is returned.</p></li>
64    /// <li>
65    /// <p>After 4 hours, any request with the same <code>ClientToken</code> is treated as a new request.</p></li>
66    /// </ul>
67    pub fn client_token(&self) -> ::std::option::Option<&str> {
68        self.client_token.as_deref()
69    }
70    /// <p>A pagination token used to return a set of results. When the <code>Query</code> API is invoked using <code>NextToken</code>, that particular invocation is assumed to be a subsequent invocation of a prior call to <code>Query</code>, and a result set is returned. However, if the <code>Query</code> invocation only contains the <code>ClientToken</code>, that invocation of <code>Query</code> is assumed to be a new query run.</p>
71    /// <p>Note the following when using NextToken in a query:</p>
72    /// <ul>
73    /// <li>
74    /// <p>A pagination token can be used for up to five <code>Query</code> invocations, OR for a duration of up to 1 hour – whichever comes first.</p></li>
75    /// <li>
76    /// <p>Using the same <code>NextToken</code> will return the same set of records. To keep paginating through the result set, you must to use the most recent <code>nextToken</code>.</p></li>
77    /// <li>
78    /// <p>Suppose a <code>Query</code> invocation returns two <code>NextToken</code> values, <code>TokenA</code> and <code>TokenB</code>. If <code>TokenB</code> is used in a subsequent <code>Query</code> invocation, then <code>TokenA</code> is invalidated and cannot be reused.</p></li>
79    /// <li>
80    /// <p>To request a previous result set from a query after pagination has begun, you must re-invoke the Query API.</p></li>
81    /// <li>
82    /// <p>The latest <code>NextToken</code> should be used to paginate until <code>null</code> is returned, at which point a new <code>NextToken</code> should be used.</p></li>
83    /// <li>
84    /// <p>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 <code>Invalid pagination token</code> error.</p></li>
85    /// </ul>
86    pub fn next_token(&self) -> ::std::option::Option<&str> {
87        self.next_token.as_deref()
88    }
89    /// <p>The total number of rows to be returned in the <code>Query</code> output. The initial run of <code>Query</code> with a <code>MaxRows</code> value specified will return the result set of the query in two cases:</p>
90    /// <ul>
91    /// <li>
92    /// <p>The size of the result is less than <code>1MB</code>.</p></li>
93    /// <li>
94    /// <p>The number of rows in the result set is less than the value of <code>maxRows</code>.</p></li>
95    /// </ul>
96    /// <p>Otherwise, the initial invocation of <code>Query</code> only returns a <code>NextToken</code>, which can then be used in subsequent calls to fetch the result set. To resume pagination, provide the <code>NextToken</code> value in the subsequent command.</p>
97    /// <p>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 <code>MaxRows</code> is not provided, Timestream will send the necessary number of rows to meet the 1 MB limit.</p>
98    pub fn max_rows(&self) -> ::std::option::Option<i32> {
99        self.max_rows
100    }
101    /// <p>Encapsulates settings for enabling <code>QueryInsights</code>.</p>
102    /// <p>Enabling <code>QueryInsights</code> returns insights and metrics in addition to query results for the query that you executed. You can use <code>QueryInsights</code> to tune your query performance.</p>
103    pub fn query_insights(&self) -> ::std::option::Option<&crate::types::QueryInsights> {
104        self.query_insights.as_ref()
105    }
106}
107impl ::std::fmt::Debug for QueryInput {
108    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
109        let mut formatter = f.debug_struct("QueryInput");
110        formatter.field("query_string", &"*** Sensitive Data Redacted ***");
111        formatter.field("client_token", &"*** Sensitive Data Redacted ***");
112        formatter.field("next_token", &self.next_token);
113        formatter.field("max_rows", &self.max_rows);
114        formatter.field("query_insights", &self.query_insights);
115        formatter.finish()
116    }
117}
118impl QueryInput {
119    /// Creates a new builder-style object to manufacture [`QueryInput`](crate::operation::query::QueryInput).
120    pub fn builder() -> crate::operation::query::builders::QueryInputBuilder {
121        crate::operation::query::builders::QueryInputBuilder::default()
122    }
123}
124
125/// A builder for [`QueryInput`](crate::operation::query::QueryInput).
126#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
127#[non_exhaustive]
128pub struct QueryInputBuilder {
129    pub(crate) query_string: ::std::option::Option<::std::string::String>,
130    pub(crate) client_token: ::std::option::Option<::std::string::String>,
131    pub(crate) next_token: ::std::option::Option<::std::string::String>,
132    pub(crate) max_rows: ::std::option::Option<i32>,
133    pub(crate) query_insights: ::std::option::Option<crate::types::QueryInsights>,
134}
135impl QueryInputBuilder {
136    /// <p>The query to be run by Timestream.</p>
137    /// This field is required.
138    pub fn query_string(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
139        self.query_string = ::std::option::Option::Some(input.into());
140        self
141    }
142    /// <p>The query to be run by Timestream.</p>
143    pub fn set_query_string(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
144        self.query_string = input;
145        self
146    }
147    /// <p>The query to be run by Timestream.</p>
148    pub fn get_query_string(&self) -> &::std::option::Option<::std::string::String> {
149        &self.query_string
150    }
151    /// <p>Unique, case-sensitive string of up to 64 ASCII characters specified when a <code>Query</code> request is made. Providing a <code>ClientToken</code> makes the call to <code>Query</code> <i>idempotent</i>. This means that running the same query repeatedly will produce the same result. In other words, making multiple identical <code>Query</code> requests has the same effect as making a single request. When using <code>ClientToken</code> in a query, note the following:</p>
152    /// <ul>
153    /// <li>
154    /// <p>If the Query API is instantiated without a <code>ClientToken</code>, the Query SDK generates a <code>ClientToken</code> on your behalf.</p></li>
155    /// <li>
156    /// <p>If the <code>Query</code> invocation only contains the <code>ClientToken</code> but does not include a <code>NextToken</code>, that invocation of <code>Query</code> is assumed to be a new query run.</p></li>
157    /// <li>
158    /// <p>If the invocation contains <code>NextToken</code>, that particular invocation is assumed to be a subsequent invocation of a prior call to the Query API, and a result set is returned.</p></li>
159    /// <li>
160    /// <p>After 4 hours, any request with the same <code>ClientToken</code> is treated as a new request.</p></li>
161    /// </ul>
162    pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
163        self.client_token = ::std::option::Option::Some(input.into());
164        self
165    }
166    /// <p>Unique, case-sensitive string of up to 64 ASCII characters specified when a <code>Query</code> request is made. Providing a <code>ClientToken</code> makes the call to <code>Query</code> <i>idempotent</i>. This means that running the same query repeatedly will produce the same result. In other words, making multiple identical <code>Query</code> requests has the same effect as making a single request. When using <code>ClientToken</code> in a query, note the following:</p>
167    /// <ul>
168    /// <li>
169    /// <p>If the Query API is instantiated without a <code>ClientToken</code>, the Query SDK generates a <code>ClientToken</code> on your behalf.</p></li>
170    /// <li>
171    /// <p>If the <code>Query</code> invocation only contains the <code>ClientToken</code> but does not include a <code>NextToken</code>, that invocation of <code>Query</code> is assumed to be a new query run.</p></li>
172    /// <li>
173    /// <p>If the invocation contains <code>NextToken</code>, that particular invocation is assumed to be a subsequent invocation of a prior call to the Query API, and a result set is returned.</p></li>
174    /// <li>
175    /// <p>After 4 hours, any request with the same <code>ClientToken</code> is treated as a new request.</p></li>
176    /// </ul>
177    pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
178        self.client_token = input;
179        self
180    }
181    /// <p>Unique, case-sensitive string of up to 64 ASCII characters specified when a <code>Query</code> request is made. Providing a <code>ClientToken</code> makes the call to <code>Query</code> <i>idempotent</i>. This means that running the same query repeatedly will produce the same result. In other words, making multiple identical <code>Query</code> requests has the same effect as making a single request. When using <code>ClientToken</code> in a query, note the following:</p>
182    /// <ul>
183    /// <li>
184    /// <p>If the Query API is instantiated without a <code>ClientToken</code>, the Query SDK generates a <code>ClientToken</code> on your behalf.</p></li>
185    /// <li>
186    /// <p>If the <code>Query</code> invocation only contains the <code>ClientToken</code> but does not include a <code>NextToken</code>, that invocation of <code>Query</code> is assumed to be a new query run.</p></li>
187    /// <li>
188    /// <p>If the invocation contains <code>NextToken</code>, that particular invocation is assumed to be a subsequent invocation of a prior call to the Query API, and a result set is returned.</p></li>
189    /// <li>
190    /// <p>After 4 hours, any request with the same <code>ClientToken</code> is treated as a new request.</p></li>
191    /// </ul>
192    pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
193        &self.client_token
194    }
195    /// <p>A pagination token used to return a set of results. When the <code>Query</code> API is invoked using <code>NextToken</code>, that particular invocation is assumed to be a subsequent invocation of a prior call to <code>Query</code>, and a result set is returned. However, if the <code>Query</code> invocation only contains the <code>ClientToken</code>, that invocation of <code>Query</code> is assumed to be a new query run.</p>
196    /// <p>Note the following when using NextToken in a query:</p>
197    /// <ul>
198    /// <li>
199    /// <p>A pagination token can be used for up to five <code>Query</code> invocations, OR for a duration of up to 1 hour – whichever comes first.</p></li>
200    /// <li>
201    /// <p>Using the same <code>NextToken</code> will return the same set of records. To keep paginating through the result set, you must to use the most recent <code>nextToken</code>.</p></li>
202    /// <li>
203    /// <p>Suppose a <code>Query</code> invocation returns two <code>NextToken</code> values, <code>TokenA</code> and <code>TokenB</code>. If <code>TokenB</code> is used in a subsequent <code>Query</code> invocation, then <code>TokenA</code> is invalidated and cannot be reused.</p></li>
204    /// <li>
205    /// <p>To request a previous result set from a query after pagination has begun, you must re-invoke the Query API.</p></li>
206    /// <li>
207    /// <p>The latest <code>NextToken</code> should be used to paginate until <code>null</code> is returned, at which point a new <code>NextToken</code> should be used.</p></li>
208    /// <li>
209    /// <p>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 <code>Invalid pagination token</code> error.</p></li>
210    /// </ul>
211    pub fn next_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
212        self.next_token = ::std::option::Option::Some(input.into());
213        self
214    }
215    /// <p>A pagination token used to return a set of results. When the <code>Query</code> API is invoked using <code>NextToken</code>, that particular invocation is assumed to be a subsequent invocation of a prior call to <code>Query</code>, and a result set is returned. However, if the <code>Query</code> invocation only contains the <code>ClientToken</code>, that invocation of <code>Query</code> is assumed to be a new query run.</p>
216    /// <p>Note the following when using NextToken in a query:</p>
217    /// <ul>
218    /// <li>
219    /// <p>A pagination token can be used for up to five <code>Query</code> invocations, OR for a duration of up to 1 hour – whichever comes first.</p></li>
220    /// <li>
221    /// <p>Using the same <code>NextToken</code> will return the same set of records. To keep paginating through the result set, you must to use the most recent <code>nextToken</code>.</p></li>
222    /// <li>
223    /// <p>Suppose a <code>Query</code> invocation returns two <code>NextToken</code> values, <code>TokenA</code> and <code>TokenB</code>. If <code>TokenB</code> is used in a subsequent <code>Query</code> invocation, then <code>TokenA</code> is invalidated and cannot be reused.</p></li>
224    /// <li>
225    /// <p>To request a previous result set from a query after pagination has begun, you must re-invoke the Query API.</p></li>
226    /// <li>
227    /// <p>The latest <code>NextToken</code> should be used to paginate until <code>null</code> is returned, at which point a new <code>NextToken</code> should be used.</p></li>
228    /// <li>
229    /// <p>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 <code>Invalid pagination token</code> error.</p></li>
230    /// </ul>
231    pub fn set_next_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
232        self.next_token = input;
233        self
234    }
235    /// <p>A pagination token used to return a set of results. When the <code>Query</code> API is invoked using <code>NextToken</code>, that particular invocation is assumed to be a subsequent invocation of a prior call to <code>Query</code>, and a result set is returned. However, if the <code>Query</code> invocation only contains the <code>ClientToken</code>, that invocation of <code>Query</code> is assumed to be a new query run.</p>
236    /// <p>Note the following when using NextToken in a query:</p>
237    /// <ul>
238    /// <li>
239    /// <p>A pagination token can be used for up to five <code>Query</code> invocations, OR for a duration of up to 1 hour – whichever comes first.</p></li>
240    /// <li>
241    /// <p>Using the same <code>NextToken</code> will return the same set of records. To keep paginating through the result set, you must to use the most recent <code>nextToken</code>.</p></li>
242    /// <li>
243    /// <p>Suppose a <code>Query</code> invocation returns two <code>NextToken</code> values, <code>TokenA</code> and <code>TokenB</code>. If <code>TokenB</code> is used in a subsequent <code>Query</code> invocation, then <code>TokenA</code> is invalidated and cannot be reused.</p></li>
244    /// <li>
245    /// <p>To request a previous result set from a query after pagination has begun, you must re-invoke the Query API.</p></li>
246    /// <li>
247    /// <p>The latest <code>NextToken</code> should be used to paginate until <code>null</code> is returned, at which point a new <code>NextToken</code> should be used.</p></li>
248    /// <li>
249    /// <p>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 <code>Invalid pagination token</code> error.</p></li>
250    /// </ul>
251    pub fn get_next_token(&self) -> &::std::option::Option<::std::string::String> {
252        &self.next_token
253    }
254    /// <p>The total number of rows to be returned in the <code>Query</code> output. The initial run of <code>Query</code> with a <code>MaxRows</code> value specified will return the result set of the query in two cases:</p>
255    /// <ul>
256    /// <li>
257    /// <p>The size of the result is less than <code>1MB</code>.</p></li>
258    /// <li>
259    /// <p>The number of rows in the result set is less than the value of <code>maxRows</code>.</p></li>
260    /// </ul>
261    /// <p>Otherwise, the initial invocation of <code>Query</code> only returns a <code>NextToken</code>, which can then be used in subsequent calls to fetch the result set. To resume pagination, provide the <code>NextToken</code> value in the subsequent command.</p>
262    /// <p>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 <code>MaxRows</code> is not provided, Timestream will send the necessary number of rows to meet the 1 MB limit.</p>
263    pub fn max_rows(mut self, input: i32) -> Self {
264        self.max_rows = ::std::option::Option::Some(input);
265        self
266    }
267    /// <p>The total number of rows to be returned in the <code>Query</code> output. The initial run of <code>Query</code> with a <code>MaxRows</code> value specified will return the result set of the query in two cases:</p>
268    /// <ul>
269    /// <li>
270    /// <p>The size of the result is less than <code>1MB</code>.</p></li>
271    /// <li>
272    /// <p>The number of rows in the result set is less than the value of <code>maxRows</code>.</p></li>
273    /// </ul>
274    /// <p>Otherwise, the initial invocation of <code>Query</code> only returns a <code>NextToken</code>, which can then be used in subsequent calls to fetch the result set. To resume pagination, provide the <code>NextToken</code> value in the subsequent command.</p>
275    /// <p>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 <code>MaxRows</code> is not provided, Timestream will send the necessary number of rows to meet the 1 MB limit.</p>
276    pub fn set_max_rows(mut self, input: ::std::option::Option<i32>) -> Self {
277        self.max_rows = input;
278        self
279    }
280    /// <p>The total number of rows to be returned in the <code>Query</code> output. The initial run of <code>Query</code> with a <code>MaxRows</code> value specified will return the result set of the query in two cases:</p>
281    /// <ul>
282    /// <li>
283    /// <p>The size of the result is less than <code>1MB</code>.</p></li>
284    /// <li>
285    /// <p>The number of rows in the result set is less than the value of <code>maxRows</code>.</p></li>
286    /// </ul>
287    /// <p>Otherwise, the initial invocation of <code>Query</code> only returns a <code>NextToken</code>, which can then be used in subsequent calls to fetch the result set. To resume pagination, provide the <code>NextToken</code> value in the subsequent command.</p>
288    /// <p>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 <code>MaxRows</code> is not provided, Timestream will send the necessary number of rows to meet the 1 MB limit.</p>
289    pub fn get_max_rows(&self) -> &::std::option::Option<i32> {
290        &self.max_rows
291    }
292    /// <p>Encapsulates settings for enabling <code>QueryInsights</code>.</p>
293    /// <p>Enabling <code>QueryInsights</code> returns insights and metrics in addition to query results for the query that you executed. You can use <code>QueryInsights</code> to tune your query performance.</p>
294    pub fn query_insights(mut self, input: crate::types::QueryInsights) -> Self {
295        self.query_insights = ::std::option::Option::Some(input);
296        self
297    }
298    /// <p>Encapsulates settings for enabling <code>QueryInsights</code>.</p>
299    /// <p>Enabling <code>QueryInsights</code> returns insights and metrics in addition to query results for the query that you executed. You can use <code>QueryInsights</code> to tune your query performance.</p>
300    pub fn set_query_insights(mut self, input: ::std::option::Option<crate::types::QueryInsights>) -> Self {
301        self.query_insights = input;
302        self
303    }
304    /// <p>Encapsulates settings for enabling <code>QueryInsights</code>.</p>
305    /// <p>Enabling <code>QueryInsights</code> returns insights and metrics in addition to query results for the query that you executed. You can use <code>QueryInsights</code> to tune your query performance.</p>
306    pub fn get_query_insights(&self) -> &::std::option::Option<crate::types::QueryInsights> {
307        &self.query_insights
308    }
309    /// Consumes the builder and constructs a [`QueryInput`](crate::operation::query::QueryInput).
310    pub fn build(self) -> ::std::result::Result<crate::operation::query::QueryInput, ::aws_smithy_types::error::operation::BuildError> {
311        ::std::result::Result::Ok(crate::operation::query::QueryInput {
312            query_string: self.query_string,
313            client_token: self.client_token,
314            next_token: self.next_token,
315            max_rows: self.max_rows,
316            query_insights: self.query_insights,
317        })
318    }
319}
320impl ::std::fmt::Debug for QueryInputBuilder {
321    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
322        let mut formatter = f.debug_struct("QueryInputBuilder");
323        formatter.field("query_string", &"*** Sensitive Data Redacted ***");
324        formatter.field("client_token", &"*** Sensitive Data Redacted ***");
325        formatter.field("next_token", &self.next_token);
326        formatter.field("max_rows", &self.max_rows);
327        formatter.field("query_insights", &self.query_insights);
328        formatter.finish()
329    }
330}