浏览代码

HUE-1296 [impala] Support parameterized queries

Romain Rigaux 12 年之前
父节点
当前提交
79803ad020
共有 2 个文件被更改,包括 10 次插入4 次删除
  1. 5 3
      apps/beeswax/src/beeswax/views.py
  2. 5 1
      apps/impala/src/impala/tests.py

+ 5 - 3
apps/beeswax/src/beeswax/views.py

@@ -603,7 +603,7 @@ def view_results(request, id, first_row=0):
   context_param = request.GET.get('context', '')
   query_context = _parse_query_context(context_param)
 
-  # To remove in Hue 2.3
+  # To remove in Hue 2.4
   download  = request.GET.get('download', '')
 
   # Update the status as expired should not be accessible
@@ -1081,7 +1081,9 @@ def _run_parameterized_query(request, design_id, explain):
     raise PopupException(_("Query form is invalid: %s") % query_form.errors)
 
   query_str = query_form.query.cleaned_data["query"]
-  query_server = get_query_server_config(get_app_name(request))
+  app_name = get_app_name(request)
+  query_server = get_query_server_config(app_name)  
+  query_type = SavedQuery.TYPES_MAPPING[app_name]
 
   parameterization_form_cls = make_parameterization_form(query_str)
   if not parameterization_form_cls:
@@ -1091,7 +1093,7 @@ def _run_parameterized_query(request, design_id, explain):
 
   if parameterization_form.is_valid():
     real_query = substitute_variables(query_str, parameterization_form.cleaned_data)
-    query = HQLdesign(query_form)
+    query = HQLdesign(query_form, query_type=query_type)
     query._data_dict['query']['query'] = real_query
     try:
       if explain:

+ 5 - 1
apps/impala/src/impala/tests.py

@@ -23,6 +23,7 @@ from django.contrib.auth.models import User
 from desktop.lib.django_test_util import make_logged_in_client
 from beeswax.models import SavedQuery, QueryHistory
 from beeswax.server import dbms
+from beeswax.design import hql_query
 
 
 class MockDbms:
@@ -67,6 +68,9 @@ class TestImpala:
       response = self.client.get("/impala/list_designs")
       assert_equal(len(response.context['page'].object_list), 1)
 
+      response = self.client.get("/impala/execute_parameterized/%s" % impala_query.id)
+      assert_true('specify parameters' in response.content)
+
       # Test my query page
       QueryHistory.objects.create(owner=user, design=impala_query, query='', last_state=QueryHistory.STATE.available.index)
 
@@ -86,7 +90,7 @@ def create_saved_query(app_name, owner):
     design = SavedQuery(owner=owner, type=query_type)
     design.name = SavedQuery.DEFAULT_NEW_DESIGN_NAME
     design.desc = ''
-    design.data = ''
+    design.data = hql_query('show $tables').dumps()
     design.is_auto = False
     design.save()
     return design