Преглед изворни кода

HUE-8330 [metadata] DESCRIBE EXTENTED DATABASE incompability with Impala

Romain Rigaux пре 7 година
родитељ
комит
8e6e155

+ 22 - 7
apps/beeswax/src/beeswax/server/hive_server2_lib.py

@@ -763,13 +763,28 @@ class HiveServerClient:
     (desc_results, desc_schema), operation_handle = self.execute_statement(query, max_rows=5000, orientation=TFetchOrientation.FETCH_NEXT)
     self.close_operation(operation_handle)
 
-    cols = ('db_name', 'comment', 'location','owner_name', 'owner_type', 'parameters')
-
-    if len(HiveServerTRowSet(desc_results.results, desc_schema.schema).cols(cols)) != 1:
-      raise ValueError(_("%(query)s returned more than 1 row") % {'query': query})
-
-    return HiveServerTRowSet(desc_results.results, desc_schema.schema).cols(cols)[0]  # Should only contain one row
-
+    print '-----'
+    print self.query_server['server_name']
+    print desc_results.results
+    print desc_schema.schema
+    if self.query_server['server_name'].startswith('impala'):
+      cols = ('name', 'location', 'comment') # Skip owner as on a new line
+    else:
+      cols = ('db_name', 'comment', 'location', 'owner_name', 'owner_type', 'parameters')
+
+#     print cols
+#     try:
+#       if len(HiveServerTRowSet(desc_results.results, desc_schema.schema).cols(cols)) != 1:
+#         raise ValueError(_("%(query)s returned more than 1 row") % {'query': query})
+#     except Exception, e:
+#       print e
+#       raise e
+
+    
+    a = HiveServerTRowSet(desc_results.results, desc_schema.schema).cols(cols)[0]  # Should only contain one row
+    print a
+    # {'comment': 'Default Hive database', 'name': 'default', 'location': 'hdfs://nightly6x-unsecure-1.vpc.cloudera.com:8020/user/hive/warehouse'}
+    return a
 
   def get_tables_meta(self, database, table_names, table_types=None):
     if not table_types:

+ 8 - 1
apps/metastore/src/metastore/views.py

@@ -180,6 +180,12 @@ def get_database_metadata(request, database):
   try:
     db_metadata = db.get_database(database)
     response['status'] = 0
+    if not db_metadata.get('owner_name'):
+      db_metadata['owner_name'] = ''
+    if not db_metadata.get('owner_type'):
+      db_metadata['owner_type'] = ''
+    if not db_metadata.get('parameters'):
+      db_metadata['parameters'] = ''
     db_metadata['hdfs_link'] = location_to_url(db_metadata['location'])
     response['data'] = db_metadata
   except Exception, ex:
@@ -267,8 +273,9 @@ def show_tables(request, database=None):
 
 def get_table_metadata(request, database, table):
   cluster = json.loads(request.POST.get('cluster', '{}'))
+  source_type = request.POST.get('source_type')
 
-  db = _get_db(user=request.user, cluster=cluster)
+  db = _get_db(user=request.user, source_type=source_type, cluster=cluster)
   response = {'status': -1, 'data': ''}
   try:
     table_metadata = db.get_table(database, table)