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

HUE-6835 [autocomplete] Add suggestions for dropping range partitions and recovering partitions

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

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

@@ -281,6 +281,7 @@
 <impala>'DEFAULT'                          { return '<impala>DEFAULT'; }
 <impala>'ENCODING'                         { return '<impala>ENCODING'; }
 <impala>'GRANT'                            { return '<impala>GRANT'; }
+<impala>'RECOVER'                          { return '<impala>RECOVER'; }
 <impala>'ROLE'                             { return '<impala>ROLE'; }
 <impala>'ROLES'                            { return '<impala>ROLES'; }
 <impala>\[BROADCAST\]                      { return '<impala>BROADCAST'; }

+ 48 - 43
desktop/core/src/desktop/static/desktop/js/autocomplete/jison/sql_alter.jison

@@ -88,6 +88,7 @@ AlterTable
  | AlterTableLeftSide DropOperations
  | AlterTableLeftSide OptionalPartitionOperations
  | AlterTableLeftSide PartitionSpec OptionalPartitionOperations
+ | AlterTableLeftSide '<impala>RECOVER' '<impala>PARTITIONS'
  ;
 
 AlterTable_EDIT
@@ -157,9 +158,9 @@ AlterTable_EDIT
          'RECOVER PARTITIONS', 'RENAME TO', 'REPLACE COLUMNS', 'SET FILEFORMAT', 'SET LOCATION', 'SET SERDE',
          'SET SERDEPROPERTIES', 'SET SKEWED LOCATION', 'SET TBLPROPERTIES', 'SKEWED BY', 'TOUCH', 'UNARCHIVE PARTITION']);
      } else if (parser.isImpala()) {
-       parser.suggestKeywords(['ADD COLUMNS', 'ADD PARTITION', 'CHANGE', 'DROP COLUMN', 'DROP PARTITION', 'PARTITION',
-         'RENAME TO', 'REPLACE COLUMNS', 'SET CACHED IN', 'SET FILEFORMAT', 'SET LOCATION', 'SET SERDEPROPERTIES',
-         'SET TBLPROPERTIES', 'SET UNCACHED']);
+       parser.suggestKeywords(['ADD COLUMNS', 'ADD PARTITION', 'ADD RANGE PARTITION', 'CHANGE', 'DROP COLUMN',
+         'DROP PARTITION', 'DROP RANGE PARTITION', 'PARTITION', 'RECOVER PARTITIONS', 'RENAME TO', 'REPLACE COLUMNS',
+         'SET CACHED IN', 'SET FILEFORMAT', 'SET LOCATION','SET SERDEPROPERTIES', 'SET TBLPROPERTIES', 'SET UNCACHED']);
      }
    }
  | AlterTableLeftSide PartitionSpec 'CURSOR'
@@ -178,21 +179,21 @@ AlterTable_EDIT
      parser.suggestKeywords(['COLUMNS']);
    }
  | AlterTableLeftSide PartitionSpec 'SET' 'CURSOR'
-    {
-      if (parser.isHive()) {
-        parser.suggestKeywords(['FILEFORMAT', 'LOCATION', 'SERDE', 'SERDEPROPERTIES']);
-      } else if (parser.isImpala()) {
-        parser.suggestKeywords(['CACHED IN', 'FILEFORMAT', 'LOCATION', 'SERDEPROPERTIES','TBLPROPERTIES', 'UNCACHED']);
-      }
-    }
+   {
+     if (parser.isHive()) {
+       parser.suggestKeywords(['FILEFORMAT', 'LOCATION', 'SERDE', 'SERDEPROPERTIES']);
+     } else if (parser.isImpala()) {
+       parser.suggestKeywords(['CACHED IN', 'FILEFORMAT', 'LOCATION', 'SERDEPROPERTIES','TBLPROPERTIES', 'UNCACHED']);
+     }
+   }
  | AlterTableLeftSide 'SET' 'CURSOR'
