Przeglądaj źródła

HUE-8740 [sqlalchemy] Do not fail autocomplete on non DB prefixed tables

Romain 5 lat temu
rodzic
commit
5f53b669ee

+ 1 - 1
desktop/libs/notebook/src/notebook/connectors/sql_alchemy.py

@@ -426,7 +426,7 @@ class SqlAlchemyApi(Api):
 
   def _fix_bigquery_db_prefixes(self, table_or_column):
     if self.options['url'].startswith('bigquery://'):
-      table_or_column = table_or_column.rsplit('.', 1)[1]
+      table_or_column = table_or_column.rsplit('.', 1)[-1]
     return table_or_column
 
 

+ 26 - 0
desktop/libs/notebook/src/notebook/connectors/sql_alchemy_tests.py

@@ -391,3 +391,29 @@ class TestAutocomplete(object):
 
       assert_true(keys['primary_keys'])  # For some reason could not mock two level to get some colum names
       assert_equal(keys['foreign_keys'][0]['to'], 'db2.table2.col2')
+
+
+class TestUtils():
+
+  def setUp(self):
+    self.client = make_logged_in_client(username="test", groupname="default", recreate=True, is_superuser=False)
+
+    self.user = rewrite_user(User.objects.get(username="test"))
+    self.interpreter = {
+      'name': 'hive',
+      'options': {
+        'url': 'mysql://hue:localhost@hue:3306/hue'
+      },
+    }
+
+  def test_fix_bigquery_db_prefixes(self):
+    interpreter = {
+      'name': 'bigquery',
+      'options': {
+        'url': 'bigquery://'
+      },
+    }
+    api = SqlAlchemyApi(self.user, interpreter)
+
+    assert_equal(api._fix_bigquery_db_prefixes('table'), 'table')
+    assert_equal(api._fix_bigquery_db_prefixes('db.table'), 'table')