317brian commented on code in PR #16001:
URL: https://github.com/apache/druid/pull/16001#discussion_r1515085847


##########
docs/api-reference/sql-api.md:
##########
@@ -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 trailer of one blank 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 trailer of one blank 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"`.

Review Comment:
   ```suggestion
        Druid uses double quotes to escape individual field values. For 
example, a value with a comma returns `"A,B"`.
   ```



##########
docs/api-reference/sql-api.md:
##########
@@ -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 trailer of one blank newline character so you can 
detect a truncated response.

Review Comment:
   ```suggestion
        This format includes a single trailing newline character so you can 
detect a truncated response.
   ```



##########
docs/api-reference/sql-api.md:
##########
@@ -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 trailer of one blank newline character so you can 
detect a truncated response.

Review Comment:
   I've never seen it called a trailer? It's usually described as a trailing 
character. Same comment for all appearances of this line



##########
docs/api-reference/sql-api.md:
##########
@@ -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, 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 will be invalid JSON.

Review Comment:
   ```suggestion
   For  `object` and `array` formats, truncated responses are invalid JSON.
   ```



##########
docs/api-reference/sql-api.md:
##########
@@ -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 trailer of one blank 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 trailer of one blank 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`.

Review Comment:
   ```suggestion
        For example, `foo"bar` becomes `foo""bar`.
   ```



##########
docs/api-reference/sql-api.md:
##########
@@ -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, using the same format as [native Druid query 
errors](../querying/querying.md#query-errors).

Review Comment:
   ```suggestion
   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).
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to