-    {
-      if (parser.isHive()) {
-        parser.suggestKeywords(['FILEFORMAT', 'LOCATION', 'SERDE', 'SERDEPROPERTIES', 'SKEWED LOCATION', 'TBLPROPERTIES']);
-      } else if (parser.isImpala()) {
-        parser.suggestKeywords(['CACHED IN', 'FILEFORMAT', 'LOCATION', 'SERDEPROPERTIES', 'TBLPROPERTIES', 'UNCACHED']);
-      }
-    }
+   {
+     if (parser.isHive()) {
+       parser.suggestKeywords(['FILEFORMAT', 'LOCATION', 'SERDE', 'SERDEPROPERTIES', 'SKEWED LOCATION', 'TBLPROPERTIES']);
+     } else if (parser.isImpala()) {
+       parser.suggestKeywords(['CACHED IN', 'FILEFORMAT', 'LOCATION', 'SERDEPROPERTIES', 'TBLPROPERTIES', 'UNCACHED']);
+     }
+   }
  | AlterTableLeftSide PartitionSpec OptionalPartitionOperations_EDIT
  | AlterTableLeftSide AnyRename 'CURSOR'
    {
@@ -202,6 +203,10 @@ AlterTable_EDIT
    {
      parser.suggestDatabases({ appendDot: true });
    }
+ | AlterTableLeftSide '<impala>RECOVER' 'CURSOR'
+   {
+     parser.suggestKeywords(['PARTITIONS']);
+   }
  ;
 
 HiveSpecificOperations
@@ -405,48 +410,48 @@ OneOrMorePartitionSpecLists_EDIT
  ;
 
 DropOperations
- : 'DROP' OneOrMorePartitionSpecs OptionalHivePurge
- | 'DROP' 'IF' 'EXISTS' OneOrMorePartitionSpecs OptionalHivePurge
- | 'DROP' ColumnIdentifier
+ : 'DROP' OptionalIfExists OneOrMorePartitionSpecs OptionalHivePurge
+ | 'DROP' OptionalIfExists '<impala>RANGE'
+ | 'DROP' OptionalIfExists '<impala>RANGE' 'PARTITION' RangePartitionSpec
+ | 'DROP' OptionalIfExists '<impala>RANGE' '<impala>PARTITION_VALUE' '=' UnsignedValueSpecification
  | 'DROP' '<impala>COLUMN' ColumnIdentifier
  ;
 
-DropOperations
- : 'DROP' 'CURSOR'
+DropOperations_EDIT
+ : 'DROP' OptionalIfExists 'CURSOR'
    {
-     if (parser.isHive()) {
+     if (parser.isHive() && !$2) {
        parser.suggestKeywords([{ value: 'PARTITION', weight: 1}, { value: 'IF EXISTS', weight: 2 }]);
-     } else if (parser.isImpala()) {
-       parser.suggestKeywords(['COLUMN', 'PARTITION']);
+     } else if (parser.isHive()) {
+        parser.suggestKeywords(['PARTITION']);
+     } else if (parser.isImpala() && !$2) {
+       parser.suggestKeywords([{ value: 'COLUMN', weight: 1 }, { value: 'PARTITION', weight: 1 }, { value: 'RANGE PARTITION', weight: 1 }, { value: 'IF EXISTS', weight: 2 }]);
        parser.suggestColumns();
+     } else if (parser.isImpala()) {
+       parser.suggestKeywords(['PARTITION', 'RANGE PARTITION']);
      }
    }
- | 'DROP' OneOrMorePartitionSpecs_EDIT OptionalHivePurge
- | 'DROP' OneOrMorePartitionSpecs OptionalHivePurge 'CURSOR'
+ | 'DROP' OptionalIfExists OneOrMorePartitionSpecs_EDIT OptionalHivePurge
+ | 'DROP' OptionalIfExists OneOrMorePartitionSpecs OptionalHivePurge 'CURSOR'
    {
-     if (parser.isHive() && !$3) {
+     if (parser.isHive() && !$4) {
        parser.suggestKeywords(['PURGE']);
      }
    }
- | 'DROP' 'IF' 'CURSOR'
+ | 'DROP' OptionalIfExists_EDIT
+ | 'DROP' OptionalIfExists '<impala>RANGE' 'CURSOR'
    {
-     if (parser.isHive()) {
-       parser.suggestKeywords(['EXISTS']);
-     }
+     parser.suggestKeywords(['PARTITION']);
    }
- | 'DROP' 'IF' 'EXISTS' 'CURSOR'
-    {
-      if (parser.isHive()) {
-        parser.suggestKeywords(['PARTITION']);
-      }
-    }
- | 'DROP' 'IF' 'EXISTS' OneOrMorePartitionSpecs_EDIT OptionalHivePurge
- | 'DROP' 'IF' 'EXISTS' OneOrMorePartitionSpecs OptionalHivePurge 'CURSOR'
+ | 'DROP' OptionalIfExists '<impala>RANGE' 'PARTITION' 'CURSOR'
    {
-     if (parser.isHive() && !$3) {
-       parser.suggestKeywords(['PURGE']);
-     }
+     parser.suggestKeywords(['VALUE']);
+   }
+ | 'DROP' OptionalIfExists '<impala>RANGE' '<impala>PARTITION_VALUE' 'CURSOR'
+   {
+     parser.suggestKeywords(['=']);
    }
+ | 'DROP' OptionalIfExists '<impala>RANGE' 'PARTITION' RangePartitionSpec_EDIT
  | 'DROP' ColumnIdentifier_EDIT
  | 'DROP' '<impala>COLUMN' 'CURSOR'
    {

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


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


+ 113 - 2
desktop/core/src/desktop/static/desktop/spec/autocomplete/sqlSpecAlter.js

@@ -1382,7 +1382,10 @@
             dialect: 'impala',
             expectedResult: {
               lowerCase: false,
-              suggestKeywords: ['ADD COLUMNS', 'ADD PARTITION', 'CHANGE', 'DROP COLUMN', 'DROP PARTITION', 'PARTITION', 'RENAME TO', 'REPLACE COLUMNS', 'SET CACHED IN', 'SET FILEFORMAT', 'SET LOCATION', 'SET SERDEPROPERTIES', 'SET TBLPROPERTIES', 'SET UNCACHED' ]
+              suggestKeywords: ['ADD COLUMNS', 'ADD PARTITION', 'ADD RANGE PARTITION', 'CHANGE',
+                'DROP COLUMN', 'DROP PARTITION', 'DROP RANGE PARTITION', 'PARTITION', 'RECOVER PARTITIONS',
+                'RENAME TO', 'REPLACE COLUMNS', 'SET CACHED IN', 'SET FILEFORMAT', 'SET LOCATION',
+                'SET SERDEPROPERTIES', 'SET TBLPROPERTIES', 'SET UNCACHED' ]
             }
           });
         });
