diff --git a/caravel/assets/javascripts/SqlLab/components/SqlEditorLeft.jsx b/caravel/assets/javascripts/SqlLab/components/SqlEditorLeft.jsx
index 7543c8ca8ef3c..da26d953ff4a7 100644
--- a/caravel/assets/javascripts/SqlLab/components/SqlEditorLeft.jsx
+++ b/caravel/assets/javascripts/SqlLab/components/SqlEditorLeft.jsx
@@ -36,9 +36,6 @@ class SqlEditorTopToolbar extends React.Component {
});
return `SELECT ${cols}\nFROM ${table.name}`;
}
- selectStar(table) {
- this.props.actions.queryEditorSetSql(this.props.queryEditor, this.getSql(table));
- }
popTab(table) {
const qe = {
id: shortid.generate(),
@@ -169,7 +166,7 @@ class SqlEditorTopToolbar extends React.Component {
- {tables.map((table) =>
)}
+ {tables.map((table) =>
)}
);
diff --git a/caravel/assets/javascripts/SqlLab/components/TableElement.jsx b/caravel/assets/javascripts/SqlLab/components/TableElement.jsx
index 1d256ad341920..c4fb8f1dff5ba 100644
--- a/caravel/assets/javascripts/SqlLab/components/TableElement.jsx
+++ b/caravel/assets/javascripts/SqlLab/components/TableElement.jsx
@@ -15,13 +15,18 @@ class TableElement extends React.Component {
cols += ', ';
}
});
- const sql = `SELECT ${cols}\nFROM ${this.props.table.name}`;
+ return `SELECT ${cols}\nFROM ${this.props.table.name}`;
+ }
+ setSelectStar () {
+ this.props.actions.queryEditorSetSql(this.props.queryEditor, this.selectStar());
+ }
+ popSelectStar() {
const qe = {
id: shortid.generate(),
title: this.props.table.name,
dbId: this.props.table.dbId,
autorun: true,
- sql,
+ sql: this.selectStar(),
};
this.props.actions.addQueryEditor(qe);
}
@@ -68,13 +73,13 @@ class TableElement extends React.Component {
@@ -92,6 +97,7 @@ class TableElement extends React.Component {
}
TableElement.propTypes = {
table: React.PropTypes.object,
+ queryEditor: React.PropTypes.object,
actions: React.PropTypes.object,
};
TableElement.defaultProps = {
diff --git a/caravel/assets/package.json b/caravel/assets/package.json
index fe5ef1c49d34d..e725a6043de64 100644
--- a/caravel/assets/package.json
+++ b/caravel/assets/package.json
@@ -70,7 +70,7 @@
"react-redux": "^4.4.5",
"react-resizable": "^1.3.3",
"react-select": "^1.0.0-beta14",
- "react-syntax-highlighter": "^2.1.1",
+ "react-syntax-highlighter": "^2.3.0",
"reactable": "^0.13.2",
"redux": "^3.5.2",
"redux-localstorage": "^0.4.1",
diff --git a/caravel/sql_lab.py b/caravel/sql_lab.py
index ffc4f4e826967..ec5186f9cf878 100644
--- a/caravel/sql_lab.py
+++ b/caravel/sql_lab.py
@@ -94,10 +94,8 @@ def get_sql_results(query_id, return_results=True):
if progress > query.progress:
query.progress = progress
db.session.commit()
- time.sleep(200)
-
+ time.sleep(1)
polled = cursor.poll()
- # TODO(b.kyryliuk): check for the kill signal.
columns = None
data = None
diff --git a/caravel/utils.py b/caravel/utils.py
index 806c7c0bcd68a..707f842dc52c5 100644
--- a/caravel/utils.py
+++ b/caravel/utils.py
@@ -211,6 +211,7 @@ def init(caravel):
'Security',
'UserDBModelView',
'SQL Lab'):
+
sm.add_permission_role(alpha, perm)
sm.add_permission_role(admin, perm)
gamma = sm.add_role("Gamma")
diff --git a/caravel/views.py b/caravel/views.py
index 7be0e1306e32b..d3b8af67ada7c 100755
--- a/caravel/views.py
+++ b/caravel/views.py
@@ -25,8 +25,7 @@
from flask_babel import lazy_gettext as _
from flask_appbuilder.models.sqla.filters import BaseFilter
-from sqlalchemy import create_engine, select, text
-from sqlalchemy.sql.expression import TextAsFrom
+from sqlalchemy import create_engine
from werkzeug.routing import BaseConverter
from wtforms.validators import ValidationError
@@ -38,6 +37,7 @@
config = app.config
log_this = models.Log.log_this
can_access = utils.can_access
+QueryStatus = models.QueryStatus
class BaseCaravelView(BaseView):
@@ -1415,7 +1415,7 @@ def json_error_response(msg, status=None):
if not mydb:
json_error_response(
'Database with id {} is missing.'.format(database_id),
- models.QueryStatus.FAILED)
+ QueryStatus.FAILED)
if not (self.can_access('all_datasource_access', 'all_datasource_access') or
self.can_access('database_access', mydb.perm)):
@@ -1431,6 +1431,7 @@ def json_error_response(msg, status=None):
select_as_cta=request.form.get('select_as_cta') == 'true',
start_time=utils.now_as_float(),
tab_name=request.form.get('tab'),
+ status=QueryStatus.PENDING if async else QueryStatus.RUNNING,
sql_editor_id=request.form.get('sql_editor_id'),
tmp_table_name=request.form.get('tmp_table_name'),
user_id=int(g.user.get_id()),