-
Notifications
You must be signed in to change notification settings - Fork 5.5k
HTTP Protocol
Timothy Meehan edited this page May 22, 2019
·
8 revisions
- Make a
POSTto/v1/statementwith the query - The
POSTwill require the headerX-Presto-User(generally populated with username) - You get back a JSON document that might contain a
nextUrilink - The document will contain
columnsif available - The document will contain
dataif available - The
columnsfield will always be set ifdatais set (and usually earlier) - If there is no
nextUrilink, then the query is finished (either successfully completed or failed) - Otherwise, keep following the
nextUrilink - The
statusfield is only for displaying to humans as a hint about the query's state on the server. It is not in sync in the query state from the client's perspective and must not be used to determine whether the query is finished. - The document will contain an
errorfield if the query has failed -- this is how you distinguish between a successfully completed query and a failed query when there is no morenextUrilink - If the response is an HTTP
503, sleep 50-100ms and try again - Otherwise, if the response is anything other than an HTTP
200with Content-Typeapplication/json, then consider the query failed (this means something has gone wrong, for example, you might receive a404or410) - The document format is exactly the same for the POST response and the
nextUrilink response -- you might getdataimmediately as a response to thePOST, or it might take many requests for a longer query -
SET SESSIONstatements- Will return an
updateType(top-level key of the returned JSON) of "SET SESSION", and a single "true" in the data list - Will return the key-value pair in the header
X-Presto-Set-Sessionin the formatkey=value - The
updateTypeand header may exist in the first response, or a subsequent response from anextUri
- Will return an
- Statements submitted following
SET SESSIONstatements should include any key-value pairs (returned by the serversX-Presto-Set-Session) in the headerX-Presto-Session. Multiple pairs can be comma-separated and included in a single header. -
RESET SESSIONstatements- Will return an
updateType(top-level key of the returned JSON) of "RESET SESSION", and a single "true" in the data list - Will return the session key in the header
X-Presto-Clear-Session - The
updateTypeand header may exist in the first response, or a subsequent response from anextUri
- Will return an
- Statements submitted following
RESET SESSIONstatements should no longer include any key-value pairs previously added by SET SESSION statements. - Cancel a running query with a
DELETEto/v1/query/<query-id>
The top level JSON document returned is QueryResults. You can find the structure of this and related documents here: