Explorar o código

HUE-9099 [frontend] Extend the Hive parser MSCK syntax

Johan Ahlen %!s(int64=6) %!d(string=hai) anos
pai
achega
c82f1d4c93

+ 43 - 9
desktop/core/src/desktop/js/parse/jison/sql/hive/sql_alter.jison

@@ -751,32 +751,66 @@ AlterViewLeftSide_EDIT
  ;
 
 Msck
- : 'MSCK' 'REPAIR' 'TABLE' SchemaQualifiedTableIdentifier
+ : 'MSCK' OptionalRepair 'TABLE' SchemaQualifiedTableIdentifier OptionalAddDropSyncPartitions
    {
      parser.addTablePrimary($4);
    }
  ;
 
 Msck_EDIT
- : 'MSCK' 'CURSOR'
+ : 'MSCK' OptionalRepair 'CURSOR'
    {
-     parser.suggestKeywords(['REPAIR TABLE']);
-   }
- | 'MSCK' 'REPAIR' 'CURSOR'
-   {
-     parser.suggestKeywords(['TABLE']);
+     if (!$2) {
+       parser.suggestKeywords(['TABLE', 'REPAIR TABLE']);
+     } else {
+       parser.suggestKeywords(['TABLE']);
+     }
    }
- | 'MSCK' 'REPAIR' 'TABLE' 'CURSOR'
+ | 'MSCK' OptionalRepair 'TABLE' 'CURSOR'
    {
      parser.suggestTables({ onlyTables: true });
      parser.suggestDatabases({ appendDot: true });
    }
- | 'MSCK' 'REPAIR' 'TABLE' SchemaQualifiedTableIdentifier_EDIT
+ | 'MSCK' OptionalRepair 'TABLE' SchemaQualifiedTableIdentifier_EDIT
    {
      if (parser.yy.result.suggestTables) {
        parser.yy.result.suggestTables.onlyViews = true;
      }
    }
+ | 'MSCK' OptionalRepair 'TABLE' SchemaQualifiedTableIdentifier AddDropSyncPartitions_EDIT
+   {
+     parser.addTablePrimary($4);
+   }
+ | 'MSCK' OptionalRepair 'TABLE' SchemaQualifiedTableIdentifier OptionalAddDropSyncPartitions 'CURSOR'
+   {
+     parser.addTablePrimary($4);
+     if (!$5) {
+       parser.suggestKeywords(['ADD PARTITIONS', 'DROP PARTITIONS', 'SYNC PARTITIONS']);
+     }
+   }
+ ;
+
+OptionalRepair
+ :
+ | 'REPAIR'
+ ;
+
+OptionalAddDropSyncPartitions
+ :
+ | AddDropOrSync 'PARTITIONS'
+ ;
+
+AddDropSyncPartitions_EDIT
+ : AddDropOrSync 'CURSOR'
+   {
+     parser.suggestKeywords(['PARTITIONS']);
+   }
+ ;
+
+AddDropOrSync
+ : 'ADD'
+ | 'DROP'
+ | 'SYNC'
  ;
 
 ReloadFunction

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
desktop/core/src/desktop/js/parse/sql/hive/hiveAutocompleteParser.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
desktop/core/src/desktop/js/parse/sql/hive/hiveSyntaxParser.js


+ 34 - 0
desktop/core/src/desktop/js/parse/sql/hive/test/hiveAutocompleteParser.Alter.test.js

@@ -1684,6 +1684,18 @@ describe('hiveAutocompleteParser.js ALTER statements', () => {
       });
     });
 
+    it('should handle "MSCK REPAIR TABLE boo.baa SYNC PARTITIONS;|"', () => {
+      assertAutoComplete({
+        beforeCursor: 'MSCK REPAIR TABLE boo.baa SYNC PARTITIONS;',
+        afterCursor: '',
+        noErrors: true,
+        containsKeywords: ['SELECT'],
+        expectedResult: {
+          lowerCase: false
+        }
+      });
+    });
+
     it('should suggest keywords for "|"', () => {
       assertAutoComplete({
         beforeCursor: '',
@@ -1728,6 +1740,28 @@ describe('hiveAutocompleteParser.js ALTER statements', () => {
         }
       });
     });
+
+    it('should suggest keywords for "MSCK REPAIR TABLE boo |"', () => {
+      assertAutoComplete({
+        beforeCursor: 'MSCK REPAIR TABLE boo ',
+        afterCursor: '',
+        containsKeywords: ['DROP PARTITIONS'],
+        expectedResult: {
+          lowerCase: false
+        }
+      });
+    });
+
+    it('should suggest keywords for "MSCK REPAIR TABLE boo ADD |"', () => {
+      assertAutoComplete({
+        beforeCursor: 'MSCK REPAIR TABLE boo ADD ',
+        afterCursor: '',
+        expectedResult: {
+          lowerCase: false,
+          suggestKeywords: ['PARTITIONS']
+        }
+      });
+    });
   });
 
   describe('RELOAD FUNCTION', () => {

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio