فهرست منبع

[hplsql] adding hplsql as a connector (#2701)

Ayush Goyal 3 سال پیش
والد
کامیت
f4c0716b10

+ 3 - 1
apps/beeswax/src/beeswax/server/hive_server2_lib.py

@@ -37,6 +37,7 @@ from beeswax.hive_site import hiveserver2_use_ssl
 from beeswax.conf import CONFIG_WHITELIST, LIST_PARTITIONS_LIMIT, MAX_CATALOG_SQL_ENTRIES
 from beeswax.models import Session, HiveServerQueryHandle, HiveServerQueryHistory
 from beeswax.server.dbms import Table, DataTable, QueryServerException, InvalidSessionQueryServerException
+from notebook.connectors.base import get_interpreter
 
 if sys.version_info[0] > 2:
   from django.utils.translation import gettext as _
@@ -665,6 +666,7 @@ class HiveServerClient(object):
         'username': user.username,  # If SASL or LDAP, it gets the username from the authentication mechanism since it dependents on it.
         'configuration': {},
     }
+    interpreter = get_interpreter(connector_type=self.query_server['server_name'], user=self.user)
 
     if self.impersonation_enabled:
       kwargs.update({'username': DEFAULT_USER})
@@ -675,7 +677,7 @@ class HiveServerClient(object):
     if self.query_server['server_name'] == 'beeswax': # All the time
       kwargs['configuration'].update({'hive.server2.proxy.user': user.username})
 
-    if self.query_server['server_name'] == 'hplsql': # All the time
+    if self.query_server['server_name'] == 'hplsql' or interpreter['dialect'] == 'hplsql': # All the time
       kwargs['configuration'].update({'hive.server2.proxy.user': user.username, 'set:hivevar:mode': 'HPLSQL'})
 
     if self.query_server['server_name'] == 'llap': # All the time

+ 2 - 1
apps/beeswax/src/beeswax/server/hive_server2_lib_tests.py

@@ -23,6 +23,7 @@ from nose.tools import assert_equal, assert_true, assert_raises, assert_not_equa
 from nose.plugins.skip import SkipTest
 from TCLIService.ttypes import TStatusCode
 
+from desktop.auth.backend import rewrite_user
 from desktop.lib.django_test_util import make_logged_in_client
 from useradmin.models import User
 
@@ -44,7 +45,7 @@ class TestHiveServerClient():
 
   def setUp(self):
     self.client = make_logged_in_client(username="test_hive_server2_lib", groupname="default", recreate=True, is_superuser=False)
-    self.user = User.objects.get(username="test_hive_server2_lib")
+    self.user = rewrite_user(User.objects.get(username="test_hive_server2_lib"))
 
     self.query_server = {
         'principal': 'hue',

+ 28 - 0
desktop/core/src/desktop/lib/connectors/types.py

@@ -334,6 +334,34 @@ CONNECTOR_TYPES = [
       'has_use_statement': False,
     }
   },
+  {
+    'dialect': 'hplsql',
+    'nice_name': 'Hplsql',
+    'description': '',
+    'category': 'editor',
+    'interface': 'hiveserver2',
+    'settings': [
+      {'name': 'server_host', 'value': 'localhost'},
+      {'name': 'server_port', 'value': 10000},
+      {'name': 'is_llap', 'value': False},
+      {'name': 'use_sasl', 'value': True},
+    ],
+    'properties': {
+      'is_sql': True,
+      'sql_identifier_quote': '`',
+      'sql_identifier_comment_single': '--',
+      'has_catalog': False,
+      'has_database': True,
+      'has_table': True,
+      'has_live_queries': False,
+      'has_optimizer_risks': True,
+      'has_optimizer_values': True,
+      'has_auto_limit': False,
+      'has_reference_language': True,
+      'has_reference_functions': True,
+      'has_use_statement': True,
+    }
+  },
   {
     'nice_name': 'MySQL',
     'dialect': 'mysql',