This is an automated email from the ASF dual-hosted git repository. maximebeauchemin 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 3b7e0a9 [sql lab] preserve schema through visualize flow (#4742) 3b7e0a9 is described below commit 3b7e0a951a0ce2e7af10de74914e45eaa1d8ff40 Author: Maxime Beauchemin <maximebeauche...@gmail.com> AuthorDate: Wed Apr 4 13:38:37 2018 -0700 [sql lab] preserve schema through visualize flow (#4742) * [sql lab] preserve schema through visualize flow https://github.com/apache/incubator-superset/pull/4696 got tangled into refactoring views out of views/core.py and onto views/sql_lab.py This is the same PR without the refactoring. * Fix lint --- .../javascripts/SqlLab/components/QuerySearch.jsx | 2 +- .../SqlLab/components/VisualizeModal.jsx | 3 +++ .../javascripts/sqllab/VisualizeModal_spec.jsx | 1 + .../assets/spec/javascripts/sqllab/fixtures.js | 2 +- superset/views/core.py | 1 + tests/sqllab_tests.py | 31 ++++++++++++++++++++++ 6 files changed, 38 insertions(+), 2 deletions(-) diff --git a/superset/assets/javascripts/SqlLab/components/QuerySearch.jsx b/superset/assets/javascripts/SqlLab/components/QuerySearch.jsx index a3e4bf4..9d36d85 100644 --- a/superset/assets/javascripts/SqlLab/components/QuerySearch.jsx +++ b/superset/assets/javascripts/SqlLab/components/QuerySearch.jsx @@ -13,7 +13,7 @@ const $ = window.$ = require('jquery'); const propTypes = { actions: PropTypes.object.isRequired, - height: PropTypes.number.isRequired, + height: PropTypes.string.isRequired, }; class QuerySearch extends React.PureComponent { diff --git a/superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx b/superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx index 1c4315f..d97831c 100644 --- a/superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx +++ b/superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx @@ -31,6 +31,7 @@ const propTypes = { onHide: PropTypes.func, query: PropTypes.object, show: PropTypes.bool, + schema: PropTypes.string, datasource: PropTypes.string, errorMessage: PropTypes.string, timeout: PropTypes.number, @@ -48,6 +49,7 @@ class VisualizeModal extends React.PureComponent { chartType: CHART_TYPES[0], datasourceName: this.datasourceName(), columns: this.getColumnFromProps(), + schema: props.query ? props.query.schema : null, hints: [], }; } @@ -126,6 +128,7 @@ class VisualizeModal extends React.PureComponent { buildVizOptions() { return { chartType: this.state.chartType.value, + schema: this.state.schema, datasourceName: this.state.datasourceName, columns: this.state.columns, sql: this.props.query.sql, diff --git a/superset/assets/spec/javascripts/sqllab/VisualizeModal_spec.jsx b/superset/assets/spec/javascripts/sqllab/VisualizeModal_spec.jsx index 6c9fc5b..7c99079 100644 --- a/superset/assets/spec/javascripts/sqllab/VisualizeModal_spec.jsx +++ b/superset/assets/spec/javascripts/sqllab/VisualizeModal_spec.jsx @@ -269,6 +269,7 @@ describe('VisualizeModal', () => { chartType: wrapper.state().chartType.value, datasourceName: wrapper.state().datasourceName, columns: wrapper.state().columns, + schema: 'test_schema', sql: wrapper.instance().props.query.sql, dbId: wrapper.instance().props.query.dbId, }); diff --git a/superset/assets/spec/javascripts/sqllab/fixtures.js b/superset/assets/spec/javascripts/sqllab/fixtures.js index 5f9df8d..2fef334 100644 --- a/superset/assets/spec/javascripts/sqllab/fixtures.js +++ b/superset/assets/spec/javascripts/sqllab/fixtures.js @@ -197,7 +197,7 @@ export const queries = [ rows: 42, endDttm: 1476910566798, limit_reached: false, - schema: null, + schema: 'test_schema', errorMessage: null, db: 'main', user: 'admin', diff --git a/superset/views/core.py b/superset/views/core.py index 91a420a..c2099e3 100755 --- a/superset/views/core.py +++ b/superset/views/core.py @@ -2160,6 +2160,7 @@ class Superset(BaseSupersetView): if not table: table = SqlaTable(table_name=table_name) table.database_id = data.get('dbId') + table.schema = data.get('schema') q = SupersetQuery(data.get('sql')) table.sql = q.stripped() db.session.add(table) diff --git a/tests/sqllab_tests.py b/tests/sqllab_tests.py index afab140..4626f53 100644 --- a/tests/sqllab_tests.py +++ b/tests/sqllab_tests.py @@ -226,6 +226,37 @@ class SqlLabTests(SupersetTestCase): self.assertEquals(len(data), cdf.size) self.assertEquals(len(cols), len(cdf.columns)) + def test_sqllab_viz(self): + payload = { + 'chartType': 'dist_bar', + 'datasourceName': 'test_viz_flow_table', + 'schema': 'superset', + 'columns': { + 'viz_type': { + 'is_date': False, + 'type': 'STRING', + 'nam:qe': 'viz_type', + 'is_dim': True, + }, + 'ccount': { + 'is_date': False, + 'type': 'OBJECT', + 'name': 'ccount', + 'is_dim': True, + 'agg': 'sum', + }, + }, + 'sql': """\ + SELECT viz_type, count(1) as ccount + FROM slices + WHERE viz_type LIKE '%%a%%' + GROUP BY viz_type""", + 'dbId': 1, + } + data = {'data': json.dumps(payload)} + resp = self.get_json_resp('/superset/sqllab_viz/', data=data) + self.assertIn('table_id', resp) + if __name__ == '__main__': unittest.main() -- To stop receiving notification emails like this one, please contact maximebeauche...@apache.org.