Przeglądaj źródła

HUE-6958 [autocomplete] Fix issue with autocomplete after Hive GROUPING SETS

Johan Ahlen 8 lat temu
rodzic
commit
d41145e

+ 10 - 13
desktop/core/src/desktop/static/desktop/js/autocomplete/jison/sql_main.jison

@@ -1849,9 +1849,13 @@ OptionalSelectConditions_EDIT
      if ($2.suggestKeywords) {
        keywords = keywords.concat(parser.createWeightedKeywords($2.suggestKeywords, 8));
      }
-     $$ = parser.getValueExpressionKeywords($2, keywords);
-     if ($2.columnReference) {
-       $$.columnReference = $2.columnReference;
+     if ($2.valueExpression) {
+       $$ = parser.getValueExpressionKeywords($2.valueExpression, keywords);
+       if ($2.valueExpression.columnReference) {
+         $$.columnReference = $2.valueExpression.columnReference;
+       }
+     } else {
+       $$ = { suggestKeywords: keywords };
      }
      $$.cursorAtEnd = !$4 && !$5 && !$6 && !$7 && !$8 && !$9;
      if (!$4 && !$5 && !$6) {
@@ -1951,16 +1955,9 @@ OptionalGroupByClause
 GroupByClause
  : AnyGroup 'BY' GroupByColumnList OptionalHiveGroupingSetsCubeOrRollup
    {
-     if (!$4) {
-       $$ = $3;
-       if (parser.isHive()) {
-         if (!$$.suggestKeywords) {
-           $$.suggestKeywords = [];
-         }
-         $$.suggestKeywords.push('GROUPING SETS');
-         $$.suggestKeywords.push('WITH CUBE');
-         $$.suggestKeywords.push('WITH ROLLUP');
-       }
+     $$ = { valueExpression: $4 ? false : $3 };
+     if (!$4 && parser.isHive()) {
+       $$.suggestKeywords = ['GROUPING SETS', 'WITH CUBE', 'WITH ROLLUP'];
      }
    }
  ;

+ 13 - 0
desktop/core/src/desktop/static/desktop/js/autocomplete/spec/sqlSpecSelect.js

@@ -5762,6 +5762,19 @@
             }
           });
         });
+
+        it('should suggest keywords for "SELECT a, b, SUM(c) FROM tab1 GROUP BY a, b GROUPING SETS (a,b) |"', function() {
+          assertAutoComplete({
+            beforeCursor: 'SELECT a, b, SUM(c) FROM tab1 GROUP BY a, b GROUPING SETS (a,b) ',
+            afterCursor: '',
+            dialect: 'hive',
+            containsKeywords: ['LIMIT'],
+            expectedResult: {
+              lowerCase: false,
+              suggestOrderBys: { prefix: 'ORDER BY', tables: [{ identifierChain: [{ name: 'tab1' }] }] }
+            }
+          });
+        });
       })
     });
 

Plik diff jest za duży
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/autocomplete/sqlAutocompleteParser.js


Plik diff jest za duży
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/autocomplete/sqlSyntaxParser.js


Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików