瀏覽代碼

HUE-3450 [editor] Disable value stats and suggestions in the autocompleter

Johan Ahlen 9 年之前
父節點
當前提交
407de80743

+ 3 - 2
apps/beeswax/src/beeswax/templates/execute.mako

@@ -1106,7 +1106,7 @@ editorViewModelOptions.languages.push({
 
 
 var i18n = {
 var i18n = {
   errorLoadingDatabases: "${ _('There was a problem loading the databases') }"
   errorLoadingDatabases: "${ _('There was a problem loading the databases') }"
-}
+};
 
 
 var editorViewModel = new EditorViewModel([], editorViewModelOptions, i18n);
 var editorViewModel = new EditorViewModel([], editorViewModelOptions, i18n);
 var notebook = editorViewModel.newNotebook();
 var notebook = editorViewModel.newNotebook();
@@ -1115,7 +1115,8 @@ var assistHelper = snippet.getAssistHelper();
 var autocompleter = new Autocompleter({
 var autocompleter = new Autocompleter({
   snippet: snippet,
   snippet: snippet,
   user: HIVE_AUTOCOMPLETE_USER,
   user: HIVE_AUTOCOMPLETE_USER,
-  oldEditor: true
+  oldEditor: true,
+  optEnabled: false
 });
 });
 
 
 var totalStorageUserPrefix = assistHelper.getTotalStorageUserPrefix(snippetType);
 var totalStorageUserPrefix = assistHelper.getTotalStorageUserPrefix(snippetType);

+ 3 - 1
desktop/core/src/desktop/static/desktop/js/autocompleter.js

@@ -29,6 +29,7 @@
    * @param options {object}
    * @param options {object}
    * @param options.snippet
    * @param options.snippet
    * @param options.user
    * @param options.user
+   * @param options.optEnabled
    *
    *
    * @constructor
    * @constructor
    */
    */
@@ -47,7 +48,8 @@
         self.autocompleter = new SqlAutocompleter({
         self.autocompleter = new SqlAutocompleter({
           hdfsAutocompleter: hdfsAutocompleter,
           hdfsAutocompleter: hdfsAutocompleter,
           snippet: options.snippet,
           snippet: options.snippet,
-          oldEditor: options.oldEditor
+          oldEditor: options.oldEditor,
+          optEnabled: options.optEnabled
         })
         })
       } else {
       } else {
         self.autocompleter = hdfsAutocompleter;
         self.autocompleter = hdfsAutocompleter;

+ 29 - 19
desktop/core/src/desktop/static/desktop/js/sqlAutocompleter.js

@@ -35,6 +35,7 @@
     self.snippet = options.snippet;
     self.snippet = options.snippet;
     self.hdfsAutocompleter = options.hdfsAutocompleter;
     self.hdfsAutocompleter = options.hdfsAutocompleter;
     self.oldEditor = options.oldEditor || false;
     self.oldEditor = options.oldEditor || false;
+    self.optEnabled = options.optEnabled || false;
 
 
     self.topTablesPerDb = {};
     self.topTablesPerDb = {};
 
 
@@ -44,20 +45,22 @@
         sourceType: self.snippet.type(),
         sourceType: self.snippet.type(),
         silenceErrors: true,
         silenceErrors: true,
         successCallback: function () {
         successCallback: function () {
-          $.each(self.snippet.getAssistHelper().lastKnownDatabases[self.snippet.type()], function (idx, db) {
-            if (db === 'default') {
-              $.post('/metadata/api/optimizer_api/top_tables', {
-                database: db
-              }, function(data){
-                if (! self.topTablesPerDb[db]) {
-                  self.topTablesPerDb[db] = {};
-                }
-                data.top_tables.forEach(function (table) {
-                  self.topTablesPerDb[db][table.name] = table;
+          if (self.optEnabled) {
+            $.each(self.snippet.getAssistHelper().lastKnownDatabases[self.snippet.type()], function (idx, db) {
+              if (db === 'default') {
+                $.post('/metadata/api/optimizer_api/top_tables', {
+                  database: db
+                }, function(data){
+                  if (! self.topTablesPerDb[db]) {
+                    self.topTablesPerDb[db] = {};
+                  }
+                  data.top_tables.forEach(function (table) {
+                    self.topTablesPerDb[db][table.name] = table;
+                  });
                 });
                 });
-              });
-            }
-          });
+              }
+            });
+          }
         }
         }
       });
       });
     };
     };
