Browse Source

HUE-8816 [notebook] Do not break on describing columns in catalog

Romain 6 years ago
parent
commit
9e3c523088

+ 5 - 2
desktop/libs/notebook/src/notebook/api.py

@@ -833,13 +833,16 @@ def _get_statement_from_file(user, fs, snippet):
     if fs.do_as_user(user, fs.isfile, script_path):
       return fs.do_as_user(user, fs.read, script_path, 0, 16 * 1024 ** 2)
 
-def describe(request, database, table):
+
+@require_POST
+@api_error_handler
+def describe(request, database, table, column=None):
   response = {'status': -1, 'message': ''}
   notebook = json.loads(request.POST.get('notebook', '{}'))
   source_type = request.POST.get('source_type', '')
   snippet = {'type': source_type}
 
-  describe = get_api(request, snippet).describe(notebook, snippet, database, table)
+  describe = get_api(request, snippet).describe(notebook, snippet, database, table, column=column)
   response.update(describe)
 
   return JsonResponse(response)

+ 4 - 1
desktop/libs/notebook/src/notebook/connectors/hiveserver2.py

@@ -811,15 +811,18 @@ DROP TABLE IF EXISTS `%(table)s`;
 
     return profile
 
+
   def _get_impala_profile_plan(self, query_id, profile):
     query_plan_re = "Query \(id=%(query_id)s\):.+?Execution Profile %(query_id)s" % {'query_id': query_id}
     query_plan_match = re.search(query_plan_re, profile, re.MULTILINE | re.DOTALL)
     return query_plan_match.group() if query_plan_match else None
 
+
   def describe_column(self, notebook, snippet, database=None, table=None, column=None):
     db = self._get_db(snippet, self.cluster)
     return db.get_table_columns_stats(database, table, column)
 
+
   def describe_table(self, notebook, snippet, database=None, table=None):
     db = self._get_db(snippet, self.cluster)
     tb = db.get_table(database, table)
@@ -836,7 +839,7 @@ DROP TABLE IF EXISTS `%(table)s`;
       'details': tb.details,
       'stats': tb.stats
     }
-    
+
 
   def describe_database(self, notebook, snippet, database=None):
     db = self._get_db(snippet, self.cluster)