浏览代码

HUE-6958 [autocomplete] Improve autocomplete of Hive windowing statements

Johan Ahlen 8 年之前
父节点
当前提交
7ef398f

+ 9 - 1
desktop/core/src/desktop/static/desktop/js/autocomplete/jison/sql_main.jison

@@ -3435,12 +3435,13 @@ OptionalWindowSpec
 
 WindowSpec
  : RowsOrRange 'BETWEEN' PopLexerState OptionalCurrentOrPreceding OptionalAndFollowing
+ | RowsOrRange 'UNBOUNDED' PopLexerState OptionalCurrentOrPreceding OptionalAndFollowing
  ;
 
 WindowSpec_EDIT
  : RowsOrRange 'CURSOR'
    {
-     parser.suggestKeywords(['BETWEEN']);
+     parser.suggestKeywords(parser.isHive() ? ['BETWEEN', 'UNBOUNDED'] : ['BETWEEN']);
    }
  | RowsOrRange 'BETWEEN' PopLexerState OptionalCurrentOrPreceding OptionalAndFollowing 'CURSOR'
    {
@@ -3452,6 +3453,13 @@ WindowSpec_EDIT
    }
  | RowsOrRange 'BETWEEN' PopLexerState OptionalCurrentOrPreceding_EDIT OptionalAndFollowing
  | RowsOrRange 'BETWEEN' PopLexerState OptionalCurrentOrPreceding OptionalAndFollowing_EDIT
+ | RowsOrRange 'UNBOUNDED' PopLexerState OptionalCurrentOrPreceding 'CURSOR'
+   {
+     if (!$4 && parser.isHive()) {
+       parser.suggestKeywords(['PRECEDING']);
+     }
+   }
+ | RowsOrRange 'UNBOUNDED' PopLexerState OptionalCurrentOrPreceding_EDIT
  ;
 
 PopLexerState

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

@@ -1364,6 +1364,7 @@
         assertAutoComplete({
           beforeCursor: 'SELECT row_number() OVER (PARTITION BY a ORDER BY b ROWS ',
           afterCursor: '',
+          dialect: 'impala',
           expectedResult: {
             lowerCase: false,
             suggestKeywords: ['BETWEEN']
@@ -1554,6 +1555,30 @@
             }
           });
         });
+
+        it('should suggest keywords for "SELECT row_number() OVER (PARTITION BY a ORDER BY b ROWS |"', function() {
+          assertAutoComplete({
+            beforeCursor: 'SELECT row_number() OVER (PARTITION BY a ORDER BY b ROWS ',
+            afterCursor: '',
+            dialect: 'hive',
+            expectedResult: {
+              lowerCase: false,
+              suggestKeywords: ['BETWEEN', 'UNBOUNDED']
+            }
+          });
+        });
+
+        it('should suggest keywords for "SELECT row_number() OVER (PARTITION BY a ORDER BY b ROWS UNBOUNDED |"', function() {
+          assertAutoComplete({
+            beforeCursor: 'SELECT row_number() OVER (PARTITION BY a ORDER BY b ROWS UNBOUNDED ',
+            afterCursor: '',
+            dialect: 'hive',
+            expectedResult: {
+              lowerCase: false,
+              suggestKeywords: ['PRECEDING']
+            }
+          });
+        });
       });
     });
 

文件差异内容过多而无法显示
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/autocomplete/sqlAutocompleteParser.js


文件差异内容过多而无法显示
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/autocomplete/sqlSyntaxParser.js


部分文件因为文件数量过多而无法显示