From f66b598d37f183ba19cfa258eaae86d46dd7e5b2 Mon Sep 17 00:00:00 2001 From: Beto Dealmeida Date: Wed, 20 Mar 2019 16:56:30 -0700 Subject: [PATCH] Allow LIMIT to be specified in parameters (#7052) --- superset/views/core.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/superset/views/core.py b/superset/views/core.py index ad5153b26c..39343d67c7 100755 --- a/superset/views/core.py +++ b/superset/views/core.py @@ -2558,10 +2558,8 @@ class Superset(BaseSupersetView): ) client_id = request.form.get('client_id') or utils.shortid()[:10] - limits = [mydb.db_engine_spec.get_limit_from_sql(sql), limit] query = Query( database_id=int(database_id), - limit=min(lim for lim in limits if lim is not None), sql=sql, schema=schema, select_as_cta=request.form.get('select_as_cta') == 'true', @@ -2591,6 +2589,10 @@ class Superset(BaseSupersetView): return json_error_response( 'Template rendering failed: {}'.format(utils.error_msg_from_exception(e))) + # set LIMIT after template processing + limits = [mydb.db_engine_spec.get_limit_from_sql(rendered_query), limit] + query.limit = min(lim for lim in limits if lim is not None) + # Async request. if async_: logging.info('Running query on a Celery worker')