Эх сурвалжийг харах

HUE-8535 [sqoop] Use the proper engine name and not the connection nice name as jdbc prefix

Romain Rigaux 7 жил өмнө
parent
commit
8887c61

+ 3 - 3
desktop/libs/indexer/src/indexer/indexers/rdbms.py

@@ -25,7 +25,7 @@ from django.utils.translation import ugettext as _
 
 from desktop.lib.django_util import JsonResponse
 from desktop.lib.i18n import smart_str
-from librdbms.conf import DATABASES, get_database_password, get_server_choices
+from librdbms.conf import DATABASES, get_database_password, get_server_choices, get_connector_name
 from librdbms.jdbc import Jdbc
 from librdbms.server import dbms as rdbms
 from notebook.conf import get_ordered_interpreters
@@ -166,8 +166,8 @@ def run_sqoop(request, source, destination, start_time):
     if destination['sqoopJobLibPaths']:
       lib_files = [{'path': f['path'], 'type': 'jar'} for f in destination['sqoopJobLibPaths']]
 
-    statement = '--connect jdbc:%(rdbmsName)s://%(rdbmsHost)s:%(rdbmsPort)s/%(rdbmsDatabaseName)s --username %(rdbmsUserName)s --password-file %(passwordFilePath)s' % {
-      'rdbmsName': rdbms_name,
+    statement = '--connect jdbc:%(rdbmsType)s://%(rdbmsHost)s:%(rdbmsPort)s/%(rdbmsDatabaseName)s --username %(rdbmsUserName)s --password-file %(passwordFilePath)s' % {
+      'rdbmsType': get_connector_name(rdbms_name),
       'rdbmsHost': rdbms_host,
       'rdbmsPort': rdbms_port,
       'rdbmsDatabaseName': rdbms_database_name,

+ 11 - 0
desktop/libs/librdbms/src/librdbms/conf.py

@@ -107,6 +107,17 @@ def get_server_choices():
   return [(alias, DATABASES[alias].NICE_NAME.get() or alias) for alias in DATABASES]
 
 
+def get_connector_name(name):
+  engine = DATABASES[name].ENGINE.get().split('.')[-1]
+  return {
+    'sqlite': 'sqlite',
+    'sqlite3': 'sqlite',
+    'postgresql_psycopg2': 'postgresql',
+    'postgresql': 'postgresql',
+    'mysql': 'mysql'
+  }.get(engine, name)
+
+
 def get_database_password(name):
   """
   Return the configured database password.