mirror of https://github.com/apache/druid.git
restore information about truncated responses to sql api (#16001)
Co-authored-by: 317brian <53799971+317brian@users.noreply.github.com> Co-authored-by: Victoria Lim <lim.t.victoria@gmail.com>
This commit is contained in:
parent
ae022cc0c9
commit
ebf3bdd909
|
@ -53,11 +53,25 @@ The request body takes the following properties:
|
|||
* `query`: SQL query string.
|
||||
|
||||
* `resultFormat`: String that indicates the format to return query results. Select one of the following formats:
|
||||
* `object`: Returns a JSON array of JSON objects with the HTTP response header `Content-Type: application/json`.
|
||||
* `array`: Returns a JSON array of JSON arrays with the HTTP response header `Content-Type: application/json`.
|
||||
* `objectLines`: Returns newline-delimited JSON objects with a trailing blank line. Returns the HTTP response header `Content-Type: text/plain`.
|
||||
* `arrayLines`: Returns newline-delimited JSON arrays with a trailing blank line. Returns the HTTP response header `Content-Type: text/plain`.
|
||||
* `csv`: Returns a comma-separated values with one row per line and a trailing blank line. Returns the HTTP response header `Content-Type: text/csv`.
|
||||
* `object`: Returns a JSON array of JSON objects with the HTTP response header `Content-Type: application/json`.
|
||||
Object field names match the columns returned by the SQL query in the same order as the SQL query.
|
||||
|
||||
* `array`: Returns a JSON array of JSON arrays with the HTTP response header `Content-Type: application/json`.
|
||||
Each inner array has elements matching the columns returned by the SQL query, in order.
|
||||
|
||||
* `objectLines`: Returns newline-delimited JSON objects with the HTTP response header `Content-Type: text/plain`.
|
||||
Newline separation facilitates parsing the entire response set as a stream if you don't have a streaming JSON parser.
|
||||
This format includes a single trailing newline character so you can detect a truncated response.
|
||||
|
||||
* `arrayLines`: Returns newline-delimited JSON arrays with the HTTP response header `Content-Type: text/plain`.
|
||||
Newline separation facilitates parsing the entire response set as a stream if you don't have a streaming JSON parser.
|
||||
This format includes a single trailing newline character so you can detect a truncated response.
|
||||
|
||||
* `csv`: Returns comma-separated values with one row per line. Sent with the HTTP response header `Content-Type: text/csv`.
|
||||
Druid uses double quotes to escape individual field values. For example, a value with a comma returns `"A,B"`.
|
||||
If the field value contains a double quote character, Druid escapes it with a second double quote character.
|
||||
For example, `foo"bar` becomes `foo""bar`.
|
||||
This format includes a single trailing newline character so you can detect a truncated response.
|
||||
|
||||
* `header`: Boolean value that determines whether to return information on column names. When set to `true`, Druid returns the column names as the first row of the results. To also get information on the column types, set `typesHeader` or `sqlTypesHeader` to `true`. For a comparative overview of data formats and configurations for the header, see the [Query output format](#query-output-format) table.
|
||||
|
||||
|
@ -124,6 +138,16 @@ The request body takes the following properties:
|
|||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
#### Client-side error handling and truncated responses
|
||||
|
||||
Druid reports errors that occur before the response body is sent as JSON with an HTTP 500 status code. The errors are reported using the same format as [native Druid query errors](../querying/querying.md#query-errors).
|
||||
If an error occurs while Druid is sending the response body, the server handling the request stops the response midstream and logs an error.
|
||||
|
||||
This means that when you call the SQL API, you must properly handle response truncation.
|
||||
For `object` and `array` formats, truncated responses are invalid JSON.
|
||||
For line-oriented formats, Druid includes a newline character as the final character of every complete response. Absence of a final newline character indicates a truncated response.
|
||||
|
||||
If you detect a truncated response, treat it as an error.
|
||||
|
||||
---
|
||||
|
||||
|
|
Loading…
Reference in New Issue