@@ -1553,7 +1556,7 @@
             expectedResult: {
               lowerCase: false,
               suggestColumns: { tables: [{ identifierChain: [{ name: 'bar' }] }] },
-              suggestKeywords: ['COLUMN', 'PARTITION']
+              suggestKeywords: ['IF EXISTS', 'COLUMN', 'PARTITION', 'RANGE PARTITION']
             }
           });
         });
@@ -1571,6 +1574,102 @@
           });
         });
 
+        it('should suggest columns for "ALTER TABLE bar DROP IF |"', function() {
+          assertAutoComplete({
+            beforeCursor: 'ALTER TABLE bar DROP IF ',
+            afterCursor: '',
+            dialect: 'impala',
+            expectedResult: {
+              lowerCase: false,
+              suggestKeywords: ['EXISTS']
+            }
+          });
+        });
+
+        it('should suggest columns for "ALTER TABLE bar DROP IF EXISTS PARTITION (|"', function() {
+          assertAutoComplete({
+            beforeCursor: 'ALTER TABLE bar DROP IF EXISTS PARTITION (',
+            afterCursor: '',
+            dialect: 'impala',
+            expectedResult: {
+              lowerCase: false,
+              suggestColumns: { tables: [{ identifierChain: [{ name: 'bar' }] }] }
+            }
+          });
+        });
+
+        it('should suggest columns for "ALTER TABLE bar DROP RANGE |"', function() {
+          assertAutoComplete({
+            beforeCursor: 'ALTER TABLE bar DROP RANGE ',
+            afterCursor: '',
+            dialect: 'impala',
+            expectedResult: {
+              lowerCase: false,
+              suggestKeywords: ['PARTITION']
+            }
+          });
+        });
+
+        it('should suggest columns for "ALTER TABLE bar DROP IF EXISTS RANGE |"', function() {
+          assertAutoComplete({
+            beforeCursor: 'ALTER TABLE bar DROP IF EXISTS RANGE ',
+            afterCursor: '',
+            dialect: 'impala',
+            expectedResult: {
+              lowerCase: false,
+              suggestKeywords: ['PARTITION']
+            }
+          });
+        });
+
+        it('should suggest columns for "ALTER TABLE bar DROP IF EXISTS RANGE PARTITION |"', function() {
+          assertAutoComplete({
+            beforeCursor: 'ALTER TABLE bar DROP IF EXISTS RANGE PARTITION ',
+            afterCursor: '',
+            dialect: 'impala',
+            expectedResult: {
+              lowerCase: false,
+              suggestKeywords: ['VALUE']
+            }
+          });
+        });
+
+        it('should suggest columns for "ALTER TABLE bar DROP IF EXISTS RANGE PARTITION VALUE |"', function() {
+          assertAutoComplete({
+            beforeCursor: 'ALTER TABLE bar DROP IF EXISTS RANGE PARTITION VALUE ',
+            afterCursor: '',
+            dialect: 'impala',
+            expectedResult: {
+              lowerCase: false,
+              suggestKeywords: ['=']
+            }
+          });
+        });
+
+        it('should suggest columns for "ALTER TABLE bar DROP IF EXISTS RANGE PARTITION "a" |"', function() {
+          assertAutoComplete({
+            beforeCursor: 'ALTER TABLE bar DROP IF EXISTS RANGE PARTITION "a" ',
+            afterCursor: '',
+            dialect: 'impala',
+            expectedResult: {
+              lowerCase: false,
+              suggestKeywords: ['<', '<=', '<>', '=', '>', '>=']
+            }
+          });
+        });
+
+        it('should suggest columns for "ALTER TABLE bar DROP RANGE PARTITION "a" < |"', function() {
+          assertAutoComplete({
+            beforeCursor: 'ALTER TABLE bar DROP RANGE PARTITION "a" < ',
+            afterCursor: '',
+            dialect: 'impala',
+            expectedResult: {
+              lowerCase: false,
+              suggestKeywords: ['VALUES']
+            }
+          });
+        });
+
         it('should suggest keywords for "ALTER TABLE bar PARTITION (a=\'b\') |"', function() {
           assertAutoComplete({
             beforeCursor: 'ALTER TABLE bar PARTITION (a=\'b\') ',
@@ -1631,6 +1730,18 @@
             }
           });
         });
+
+        it('should suggest keywords for "ALTER TABLE bar RECOVER |"', function() {
+          assertAutoComplete({
+            beforeCursor: 'ALTER TABLE bar RECOVER ',
+            afterCursor: '',
+            dialect: 'impala',
+            expectedResult: {
+              lowerCase: false,
+              suggestKeywords: ['PARTITIONS']
+            }
+          });
+        });
       });
     });
 

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