@@ -251,7 +254,7 @@
       var fetchImpalaFields = function (remainingParts, topValues) {
       var fetchImpalaFields = function (remainingParts, topValues) {
         completeFields.push(remainingParts.shift());
         completeFields.push(remainingParts.shift());
         if (remainingParts.length > 0 && remainingParts[0] == "value" || remainingParts[0] == "key") {
         if (remainingParts.length > 0 && remainingParts[0] == "value" || remainingParts[0] == "key") {
-          fetchImpalaFields(remainingParts);
+          fetchImpalaFields(remainingParts, topValues);
         } else {
         } else {
           self.snippet.getAssistHelper().fetchFields({
           self.snippet.getAssistHelper().fetchFields({
             sourceType: self.snippet.type(),
             sourceType: self.snippet.type(),
@@ -262,10 +265,10 @@
             successCallback: function (data) {
             successCallback: function (data) {
               if (data.type === "map") {
               if (data.type === "map") {
                 completeFields.push("value");
                 completeFields.push("value");
-                fetchImpalaFields(remainingParts);
+                fetchImpalaFields(remainingParts, topValues);
               } else if (data.type === "array") {
               } else if (data.type === "array") {
                 completeFields.push("item");
                 completeFields.push("item");
-                fetchImpalaFields(remainingParts);
+                fetchImpalaFields(remainingParts, topValues);
               } else if (remainingParts.length == 0 && data.sample) {
               } else if (remainingParts.length == 0 && data.sample) {
                 var isString = data.type === "string";
                 var isString = data.type === "string";
                 var values = $.map(data.sample.sort(), function(value, index) {
                 var values = $.map(data.sample.sort(), function(value, index) {
@@ -288,7 +291,7 @@
         }
         }
       };
       };
 
 
-      if (fields.length === 1) {
+      if (fields.length === 1 && self.optEnabled) {
         $.post('/metadata/api/optimizer_api/popular_values', {
         $.post('/metadata/api/optimizer_api/popular_values', {
           database: database,
           database: database,
           tableName: tableName,
           tableName: tableName,
@@ -394,7 +397,12 @@
   };
   };
 
 
   SqlAutocompleter.prototype.autocomplete = function(beforeCursor, upToNextStatement, realCallback, editor) {
   SqlAutocompleter.prototype.autocomplete = function(beforeCursor, upToNextStatement, realCallback, editor) {
+    var self = this;
     var callback = function (values) {
     var callback = function (values) {
+      if (! self.optEnabled) {
+        realCallback(values);
+        return;
+      }
       if (values.length > 0) {
       if (values.length > 0) {
         var foundTables = {};
         var foundTables = {};
         values.forEach(function (value) {
         values.forEach(function (value) {
@@ -437,7 +445,6 @@
 
 
     var allStatements = beforeCursor.split(';');
     var allStatements = beforeCursor.split(';');
 
 
-    var self = this;
 
 
     var hiveSyntax = self.snippet.type() === "hive";
     var hiveSyntax = self.snippet.type() === "hive";
     var impalaSyntax = self.snippet.type() === "impala";
     var impalaSyntax = self.snippet.type() === "impala";
@@ -680,7 +687,7 @@
               }
               }
 
 
               var startedMatch = beforeCursorU.match(/.* (WHERE|AND|OR)\s+(\S*)$/);
               var startedMatch = beforeCursorU.match(/.* (WHERE|AND|OR)\s+(\S*)$/);
-              if (keywordBeforeCursor === "WHERE" && startedMatch) {
+              if (self.optEnabled && keywordBeforeCursor === "WHERE" && startedMatch) {
                 $.post('/metadata/api/optimizer_api/popular_values', {
                 $.post('/metadata/api/optimizer_api/popular_values', {
                   database: database,
                   database: database,
                   tableName: tableName
                   tableName: tableName
@@ -828,6 +835,9 @@
   
   
   SqlAutocompleter.prototype.getDocTooltip = function (item) {
   SqlAutocompleter.prototype.getDocTooltip = function (item) {
     var self = this;
     var self = this;
+    if (! self.optEnabled) {
+      return;
+    }
     if (item.meta === 'table' && !item.docHTML) {
     if (item.meta === 'table' && !item.docHTML) {
       var table = item.value;
       var table = item.value;
       if (table.lastIndexOf(' ') > -1) {
       if (table.lastIndexOf(' ') > -1) {

+ 5 - 3
desktop/core/src/desktop/static/desktop/spec/sqlAutocompleterSpec.js

@@ -88,7 +88,7 @@ define([
 
 
     beforeEach(function(done) {
     beforeEach(function(done) {
       changeType("genericSqlType", done);
       changeType("genericSqlType", done);
-      subject = new SqlAutocompleter({ snippet: snippet });
+      subject = new SqlAutocompleter({ snippet: snippet, optEnabled: false });
       ajaxHelper.responseForUrls = {};
       ajaxHelper.responseForUrls = {};
     });
     });
 
 
@@ -341,7 +341,8 @@ define([
                 ])
                 ])
               }
               }
             },
             },
-            snippet: snippet
+            snippet: snippet,
+            optEnabled: false
           });
           });
         });
         });
 
 
@@ -681,7 +682,8 @@ define([
                 ])
                 ])
               }
               }
             },
             },
-            snippet: snippet
+            snippet: snippet,
+            optEnabled: false
           });
           });
         });
         });
 
 

+ 2 - 1
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -907,7 +907,8 @@
 
 
     self.autocompleter = new Autocompleter({
     self.autocompleter = new Autocompleter({
       snippet: self,
       snippet: self,
-      user: vm.user
+      user: vm.user,
+      optEnabled: false
     });
     });
 
 
     self.init = function () {
     self.init = function () {