Sfoglia il codice sorgente

HUE-1694 [impala] Multi query not always supported

Romain Rigaux 12 anni fa
parent
commit
b7aa82a3a7

+ 17 - 17
apps/beeswax/src/beeswax/templates/watch_results.mako

@@ -69,28 +69,28 @@ ${layout.menubar(section='query')}
             <div class="sidebar-nav">
                 <ul class="nav nav-list">
                     <li><a id="collapse" class="btn btn-small"><i class="fa fa-chevron-left" rel="tooltip" title="${_('Collapse this panel')}"></i></a></li>
-                    % if download_urls:
-                    <li class="nav-header">${_('Results')}</li>
-                    <li><a target="_blank" href="${download_urls["csv"]}"><i class="fa fa-arrow-circle-o-down"></i> ${_('Download as CSV')}</a></li>
-                    <li><a target="_blank" href="${download_urls["xls"]}"><i class="fa fa-arrow-circle-o-down"></i> ${_('Download as XLS')}</a></li>
+                    % if download_urls and download:
+                      <li class="nav-header">${_('Results')}</li>
+                      <li><a target="_blank" href="${download_urls["csv"]}"><i class="fa fa-arrow-circle-o-down"></i> ${_('Download as CSV')}</a></li>
+                      <li><a target="_blank" href="${download_urls["xls"]}"><i class="fa fa-arrow-circle-o-down"></i> ${_('Download as XLS')}</a></li>
                     % endif
-                    %if can_save:
-                    <li><a data-toggle="modal" href="#saveAs"><i class="fa fa-floppy-o"></i> ${_('Save')}</a></li>
+                    % if can_save and download:
+                      <li><a data-toggle="modal" href="#saveAs"><i class="fa fa-floppy-o"></i> ${_('Save')}</a></li>
                     % endif
                     % if app_name != 'impala':
-                    <%
-                      n_jobs = hadoop_jobs and len(hadoop_jobs) or 0
-                      mr_jobs = (n_jobs == 1) and _('MapReduce Job') or _('MapReduce Jobs')
-                    %>
-                     % if n_jobs > 0:
+                      <%
+                        n_jobs = hadoop_jobs and len(hadoop_jobs) or 0
+                        mr_jobs = (n_jobs == 1) and _('MapReduce Job') or _('MapReduce Jobs')
+                      %>
+                      % if n_jobs > 0:
                         <li class="nav-header">${mr_jobs} (${n_jobs})</li>
                         % for jobid in hadoop_jobs:
-                            <li><a href="${url("jobbrowser.views.single_job", job=jobid.replace('application', 'job'))}">${ jobid.replace("application_", "") }</a></li>
+                          <li><a href="${url("jobbrowser.views.single_job", job=jobid.replace('application', 'job'))}">${ jobid.replace("application_", "") }</a></li>
                         % endfor
-                    % else:
+                      % else:
                         <li class="nav-header">${mr_jobs}</li>
                         <li class="white">${_('No Hadoop jobs were launched in running this query.')}</li>
-                    % endif
+                      % endif
                     % endif
                 </ul>
             </div>
@@ -222,7 +222,7 @@ ${layout.menubar(section='query')}
     </div>
 </div>
 
-%if can_save:
+% if can_save:
 ## duplication from save_results.mako
 <div id="saveAs" class="modal hide fade">
   <form id="saveForm" action="${url(app_name + ':save_results', query.id) }" method="POST"
@@ -265,7 +265,7 @@ ${layout.menubar(section='query')}
     </div>
   </form>
 </div>
-%endif.resultTable
+% endif.resultTable
 
 
 <script type="text/javascript" charset="utf-8">
@@ -393,7 +393,7 @@ $(document).ready(function () {
     $("#log pre").css("overflow", "auto").height($(window).height() - $("#log pre").position().top - 40);
   }
 
-  % if app_name == 'impala':
+  % if app_name == 'impala' and query.is_finished():
     % if not download:
       $("#collapse").click();
       $(".sidebar-nav, #expand").hide();

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

@@ -87,7 +87,7 @@ def save_design(request, form, type_, design, explicit_save):
     raise ValueError(_('Invalid design type %(type)s') % {'type': type_})
 
   old_design = design
-  design_obj = design_cls(form)
+  design_obj = design_cls(form, query_type=type_)
   new_data = design_obj.dumps()
 
   # Auto save if (1) the user didn't click "save", and (2) the data is different.
@@ -481,7 +481,7 @@ def watch_query(request, id):
 
   All other GET params will be passed to on_success_url (if present).
   """
-  # Coerce types; manage arguments
+  # Coerce types: manage arguments
   query_history = authorized_get_history(request, id, must_exist=True)
   db = dbms.get(request.user, query_history.get_query_server_config())
 
@@ -635,7 +635,7 @@ def view_results(request, id, first_row=0):
   query_context = parse_query_context(context_param)
 
   # To remove when Impala has start_over support
-  download  = request.GET.get('download', '')
+  download = request.GET.get('download', '') or app_name != 'impala'
 
   # Update the status as expired should not be accessible
   # Impala does not support startover for now
@@ -648,15 +648,13 @@ def view_results(request, id, first_row=0):
   try:
     if query_server['server_name'] == 'impala' and not handle.has_result_set:
       downloadable = False
-    elif not download:
+    else:
       results = db.fetch(handle, start_over, 100)
       data = list(results.rows()) # Materialize results
 
       # We display the "Download" button only when we know that there are results:
       downloadable = first_row > 0 or data
       log = db.get_log(handle)
-    else:
-      downloadable = True
 
   except Exception, ex:
     fetch_error = True
@@ -700,7 +698,7 @@ def view_results(request, id, first_row=0):
       'columns': results.columns,
       'download_urls': download_urls,
       'save_form': save_form,
-      'can_save': query_history.owner == request.user and not download,
+      'can_save': query_history.owner == request.user,
       'next_json_set': reverse(get_app_name(request) + ':view_results', kwargs={
         'id': str(id),
         'first_row': results.start_row + len(data)