This is an automated email from the ASF dual-hosted git repository. michaelsmolina pushed a commit to branch 3.0 in repository https://gitbox.apache.org/repos/asf/superset.git
commit c56948e1f152de381c692cfdf77d4692bfd6fff0 Author: JUST.in DO IT <[email protected]> AuthorDate: Fri Sep 1 11:28:19 2023 -0700 fix(sqllab): Invalid start date (#25133) (cherry picked from commit 8b2a408dea5516cc5163446280ad10c165da0f92) --- .../src/SqlLab/components/QueryAutoRefresh/index.tsx | 1 + .../src/SqlLab/components/QueryTable/index.tsx | 2 +- .../src/SqlLab/components/SaveDatasetModal/index.tsx | 2 +- superset-frontend/src/SqlLab/reducers/getInitialState.js | 15 ++++++++++++++- superset-frontend/src/SqlLab/reducers/sqlLab.js | 6 ++++++ superset-frontend/src/SqlLab/reducers/sqlLab.test.js | 10 +++++++++- 6 files changed, 32 insertions(+), 4 deletions(-) diff --git a/superset-frontend/src/SqlLab/components/QueryAutoRefresh/index.tsx b/superset-frontend/src/SqlLab/components/QueryAutoRefresh/index.tsx index d8975e520c..f4808f52fd 100644 --- a/superset-frontend/src/SqlLab/components/QueryAutoRefresh/index.tsx +++ b/superset-frontend/src/SqlLab/components/QueryAutoRefresh/index.tsx @@ -80,6 +80,7 @@ function QueryAutoRefresh({ SupersetClient.get({ endpoint: `/api/v1/query/updated_since?q=${params}`, timeout: QUERY_TIMEOUT_LIMIT, + parseMethod: 'json-bigint', }) .then(({ json }) => { if (json) { diff --git a/superset-frontend/src/SqlLab/components/QueryTable/index.tsx b/superset-frontend/src/SqlLab/components/QueryTable/index.tsx index 96e1f4568d..3eb58bd906 100644 --- a/superset-frontend/src/SqlLab/components/QueryTable/index.tsx +++ b/superset-frontend/src/SqlLab/components/QueryTable/index.tsx @@ -213,7 +213,7 @@ const QueryTable = ({ {q.db} </Button> ); - q.started = moment(q.startDttm).format('HH:mm:ss'); + q.started = moment(q.startDttm).format('L HH:mm:ss'); q.querylink = ( <Button buttonSize="small" diff --git a/superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx b/superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx index 7f605967ad..eba873c83b 100644 --- a/superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx +++ b/superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx @@ -163,7 +163,7 @@ export const SaveDatasetModal = ({ ); const getDefaultDatasetName = () => - `${datasource?.name || UNTITLED} ${moment().format('MM/DD/YYYY HH:mm:ss')}`; + `${datasource?.name || UNTITLED} ${moment().format('L HH:mm:ss')}`; const [datasetName, setDatasetName] = useState(getDefaultDatasetName()); const [newOrOverwrite, setNewOrOverwrite] = useState( DatasetRadioState.SAVE_NEW, diff --git a/superset-frontend/src/SqlLab/reducers/getInitialState.js b/superset-frontend/src/SqlLab/reducers/getInitialState.js index edb778fcfa..b6fdbe1491 100644 --- a/superset-frontend/src/SqlLab/reducers/getInitialState.js +++ b/superset-frontend/src/SqlLab/reducers/getInitialState.js @@ -135,7 +135,20 @@ export default function getInitialState({ }); } - const queries = { ...queries_ }; + const queries = Object.fromEntries( + Object.entries(queries_ || {}).map(([queryId, query]) => [ + queryId, + { + ...query, + ...(query.startDttm && { + startDttm: Number(query.startDttm), + }), + ...(query.endDttm && { + endDttm: Number(query.endDttm), + }), + }, + ]), + ); /** * If the `SQLLAB_BACKEND_PERSISTENCE` feature flag is off, or if the user diff --git a/superset-frontend/src/SqlLab/reducers/sqlLab.js b/superset-frontend/src/SqlLab/reducers/sqlLab.js index 2b82f42d09..66850ce079 100644 --- a/superset-frontend/src/SqlLab/reducers/sqlLab.js +++ b/superset-frontend/src/SqlLab/reducers/sqlLab.js @@ -627,6 +627,12 @@ export default function sqlLabReducer(state = {}, action) { newQueries[id] = { ...state.queries[id], ...changedQuery, + ...(changedQuery.startDttm && { + startDttm: Number(changedQuery.startDttm), + }), + ...(changedQuery.endDttm && { + endDttm: Number(changedQuery.endDttm), + }), // race condition: // because of async behavior, sql lab may still poll a couple of seconds // when it started fetching or finished rendering results diff --git a/superset-frontend/src/SqlLab/reducers/sqlLab.test.js b/superset-frontend/src/SqlLab/reducers/sqlLab.test.js index 40597c41b0..89ddc61f8c 100644 --- a/superset-frontend/src/SqlLab/reducers/sqlLab.test.js +++ b/superset-frontend/src/SqlLab/reducers/sqlLab.test.js @@ -364,16 +364,24 @@ describe('sqlLabReducer', () => { expect(Object.keys(newState.queries)).toHaveLength(0); }); it('should refresh queries when polling returns new results', () => { + const startDttmInStr = '1693433503447.166992'; + const endDttmInStr = '1693433503500.23132'; newState = sqlLabReducer( { ...newState, queries: { abcd: {} }, }, actions.refreshQueries({ - abcd: query, + abcd: { + ...query, + startDttm: startDttmInStr, + endDttm: endDttmInStr, + }, }), ); expect(newState.queries.abcd.changed_on).toBe(DENORMALIZED_CHANGED_ON); + expect(newState.queries.abcd.startDttm).toBe(Number(startDttmInStr)); + expect(newState.queries.abcd.endDttm).toBe(Number(endDttmInStr)); expect(newState.queriesLastUpdate).toBe(CHANGED_ON_TIMESTAMP); }); it('should refresh queries when polling returns empty', () => {
