You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ti...@apache.org on 2018/06/20 03:33:28 UTC

[incubator-superset] branch master updated: [sqllab] Fix sql lab resolution link (#5216)

This is an automated email from the ASF dual-hosted git repository.

timi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 93cdf60  [sqllab] Fix sql lab resolution link (#5216)
93cdf60 is described below

commit 93cdf60920dc6234771876a195838c6458b80e3d
Author: timifasubaa <30...@users.noreply.github.com>
AuthorDate: Tue Jun 19 20:33:24 2018 -0700

    [sqllab] Fix sql lab resolution link (#5216)
    
    * pass link
    
    * update frontend to show link differently
    
    * nits
---
 superset/assets/src/SqlLab/actions.js               | 16 ++++++++++++----
 superset/assets/src/SqlLab/components/ResultSet.jsx |  6 +++++-
 superset/assets/src/SqlLab/components/SouthPane.jsx |  1 -
 superset/assets/src/SqlLab/reducers.js              |  7 ++++++-
 superset/sql_lab.py                                 |  5 ++---
 5 files changed, 25 insertions(+), 10 deletions(-)

diff --git a/superset/assets/src/SqlLab/actions.js b/superset/assets/src/SqlLab/actions.js
index 6449470..540bfe7 100644
--- a/superset/assets/src/SqlLab/actions.js
+++ b/superset/assets/src/SqlLab/actions.js
@@ -78,8 +78,8 @@ export function querySuccess(query, results) {
   return { type: QUERY_SUCCESS, query, results };
 }
 
-export function queryFailed(query, msg) {
-  return { type: QUERY_FAILED, query, msg };
+export function queryFailed(query, msg, link) {
+  return { type: QUERY_FAILED, query, msg, link };
 }
 
 export function stopQuery(query) {
@@ -98,6 +98,14 @@ export function requestQueryResults(query) {
   return { type: REQUEST_QUERY_RESULTS, query };
 }
 
+function getErrorLink(err) {
+  let link = '';
+  if (err.responseJSON && err.responseJSON.link) {
+    link = err.responseJSON.link;
+  }
+  return link;
+}
+
 export function fetchQueryResults(query) {
   return function (dispatch) {
     dispatch(requestQueryResults(query));
@@ -114,7 +122,7 @@ export function fetchQueryResults(query) {
         if (err.responseJSON && err.responseJSON.error) {
           msg = err.responseJSON.error;
         }
-        dispatch(queryFailed(query, msg));
+        dispatch(queryFailed(query, msg, getErrorLink(err)));
       },
     });
   };
@@ -166,7 +174,7 @@ export function runQuery(query) {
         if (msg.indexOf('CSRF token') > 0) {
           msg = COMMON_ERR_MESSAGES.SESSION_TIMED_OUT;
         }
-        dispatch(queryFailed(query, msg));
+        dispatch(queryFailed(query, msg, getErrorLink(msg)));
       },
     });
   };
diff --git a/superset/assets/src/SqlLab/components/ResultSet.jsx b/superset/assets/src/SqlLab/components/ResultSet.jsx
index f36a164..4959921 100644
--- a/superset/assets/src/SqlLab/components/ResultSet.jsx
+++ b/superset/assets/src/SqlLab/components/ResultSet.jsx
@@ -155,7 +155,11 @@ export default class ResultSet extends React.PureComponent {
     if (query.state === 'stopped') {
       return <Alert bsStyle="warning">Query was stopped</Alert>;
     } else if (query.state === 'failed') {
-      return <Alert bsStyle="danger">{query.errorMessage}</Alert>;
+      return (
+        <Alert bsStyle="danger">
+          {query.errorMessage}
+          {query.link && <a href={query.link}> {t('(Common errors and their resolutions)')} </a>}
+        </Alert>);
     } else if (query.state === 'success' && query.ctas) {
       return (
         <div>
diff --git a/superset/assets/src/SqlLab/components/SouthPane.jsx b/superset/assets/src/SqlLab/components/SouthPane.jsx
index 318b0af..55ff2a3 100644
--- a/superset/assets/src/SqlLab/components/SouthPane.jsx
+++ b/superset/assets/src/SqlLab/components/SouthPane.jsx
@@ -51,7 +51,6 @@ class SouthPane extends React.PureComponent {
     } else {
       results = <Alert bsStyle="info">{t('Run a query to display results here')}</Alert>;
     }
-
     const dataPreviewTabs = props.dataPreviewQueries.map(query => (
       <Tab
         title={t('Preview for %s', query.tableName)}
diff --git a/superset/assets/src/SqlLab/reducers.js b/superset/assets/src/SqlLab/reducers.js
index 9c67f38..690126d 100644
--- a/superset/assets/src/SqlLab/reducers.js
+++ b/superset/assets/src/SqlLab/reducers.js
@@ -181,7 +181,12 @@ export const sqlLabReducer = function (state, action) {
       if (action.query.state === 'stopped') {
         return state;
       }
-      const alts = { state: 'failed', errorMessage: action.msg, endDttm: now() };
+      const alts = {
+        state: 'failed',
+        errorMessage: action.msg,
+        endDttm: now(),
+        link: action.link,
+      };
       return alterInObject(state, 'queries', action.query, alts);
     },
     [actions.SET_ACTIVE_QUERY_EDITOR]() {
diff --git a/superset/sql_lab.py b/superset/sql_lab.py
index c9f07ae..df00a2b 100644
--- a/superset/sql_lab.py
+++ b/superset/sql_lab.py
@@ -152,9 +152,6 @@ def execute_sql(
     def handle_error(msg):
         """Local method handling error while processing the SQL"""
         troubleshooting_link = config['TROUBLESHOOTING_LINK']
-        msg = 'Error: {}. You can find common superset errors and their \
-            resolutions at: {}'.format(msg, troubleshooting_link) \
-            if troubleshooting_link else msg
         query.error_message = msg
         query.status = QueryStatus.FAILED
         query.tmp_table_name = None
@@ -163,6 +160,8 @@ def execute_sql(
             'status': query.status,
             'error': msg,
         })
+        if troubleshooting_link:
+            payload['link'] = troubleshooting_link
         return payload
 
     if store_results and not results_backend: