def handle_query_error( ex: Exception, query: Query, session: Session, payload: Optional[Dict[str, Any]] = None, prefix_message: str = "", ) -> Dict[str, Any]: """Local method handling error while processing the SQL""" payload = payload or {} msg = f"{prefix_message} {str(ex)}".strip() troubleshooting_link = config["TROUBLESHOOTING_LINK"] query.error_message = msg query.status = QueryStatus.FAILED query.tmp_table_name = None # extract DB-specific errors (invalid column, eg) if isinstance(ex, SupersetErrorException): errors = [ex.error] elif isinstance(ex, SupersetErrorsException): errors = ex.errors else: errors = query.database.db_engine_spec.extract_errors(str(ex)) errors_payload = [dataclasses.asdict(error) for error in errors] if errors: query.set_extra_json_key("errors", errors_payload) session.commit() payload.update({"status": query.status, "error": msg, "errors": errors_payload}) if troubleshooting_link: payload["link"] = troubleshooting_link return payload
def handle_query_error( msg: str, query: Query, session: Session, payload: Optional[Dict[str, Any]] = None) -> Dict[str, Any]: """Local method handling error while processing the SQL""" payload = payload or {} troubleshooting_link = config["TROUBLESHOOTING_LINK"] query.error_message = msg query.status = QueryStatus.FAILED query.tmp_table_name = None # extract DB-specific errors (invalid column, eg) errors = [ dataclasses.asdict(error) for error in query.database.db_engine_spec.extract_errors(msg) ] if errors: query.set_extra_json_key("errors", errors) session.commit() payload.update({"status": query.status, "error": msg, "errors": errors}) if troubleshooting_link: payload["link"] = troubleshooting_link return payload
def handle_query_error( msg: str, query: Query, session: Session, payload: Optional[Dict[str, Any]] = None ) -> Dict[str, Any]: """Local method handling error while processing the SQL""" payload = payload or {} troubleshooting_link = config["TROUBLESHOOTING_LINK"] query.error_message = msg query.status = QueryStatus.FAILED query.tmp_table_name = None session.commit() payload.update({"status": query.status, "error": msg}) if troubleshooting_link: payload["link"] = troubleshooting_link return payload