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.

Reply via email to