Pārlūkot izejas kodu

HUE-1946 [beeswax] Can't select and execute more than one query

The previous statement of a multi query can be closed so the previous
result can be expired.
Romain Rigaux 11 gadi atpakaļ
vecāks
revīzija
2b9f3de

+ 3 - 0
apps/beeswax/src/beeswax/models.py

@@ -153,6 +153,9 @@ class QueryHistory(models.Model):
   def is_failure(self):
     return self.last_state in (QueryHistory.STATE.expired.index, QueryHistory.STATE.failed.index)
 
+  def is_expired(self):
+    return self.last_state in (QueryHistory.STATE.expired.index,)
+
   def set_to_running(self):
     self.last_state = QueryHistory.STATE.running.index
 

+ 1 - 1
apps/beeswax/src/beeswax/server/dbms.py

@@ -339,7 +339,7 @@ class HiveServer2Dbms(object):
 
 
   def execute_next_statement(self, query_history, hql_query):
-    if query_history.is_success():
+    if query_history.is_success() or query_history.is_expired():
       # We need to go to the next statement only if the previous one passed
       query_history.statement_number += 1
     else:

+ 1 - 4
apps/beeswax/src/beeswax/views.py

@@ -436,9 +436,6 @@ def view_results(request, id, first_row=0):
   # Update the status as expired should not be accessible
   # Impala does not support startover for now
   expired = state == models.QueryHistory.STATE.expired
-  if expired or app_name == 'impala':
-    state = models.QueryHistory.STATE.expired
-    query_history.save_state(state)
 
   # Retrieve query results or use empty result if no result set
   try:
@@ -832,7 +829,7 @@ def _get_query_handle_and_state(query_history):
 
   query_server = query_history.get_query_server_config()
 
-  if query_server['server_name'] == 'impala' and not handle.has_result_set:
+  if query_server['server_name'] == 'impala' and handle.has_result_set:
     state = QueryHistory.STATE.available
   else:
     state = dbms.get(query_history.owner, query_history.get_query_server_config()).get_state(handle)

+ 2 - 2
desktop/core/src/desktop/templates/popup_error.mako

@@ -31,10 +31,10 @@ ${ commonheader(title, "", user, "40px") | n,unicode }
             <p>
 
               <div class="alert">
-      <p><strong>${message}</strong></p>
+      <p><strong>${ smart_unicode(message) }</strong></p>
 
       % if detail:
-        <p>${ detail }</p>
+        <p>${ smart_unicode(detail) }</p>
       % endif
 
     </div>