فهرست منبع

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

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

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