From 6d5d03e592087df497a85d1a10447166cc6ab628 Mon Sep 17 00:00:00 2001 From: Diego Medina Date: Wed, 13 Apr 2022 12:20:32 -0400 Subject: [PATCH] fix(sql lab): display the 'View Results' button consistently in the history tab on sync mode (#19362) * fix(sql lab): display the 'View Results' button in the history tab when running sync queries * pr comment --- .../src/SqlLab/components/ResultSet/index.tsx | 11 +++++++++-- superset-frontend/src/SqlLab/reducers/sqlLab.js | 2 ++ superset/sql_lab.py | 2 ++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/superset-frontend/src/SqlLab/components/ResultSet/index.tsx b/superset-frontend/src/SqlLab/components/ResultSet/index.tsx index b81b4714628c..240f110f5d4f 100644 --- a/superset-frontend/src/SqlLab/components/ResultSet/index.tsx +++ b/superset-frontend/src/SqlLab/components/ResultSet/index.tsx @@ -247,9 +247,16 @@ export default class ResultSet extends React.PureComponent< this.clearQueryResults(nextProps.query), ); } + + // Only fetch results if the result key change + // If we didn't have a result key before, then the results are loaded elsewhere + // so we can skip it, unless the query id changed, in that case we should + // refetch regardless. if ( - nextProps.query.resultsKey && - nextProps.query.resultsKey !== this.props.query.resultsKey + (this.props.query.resultsKey && + nextProps.query.resultsKey && + nextProps.query.resultsKey !== this.props.query.resultsKey) || + (nextProps.query.id !== this.props.query.id && nextProps.query.resultsKey) ) { this.fetchResults(nextProps.query); } diff --git a/superset-frontend/src/SqlLab/reducers/sqlLab.js b/superset-frontend/src/SqlLab/reducers/sqlLab.js index 923caaf96152..1c417af8b871 100644 --- a/superset-frontend/src/SqlLab/reducers/sqlLab.js +++ b/superset-frontend/src/SqlLab/reducers/sqlLab.js @@ -328,8 +328,10 @@ export default function sqlLabReducer(state = {}, action) { if (action.query.state === 'stopped') { return state; } + const alts = { endDttm: now(), + resultsKey: action?.results?.query?.resultsKey, progress: 100, results: action.results, rows: action?.results?.query?.rows || 0, diff --git a/superset/sql_lab.py b/superset/sql_lab.py index 613db963e31c..d3e08de92a9c 100644 --- a/superset/sql_lab.py +++ b/superset/sql_lab.py @@ -528,6 +528,8 @@ def execute_sql_statements( # pylint: disable=too-many-arguments, too-many-loca if store_results and results_backend: key = str(uuid.uuid4()) + payload["query"]["resultsKey"] = key + logger.info( "Query %s: Storing results in results backend, key: %s", str(query_id), key )