Просмотр исходного кода

HUE-6835 [autocomplete] Update Impala REFRESH statements to the latest syntax

Johan Ahlen 8 лет назад
Родитель
Сommit
264ca3e

+ 19 - 2
desktop/core/src/desktop/static/desktop/js/autocomplete/jison/sql_analyze.jison

@@ -138,10 +138,14 @@ OptionalNoscan
  ;
 
 RefreshStatement
- : '<impala>REFRESH' SchemaQualifiedTableIdentifier
+ : '<impala>REFRESH' SchemaQualifiedTableIdentifier OptionalPartitionSpec
    {
      parser.addTablePrimary($2);
    }
+ | '<impala>REFRESH' '<impala>FUNCTIONS' DatabaseIdentifier
+   {
+     parser.addDatabaseLocation(@3, [{ name: $3 }]);
+   }
  ;
 
 RefreshStatement_EDIT
@@ -149,8 +153,21 @@ RefreshStatement_EDIT
    {
      parser.suggestTables();
      parser.suggestDatabases({ appendDot: true });
+     parser.suggestKeywords(['FUNCTIONS']);
+   }
+ | '<impala>REFRESH' SchemaQualifiedTableIdentifier_EDIT OptionalPartitionSpec
+ | '<impala>REFRESH' SchemaQualifiedTableIdentifier OptionalPartitionSpec 'CURSOR'
+   {
+     parser.addTablePrimary($2);
+     if (!$3) {
+       parser.suggestKeywords(['PARTITION']);
+     }
+   }
+ | '<impala>REFRESH' SchemaQualifiedTableIdentifier OptionalPartitionSpec_EDIT
+ | '<impala>REFRESH' '<impala>FUNCTIONS' 'CURSOR'
+   {
+     parser.suggestDatabases();
    }
- | '<impala>REFRESH' SchemaQualifiedTableIdentifier_EDIT
  ;
 
 InvalidateStatement

+ 55 - 1
desktop/core/src/desktop/static/desktop/js/autocomplete/spec/sqlSpecAnalyze.js

@@ -581,6 +581,33 @@
     });
 
     describe('REFRESH', function () {
+
+      it('should handle "REFRESH db.tbl PARTITION (id = 1);|"', function() {
+        assertAutoComplete({
+          beforeCursor: 'REFRESH db.tbl PARTITION (id = 1);',
+          afterCursor: '',
+          dialect: 'impala',
+          noErrors:true,
+          containsKeywords: ['SELECT'],
+          expectedResult: {
+            lowerCase: false
+          }
+        });
+      });
+
+      it('should handle "REFRESH FUNCTIONS db;|"', function() {
+        assertAutoComplete({
+          beforeCursor: 'REFRESH FUNCTIONS db;',
+          afterCursor: '',
+          dialect: 'impala',
+          noErrors:true,
+          containsKeywords: ['SELECT'],
+          expectedResult: {
+            lowerCase: false
+          }
+        });
+      });
+
       it('should handle "REFRESH db.tbl;|"', function() {
         assertAutoComplete({
           beforeCursor: 'REFRESH db.tbl;',
@@ -616,7 +643,21 @@
           expectedResult: {
             lowerCase: false,
             suggestTables: {},
-            suggestDatabases: { appendDot: true }
+            suggestDatabases: { appendDot: true },
+            suggestKeywords: ['FUNCTIONS']
+          }
+        });
+      });
+
+      it('should suggest databases for "REFRESH FUNCTIONS |"', function() {
+        assertAutoComplete({
+          beforeCursor: 'REFRESH FUNCTIONS ',
+          afterCursor: '',
+          dialect: 'impala',
+          noErrors:true,
+          expectedResult: {
+            lowerCase: false,
+            suggestDatabases: {}
           }
         });
       });
@@ -633,6 +674,19 @@
           }
         });
       });
+
+      it('should suggest keywords for "REFRESH db.tbl |"', function() {
+        assertAutoComplete({
+          beforeCursor: 'REFRESH db.tbl ',
+          afterCursor: '',
+          dialect: 'impala',
+          noErrors:true,
+          expectedResult: {
+            lowerCase: false,
+            suggestKeywords: ['PARTITION']
+          }
+        });
+      });
     });
   });
 })();

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/autocomplete/sqlAutocompleteParser.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/autocomplete/sqlSyntaxParser.js


Некоторые файлы не были показаны из-за большого количества измененных файлов