[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
This commit is contained in:
Maxime Beauchemin 2018-04-04 13:38:37 -07:00 committed by GitHub
parent 9a79d33e0d
commit 3b7e0a951a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 38 additions and 2 deletions

View File

@ -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 {

View File

@ -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,

View File

@ -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,
});

View File

@ -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',

View File

@ -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)

View File

@ -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()