Skip to content

Commit 5cf13af

Browse files
apolloninDmitriy Apollonin
andauthored
Improve visibility of error message during schema retrieval (#5879)
* handle query execution error in one place. increase ability to debug issues with schema retrieval * split message and details for error reporting Co-authored-by: Dmitriy Apollonin <[email protected]>
1 parent 3280991 commit 5cf13af

22 files changed

+31
-24
lines changed

redash/query_runner/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,13 @@ def fetch_columns(self, columns):
234234
def get_schema(self, get_stats=False):
235235
raise NotSupported()
236236

237+
def _handle_run_query_error(self, error):
238+
if error is None:
239+
return
240+
241+
logger.error(error)
242+
raise Exception(f"Error during query execution. Reason: {error}")
243+
237244
def _run_query_internal(self, query):
238245
results, error = self.run_query(query, None)
239246

redash/query_runner/athena.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ def get_schema(self, get_stats=False):
206206

207207
results, error = self.run_query(query, None)
208208
if error is not None:
209-
raise Exception("Failed getting schema.")
209+
self._handle_run_query_error(error)
210210

211211
results = json_loads(results)
212212
for row in results["rows"]:

redash/query_runner/azure_kusto.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ def get_schema(self, get_stats=False):
138138
results, error = self.run_query(query, None)
139139

140140
if error is not None:
141-
raise Exception("Failed getting schema.")
141+
self._handle_run_query_error(error)
142142

143143
results = json_loads(results)
144144

redash/query_runner/big_query.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ def get_schema(self, get_stats=False):
305305
query = '\nUNION ALL\n'.join(queries)
306306
results, error = self.run_query(query, None)
307307
if error is not None:
308-
raise Exception("Failed getting schema.")
308+
self._handle_run_query_error(error)
309309

310310
results = json_loads(results)
311311
for row in results["rows"]:
@@ -341,7 +341,7 @@ def run_query(self, query, user):
341341
json_data = json_dumps(data, ignore_nan=True)
342342
except apiclient.errors.HttpError as e:
343343
json_data = None
344-
if e.resp.status == 400:
344+
if e.resp.status in [400, 404]:
345345
error = json_loads(e.content)["error"]["message"]
346346
else:
347347
error = e.content

redash/query_runner/clickhouse.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def _get_tables(self, schema):
7979
results, error = self.run_query(query, None)
8080

8181
if error is not None:
82-
raise Exception("Failed getting schema.")
82+
self._handle_run_query_error(error)
8383

8484
results = json_loads(results)
8585

redash/query_runner/databricks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ def get_databases(self):
154154
results, error = self.run_query(query, None)
155155

156156
if error is not None:
157-
raise Exception("Failed getting schema.")
157+
self._handle_run_query_error(error)
158158

159159
results = json_loads(results)
160160

redash/query_runner/db2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def _get_definitions(self, schema, query):
6565
results, error = self.run_query(query, None)
6666

6767
if error is not None:
68-
raise Exception("Failed getting schema.")
68+
self._handle_run_query_error(error)
6969

7070
results = json_loads(results)
7171

redash/query_runner/drill.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ def get_schema(self, get_stats=False):
135135
results, error = self.run_query(query, None)
136136

137137
if error is not None:
138-
raise Exception("Failed getting schema.")
138+
self._handle_run_query_error(error)
139139

140140
results = json_loads(results)
141141

redash/query_runner/druid.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def get_schema(self, get_stats=False):
7777
results, error = self.run_query(query, None)
7878

7979
if error is not None:
80-
raise Exception("Failed getting schema.")
80+
self._handle_run_query_error(error)
8181

8282
schema = {}
8383
results = json_loads(results)

redash/query_runner/firebolt.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def get_schema(self, get_stats=False):
7676
results, error = self.run_query(query, None)
7777

7878
if error is not None:
79-
raise Exception("Failed getting schema.")
79+
self._handle_run_query_error(error)
8080

8181
schema = {}
8282
results = json_loads(results)

0 commit comments

Comments
 (0)