Browse Source

HUE-4590 [editor] The new autocompleter should support INVALIDATE METADATA

Johan Ahlen 9 years ago
parent
commit
f593861357

+ 2 - 0
desktop/core/src/desktop/static/desktop/js/autocomplete/jison/sql.jisonlex

@@ -202,6 +202,7 @@
 <impala>'INSERT'                           { determineCase(yytext); return '<impala>INSERT'; }
 <impala>'INTERVAL'                         { return '<impala>INTERVAL'; }
 <impala>'INIT_FN'                          { return '<impala>INIT_FN'; }
+<impala>'INVALIDATE'                       { determineCase(yytext); return '<impala>INVALIDATE'; }
 <impala>'INPATH'                           { this.begin('hdfs'); return '<impala>INPATH'; }
 <impala>'LAST'                             { return '<impala>LAST'; }
 <impala>LIKE\s+PARQUET                     { this.begin('hdfs'); return '<impala>LIKE_PARQUET'; }
@@ -210,6 +211,7 @@
 <impala>'LOAD'                             { determineCase(yytext); return '<impala>LOAD'; }
 <impala>'LOCATION'                         { this.begin('hdfs'); return '<impala>LOCATION'; }
 <impala>'MERGE_FN'                         { return '<impala>MERGE_FN'; }
+<impala>'METADATA'                         { return '<impala>METADATA'; }
 <impala>'NULLS'                            { return '<impala>NULLS'; }
 <impala>'OFFSET'                           { return '<impala>OFFSET'; }
 <impala>'OVERWRITE'                        { return '<impala>OVERWRITE'; }

+ 23 - 0
desktop/core/src/desktop/static/desktop/js/autocomplete/jison/sql_analyze.jison

@@ -17,11 +17,13 @@
 DataDefinition
  : AnalyzeStatement
  | RefreshStatement
+ | InvalidateStatement
  ;
 
 DataDefinition_EDIT
  : AnalyzeStatement_EDIT
  | RefreshStatement_EDIT
+ | InvalidateStatement_EDIT
  ;
 
 AnalyzeStatement
@@ -140,4 +142,25 @@ RefreshStatement_EDIT
      suggestDatabases({ appendDot: true });
    }
  | '<impala>REFRESH' SchemaQualifiedTableIdentifier_EDIT
+ ;
+
+InvalidateStatement
+ : '<impala>INVALIDATE' '<impala>METADATA'
+ | '<impala>INVALIDATE' '<impala>METADATA' SchemaQualifiedTableIdentifier
+   {
+     addTablePrimary($3);
+   }
+ ;
+
+InvalidateStatement_EDIT
+ : '<impala>INVALIDATE' 'CURSOR'
+   {
+     suggestKeywords(['METADATA']);
+   }
+ | '<impala>INVALIDATE' '<impala>METADATA' 'CURSOR'
+   {
+     suggestTables();
+     suggestDatabases({ appendDot: true });
+   }
+ | '<impala>INVALIDATE' '<impala>METADATA' SchemaQualifiedTableIdentifier_EDIT
  ;

File diff suppressed because it is too large
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/autocomplete/sql.js


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

@@ -253,6 +253,88 @@ define([
       });
     });
 
+    describe('INVALIDATE METADATA', function () {
+      it('should handle "INVALIDATE METADATA;|"', function() {
+        assertAutoComplete({
+          beforeCursor: 'INVALIDATE METADATA;',
+          afterCursor: '',
+          dialect: 'impala',
+          noErrors:true,
+          containsKeywords: ['SELECT'],
+          expectedResult: {
+            lowerCase: false
+          }
+        });
+      });
+
+      it('should handle "INVALIDATE METADATA db.tbl;|"', function() {
+        assertAutoComplete({
+          beforeCursor: 'INVALIDATE METADATA db.tbl;',
+          afterCursor: '',
+          dialect: 'impala',
+          noErrors:true,
+          containsKeywords: ['SELECT'],
+          hasLocations: true,
+          expectedResult: {
+            lowerCase: false
+          }
+        });
+      });
+
+      it('should suggest keywords for "|"', function() {
+        assertAutoComplete({
+          beforeCursor: '',
+          afterCursor: '',
+          dialect: 'impala',
+          noErrors:true,
+          containsKeywords: ['INVALIDATE'],
+          expectedResult: {
+            lowerCase: false
+          }
+        });
+      });
+
+      it('should suggest keywords for "INVALIDATE |"', function() {
+        assertAutoComplete({
+          beforeCursor: 'INVALIDATE ',
+          afterCursor: '',
+          dialect: 'impala',
+          noErrors:true,
+          expectedResult: {
+            lowerCase: false,
+            suggestKeywords: ['METADATA']
+          }
+        });
+      });
+
+      it('should suggest tables for "INVALIDATE METADATA |"', function() {
+        assertAutoComplete({
+          beforeCursor: 'INVALIDATE METADATA ',
+          afterCursor: '',
+          dialect: 'impala',
+          noErrors:true,
+          expectedResult: {
+            lowerCase: false,
+            suggestTables: {},
+            suggestDatabases: { appendDot: true }
+          }
+        });
+      });
+
+      it('should suggest tables for "INVALIDATE METADATA db.|"', function() {
+        assertAutoComplete({
+          beforeCursor: 'INVALIDATE METADATA db.',
+          afterCursor: '',
+          dialect: 'impala',
+          noErrors:true,
+          expectedResult: {
+            lowerCase: false,
+            suggestTables: { identifierChain: [{ name: 'db' }]}
+          }
+        });
+      });
+    });
+
     describe('REFRESH', function () {
       it('should handle "REFRESH db.tbl;|"', function() {
         assertAutoComplete({
@@ -307,6 +389,6 @@ define([
           }
         });
       });
-    })
+    });
   });
 });

Some files were not shown because too many files changed in this diff