Parcourir la source

[notebook] Support autocomplete for any SQL dialect

Johan Ahlen il y a 10 ans
Parent
commit
9cc44cd8bb

+ 8 - 4
desktop/core/src/desktop/static/desktop/js/autocomplete.js

@@ -92,12 +92,17 @@ Autocompleter.prototype.getFromReferenceIndex = function (statement) {
   return result;
 };
 
-Autocompleter.prototype.getViewReferenceIndex = function (statement) {
+Autocompleter.prototype.getViewReferenceIndex = function (statement, hiveSyntax) {
   var result = {
     allViewReferences: [],
     index: {}
   };
 
+  // For now we only support LATERAL VIEW references for Hive
+  if (! hiveSyntax) {
+    return result;
+  }
+
   // Matches both arrays and maps "AS ref" or "AS (keyRef, valueRef)" and with
   // or without view reference.
   // group 1 = pos for posexplode or undefined
@@ -239,8 +244,7 @@ Autocompleter.prototype.autocomplete = function(beforeCursor, afterCursor, callb
 
   if (typeof self.assistHelper.activeDatabase() == "undefined"
     || self.assistHelper.activeDatabase() == null
-    || self.assistHelper.activeDatabase() == ""
-    || (!hiveSyntax && !impalaSyntax)) {
+    || self.assistHelper.activeDatabase() == "") {
     onFailure();
     return;
   }
@@ -305,7 +309,7 @@ Autocompleter.prototype.autocomplete = function(beforeCursor, afterCursor, callb
     parts.pop();
 
     var fromReferences = self.getFromReferenceIndex(beforeCursor + afterCursor);
-    var viewReferences = self.getViewReferenceIndex(beforeCursor + afterCursor);
+    var viewReferences = self.getViewReferenceIndex(beforeCursor + afterCursor, hiveSyntax);
 
     var tableName = "";
 

+ 4 - 1
desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js

@@ -1927,7 +1927,10 @@ ko.bindingHandlers.aceEditor = {
         });
       }
 
-      if (typeof autocompleter != "undefined" && autocompleter != null && (editor.session.getMode().$id == "ace/mode/hive" || editor.session.getMode().$id == "ace/mode/impala")) {
+      if (typeof autocompleter != "undefined" && autocompleter != null && (
+          editor.session.getMode().$id == "ace/mode/hive" ||
+          editor.session.getMode().$id == "ace/mode/impala" ||
+          editor.session.getMode().$id == "ace/mode/sql")) {
         var before = editor.getTextBeforeCursor(";");
         var after = editor.getTextAfterCursor(";");
         editor.showSpinner();

+ 1 - 1
desktop/core/src/desktop/static/desktop/spec/autocompleteSpec.js

@@ -89,7 +89,7 @@ describe("autocomplete.js", function() {
   });
 
   beforeEach(function() {
-    subject = new Autocompleter(createOptions("hive"));
+    subject = new Autocompleter(createOptions("genericSqlType"));
     ajaxHelper.responseForUrls = {};
   });