def _process_error(self, error, query_id): error_type = error["errorType"] if error_type == "EXTERNAL": raise exceptions.PrestoExternalError(error, query_id) elif error_type == "USER_ERROR": return exceptions.PrestoUserError(error, query_id) return exceptions.PrestoQueryError(error, query_id)
def execute(self): # type: () -> PrestoResult """Initiate a Presto query by sending the SQL statement This is the first HTTP request sent to the coordinator. It sets the query_id and returns a Result object used to track the rows returned by the query. To fetch all rows, call fetch() until is_finished is true. """ if self._cancelled: raise exceptions.PrestoUserError("Query has been cancelled", self.query_id) response = self._request.post(self._sql) status = self._request.process(response) self.query_id = status.id self._stats.update({u"queryId": self.query_id}) self._stats.update(status.stats) self._warnings = getattr(status, "warnings", []) if status.next_uri is None: self._finished = True self._result = PrestoResult(self, status.rows) return self._result