فهرست منبع

HUE-1727 [beeswax] Export data from a non default database

Adding a USE in case another concurrent query with another DB
is executed. Implementation will then depend on Hive.

Renamed HiveServer2Dbms
Romain Rigaux 12 سال پیش
والد
کامیت
797f6d6
2فایلهای تغییر یافته به همراه10 افزوده شده و 7 حذف شده
  1. 7 4
      apps/beeswax/src/beeswax/server/dbms.py
  2. 3 3
      apps/beeswax/src/beeswax/tests.py

+ 7 - 4
apps/beeswax/src/beeswax/server/dbms.py

@@ -44,7 +44,7 @@ def get(user, query_server=None):
   if query_server is None:
     query_server = get_query_server_config()
 
-  return HS2Dbms(HiveServerClientCompatible(HiveServerClient(query_server, user)), QueryHistory.SERVER_TYPE[1][0])
+  return HiveServer2Dbms(HiveServerClientCompatible(HiveServerClient(query_server, user)), QueryHistory.SERVER_TYPE[1][0])
 
 
 def get_query_server_config(name='beeswax', server=None):
@@ -85,8 +85,8 @@ class QueryServerException(Exception):
 class NoSuchObjectException: pass
 
 
-class HS2Dbms(object):
-  """SQL"""
+class HiveServer2Dbms(object):
+
   def __init__(self, client, server_type):
     self.client = client
     self.server_type = server_type
@@ -232,6 +232,8 @@ class HS2Dbms(object):
 
   def insert_query_into_directory(self, query_history, target_dir):
     design = query_history.design.get_design()
+    database = design.query['database']
+    self.use(database)
 
     hql = "INSERT OVERWRITE DIRECTORY '%s' %s" % (target_dir, design.query['query'])
     return self.execute_statement(hql)
@@ -243,8 +245,9 @@ class HS2Dbms(object):
 
     # Case 1: Hive Server 2 backend or results straight from an existing table
     if result_meta.in_tablename:
+      self.use(database)
+
       hql = 'CREATE TABLE `%s.%s` AS %s' % (database, target_table, design.query['query'])
-      #query = hql_query(hql, database=database)
       query_history = self.execute_statement(hql)
       url = redirect(reverse('beeswax:watch_query', args=[query_history.id]) + '?on_success_url=' + reverse('metastore:describe_table', args=[database, target_table]))
     else:

+ 3 - 3
apps/beeswax/src/beeswax/tests.py

@@ -1499,14 +1499,14 @@ class TestWithMockedServer(object):
   def setUp(self):
     # Beware: Monkey patch Beeswax/Hive server with Mock API
     if not hasattr(dbms, 'OriginalBeeswaxApi'):
-      dbms.OriginalBeeswaxApi = dbms.HS2Dbms
-    dbms.HS2Dbms = MockDbms
+      dbms.OriginalBeeswaxApi = dbms.HiveServer2Dbms
+    dbms.HiveServer2Dbms = MockDbms
 
     self.client = make_logged_in_client(is_superuser=False)
     grant_access("test", "test", "beeswax")
 
   def tearDown(self):
-    dbms.HS2Dbms = dbms.OriginalBeeswaxApi
+    dbms.HiveServer2Dbms = dbms.OriginalBeeswaxApi
 
   def test_save_design_properties(self):
     resp = self.client.get('/beeswax/save_design_properties')