Przeglądaj źródła

[core] Support sql autocomplete after "group by"

Johan Ahlen 10 lat temu
rodzic
commit
da135b7

+ 3 - 2
desktop/core/src/desktop/static/desktop/js/sqlAutocompleter.js

@@ -22,7 +22,7 @@
   }
 }(this, function () {
 
-  var SQL_TERMS = /\b(FROM|TABLE|STATS|REFRESH|METADATA|DESCRIBE|ORDER BY|JOIN|ON|WHERE|SELECT|LIMIT|GROUP|SORT)\b/g;
+  var SQL_TERMS = /\b(FROM|TABLE|STATS|REFRESH|METADATA|DESCRIBE|ORDER BY|JOIN|ON|WHERE|SELECT|LIMIT|GROUP BY|SORT)\b/g;
 
   /**
    * @param options {object}
@@ -55,7 +55,7 @@
     var fromMatch = statement.match(/\s*from\s*([^;]*).*$/i);
     if (fromMatch) {
       var refsRaw = fromMatch[1];
-      var upToMatch = refsRaw.match(/\bLATERAL|VIEW|EXPLODE|POSEXPLODE|ON|LIMIT|WHERE|GROUP|SORT|ORDER BY\b/i);
+      var upToMatch = refsRaw.match(/\bLATERAL|VIEW|EXPLODE|POSEXPLODE|ON|LIMIT|WHERE|GROUP BY|SORT|ORDER BY\b/i);
       if (upToMatch) {
         refsRaw = $.trim(refsRaw.substring(0, upToMatch.index));
       }
@@ -316,6 +316,7 @@
 
     var fieldTermBefore = keywordBeforeCursor === "WHERE" ||
       keywordBeforeCursor === "ON" ||
+      keywordBeforeCursor === "GROUP BY" ||
       keywordBeforeCursor === "ORDER BY";
 
     var fromAfter = afterMatcher != null && afterMatcher[0] === "FROM";

+ 22 - 0
desktop/core/src/desktop/static/desktop/spec/sqlAutocompleterSpec.js

@@ -201,6 +201,15 @@ define([
         });
       });
 
+      it("should suggest aliases in GROUP BY", function() {
+        assertAutoComplete({
+          serverResponses: {},
+          beforeCursor: "SELECT * FROM testTableA tta, testTableB GROUP BY ",
+          afterCursor: "",
+          expectedSuggestions: ["testTableB.", "tta."]
+        });
+      });
+
       it("should only suggest table aliases", function() {
         assertAutoComplete({
           serverResponses: {},
@@ -783,6 +792,19 @@ define([
         });
       });
 
+      it("should suggest columns for table after GROUP BY ", function() {
+        assertAutoComplete({
+          serverResponses: {
+            "/notebook/api/autocomplete/testDb/testTable" : {
+              columns: ["testTableColumn1", "testTableColumn2"]
+            }
+          },
+          beforeCursor: "SELECT * FROM testTable GROUP BY ",
+          afterCursor: "",
+          expectedSuggestions: ["testTableColumn1", "testTableColumn2"]
+        });
+      });
+
       it("should suggest columns for table after ON ", function() {
         assertAutoComplete({
           serverResponses: {