Browse Source

[beeswax] Fix query result medatadata type

Romain Rigaux 12 years ago
parent
commit
6128c3b

+ 2 - 2
apps/beeswax/src/beeswax/server/hive_server2_lib.py

@@ -25,7 +25,7 @@ from hadoop import cluster
 
 from TCLIService import TCLIService
 from TCLIService.ttypes import TOpenSessionReq, TGetTablesReq, TFetchResultsReq,\
-  TStatusCode, TGetResultSetMetadataReq, TGetColumnsReq, TType,\
+  TStatusCode, TGetResultSetMetadataReq, TGetColumnsReq, TTypeId,\
   TExecuteStatementReq, TGetOperationStatusReq, TFetchOrientation,\
   TCloseSessionReq, TGetSchemasReq, TGetLogReq, TCancelOperationReq,\
   TCloseOperationReq
@@ -274,7 +274,7 @@ class HiveServerTColumnDesc:
   def get_type(self, typeDesc):
     for ttype in typeDesc.types:
       if ttype.primitiveEntry is not None:
-        return TType._VALUES_TO_NAMES[ttype.primitiveEntry.type]
+        return TTypeId._VALUES_TO_NAMES[ttype.primitiveEntry.type]
       elif ttype.mapEntry is not None:
         return ttype.mapEntry
       elif ttype.unionEntry is not None:

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

@@ -160,7 +160,7 @@ ${layout.menubar(section='query')}
             <tr>
               <th>&nbsp;</th>
               % for col in columns:
-                <th>${ col }</th>
+                <th>${ col.name }</th>
               % endfor
             </tr>
             </thead>
@@ -208,7 +208,7 @@ ${layout.menubar(section='query')}
             </thead>
             <tbody>
               % for col in columns:
-                <tr><td><a href="javascript:void(0)" class="column-selector" data-column="${col}">${col}</a></td></tr>
+                <tr><td><a href="javascript:void(0)" class="column-selector" data-column="${col}">${ col.name }</a></td></tr>
               % endfor
             </tbody>
           </table>

+ 1 - 0
apps/beeswax/src/beeswax/tests.py

@@ -193,6 +193,7 @@ for x in sys.stdin:
 
     response = wait_for_query_to_finish(self.client, response, max=180.0)
     assert_equal([0, 255, 32640], response.context["results"][0], response.content)
+    assert_equal(['INT_TYPE', 'INT_TYPE', 'BIGINT_TYPE'], [col.type for col in response.context["columns"]])
     # Because it happens that we're running this with local mode,
     # we won't see any hadoop jobs.
     assert_equal(1, len(response.context["hadoop_jobs"]), response.context["hadoop_jobs"])

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

@@ -622,6 +622,7 @@ def view_results(request, id, first_row=0):
   fetch_error = False
   error_message = ''
   log = ''
+  columns = []
   app_name = get_app_name(request)
 
   query_history = authorized_get_history(request, id, must_exist=True)
@@ -653,6 +654,7 @@ def view_results(request, id, first_row=0):
       # We display the "Download" button only when we know that there are results:
       downloadable = first_row > 0 or data
       log = db.get_log(handle)
+      columns = results.data_table.cols()
 
   except Exception, ex:
     fetch_error = True
@@ -693,7 +695,7 @@ def view_results(request, id, first_row=0):
       'next_row': results.start_row + len(data),
       'start_row': results.start_row,
       'expected_first_row': first_row,
-      'columns': results.columns,
+      'columns': columns,
       'download_urls': download_urls,
       'save_form': save_form,
       'can_save': query_history.owner == request.user,