Forráskód Böngészése

HUE-8959 [autocomplete] Update the Impala parser to support new GRANT and REVOKE syntax

Johan Ahlen 6 éve
szülő
commit
c8a49bd575

+ 6 - 6
desktop/core/src/desktop/js/parse/jison/sql/impala/sql_grant.jison

@@ -27,7 +27,7 @@ DataDefinition_EDIT
 GrantStatement
  : 'GRANT' 'ROLE' RegularOrBacktickedIdentifier 'TO' 'GROUP' RegularOrBacktickedIdentifier
  | 'GRANT' PrivilegeType 'ON' ObjectSpecification 'TO' RegularOrBacktickedIdentifier OptionalWithGrantOption
- | 'GRANT' PrivilegeType 'ON' ObjectSpecification 'TO' 'ROLE' RegularOrBacktickedIdentifier OptionalWithGrantOption
+ | 'GRANT' PrivilegeType 'ON' ObjectSpecification 'TO' GroupRoleOrUser RegularOrBacktickedIdentifier OptionalWithGrantOption
  ;
 
 GrantStatement_EDIT
@@ -67,7 +67,7 @@ GrantStatement_EDIT
    }
  | 'GRANT' PrivilegeType 'ON' ObjectSpecification 'TO' 'CURSOR'
    {
-     parser.suggestKeywords(['ROLE']);
+     parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
    }
  | 'GRANT' PrivilegeType 'ON' ObjectSpecification 'TO' RegularOrBacktickedIdentifier OptionalWithGrantOption 'CURSOR'
    {
@@ -76,13 +76,13 @@ GrantStatement_EDIT
      }
    }
  | 'GRANT' PrivilegeType 'ON' ObjectSpecification 'TO' RegularOrBacktickedIdentifier WithGrantOption_EDIT
- | 'GRANT' PrivilegeType 'ON' ObjectSpecification 'TO' 'ROLE' RegularOrBacktickedIdentifier OptionalWithGrantOption 'CURSOR'
+ | 'GRANT' PrivilegeType 'ON' ObjectSpecification 'TO' GroupRoleOrUser RegularOrBacktickedIdentifier OptionalWithGrantOption 'CURSOR'
    {
      if (!$8) {
        parser.suggestKeywords(['WITH GRANT OPTION']);
      }
    }
- | 'GRANT' PrivilegeType 'ON' ObjectSpecification 'TO' 'ROLE' RegularOrBacktickedIdentifier WithGrantOption_EDIT
+ | 'GRANT' PrivilegeType 'ON' ObjectSpecification 'TO' GroupRoleOrUser RegularOrBacktickedIdentifier WithGrantOption_EDIT
  ;
 
 ObjectSpecification
@@ -149,7 +149,7 @@ WithGrantOption_EDIT
 RevokeStatement
  : 'REVOKE' 'ROLE' RegularOrBacktickedIdentifier 'FROM' 'GROUP' RegularOrBacktickedIdentifier
  | 'REVOKE' PrivilegeType 'ON' ObjectSpecification 'FROM' RegularOrBacktickedIdentifier
- | 'REVOKE' PrivilegeType 'ON' ObjectSpecification 'FROM' 'ROLE' RegularOrBacktickedIdentifier
+ | 'REVOKE' PrivilegeType 'ON' ObjectSpecification 'FROM' GroupRoleOrUser RegularOrBacktickedIdentifier
  ;
 
 RevokeStatement_EDIT
@@ -189,6 +189,6 @@ RevokeStatement_EDIT
    }
  | 'REVOKE' PrivilegeType 'ON' ObjectSpecification 'FROM' 'CURSOR'
    {
-     parser.suggestKeywords(['ROLE']);
+     parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
    }
  ;

+ 7 - 1
desktop/core/src/desktop/js/parse/jison/sql/impala/sql_main.jison

@@ -100,7 +100,6 @@ NonReservedKeyword
  | 'KEY'
  | 'OPTION'
  | 'OWNER'
- | 'ROLE'
  | 'SERVER'
  | 'STRUCT'
  | 'URI'
@@ -553,6 +552,13 @@ DatabasesOrSchemas
  | 'SCHEMAS'
  ;
 
+
+GroupRoleOrUser
+ : 'GROUP'
+ | 'ROLE'
+ | 'USER'
+ ;
+
 RoleOrUser
  : 'ROLE'
  | 'USER'

+ 13 - 13
desktop/core/src/desktop/js/parse/jison/sql/impala/sql_show.jison

@@ -230,43 +230,43 @@ ShowFunctionsStatement_EDIT
  ;
 
 ShowGrantStatement
- : 'SHOW' 'GRANT' RoleOrUser RegularOrBacktickedIdentifier
- | 'SHOW' 'GRANT' RoleOrUser RegularOrBacktickedIdentifier 'ON' 'DATABASE' RegularOrBacktickedIdentifier
+ : 'SHOW' 'GRANT' GroupRoleOrUser RegularOrBacktickedIdentifier
+ | 'SHOW' 'GRANT' GroupRoleOrUser RegularOrBacktickedIdentifier 'ON' 'DATABASE' RegularOrBacktickedIdentifier
    {
      parser.addDatabaseLocation(@7, [ { name: $7 } ]);
    }
- | 'SHOW' 'GRANT' RoleOrUser RegularOrBacktickedIdentifier 'ON' 'SERVER'
- | 'SHOW' 'GRANT' RoleOrUser RegularOrBacktickedIdentifier 'ON' 'TABLE' SchemaQualifiedTableIdentifier
- | 'SHOW' 'GRANT' RoleOrUser RegularOrBacktickedIdentifier 'ON' 'URI' RegularOrBacktickedIdentifier
+ | 'SHOW' 'GRANT' GroupRoleOrUser RegularOrBacktickedIdentifier 'ON' 'SERVER'
+ | 'SHOW' 'GRANT' GroupRoleOrUser RegularOrBacktickedIdentifier 'ON' 'TABLE' SchemaQualifiedTableIdentifier
+ | 'SHOW' 'GRANT' GroupRoleOrUser RegularOrBacktickedIdentifier 'ON' 'URI' RegularOrBacktickedIdentifier
  ;
 
 ShowGrantStatement_EDIT
  : 'SHOW' 'GRANT' 'CURSOR'
    {
-     parser.suggestKeywords(['ROLE', 'USER']);
+     parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
    }
- | 'SHOW' 'GRANT' RoleOrUser 'CURSOR'
- | 'SHOW' 'GRANT' RoleOrUser RegularOrBacktickedIdentifier 'CURSOR'
+ | 'SHOW' 'GRANT' GroupRoleOrUser 'CURSOR'
+ | 'SHOW' 'GRANT' GroupRoleOrUser RegularOrBacktickedIdentifier 'CURSOR'
    {
      parser.suggestKeywords(['ON DATABASE', 'ON SERVER', 'ON TABLE', 'ON URI']);
    }
- | 'SHOW' 'GRANT' RoleOrUser RegularOrBacktickedIdentifier 'ON' 'CURSOR'
+ | 'SHOW' 'GRANT' GroupRoleOrUser RegularOrBacktickedIdentifier 'ON' 'CURSOR'
    {
      parser.suggestKeywords(['DATABASE', 'SERVER', 'TABLE', 'URI']);
    }
- | 'SHOW' 'GRANT' RoleOrUser RegularOrBacktickedIdentifier 'ON' 'DATABASE' 'CURSOR'
+ | 'SHOW' 'GRANT' GroupRoleOrUser RegularOrBacktickedIdentifier 'ON' 'DATABASE' 'CURSOR'
    {
      parser.suggestDatabases();
    }
- | 'SHOW' 'GRANT' RoleOrUser RegularOrBacktickedIdentifier 'ON' 'TABLE' 'CURSOR'
+ | 'SHOW' 'GRANT' GroupRoleOrUser RegularOrBacktickedIdentifier 'ON' 'TABLE' 'CURSOR'
    {
      parser.suggestDatabases({
        appendDot: true
      });
      parser.suggestTables();
    }
- | 'SHOW' 'GRANT' RoleOrUser RegularOrBacktickedIdentifier 'ON' 'TABLE' SchemaQualifiedTableIdentifier_EDIT
- | 'SHOW' 'GRANT' RoleOrUser RegularOrBacktickedIdentifier 'ON' 'URI' 'CURSOR'
+ | 'SHOW' 'GRANT' GroupRoleOrUser RegularOrBacktickedIdentifier 'ON' 'TABLE' SchemaQualifiedTableIdentifier_EDIT
+ | 'SHOW' 'GRANT' GroupRoleOrUser RegularOrBacktickedIdentifier 'ON' 'URI' 'CURSOR'
  ;
 
 OptionalPrincipalName

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
desktop/core/src/desktop/js/parse/sql/impala/impalaAutocompleteParser.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
desktop/core/src/desktop/js/parse/sql/impala/impalaSyntaxParser.js


+ 20 - 7
desktop/core/src/desktop/js/parse/sql/impala/spec/impalaAutocompleteParser_Grant_Spec.js

@@ -69,7 +69,7 @@ describe('impalaAutocompleteParser.js GRANT statements', () => {
         noErrors: true,
         expectedResult: {
           lowerCase: false,
-          suggestKeywords: ['ROLE']
+          suggestKeywords: ['GROUP', 'ROLE', 'USER']
         }
       });
     });
@@ -178,12 +178,12 @@ describe('impalaAutocompleteParser.js GRANT statements', () => {
         noErrors: true,
         expectedResult: {
           lowerCase: false,
-          suggestKeywords: ['ROLE']
+          suggestKeywords: ['GROUP', 'ROLE', 'USER']
         }
       });
     });
 
-    it('should suggest keywords for "GRANT ALL ON TABLE tbl TO bla |"', () => {
+    it('should suggest keywords for "GRANT ALL ON TABLE tbl TO USER bla |"', () => {
       assertAutoComplete({
         beforeCursor: 'GRANT ALL ON TABLE tbl TO bla ',
         afterCursor: '',
@@ -207,9 +207,9 @@ describe('impalaAutocompleteParser.js GRANT statements', () => {
       });
     });
 
-    it('should suggest keywords for "GRANT ALL ON TABLE tbl TO bla WITH GRANT |"', () => {
+    it('should suggest keywords for "GRANT ALL ON TABLE tbl TO GROUP bla WITH GRANT |"', () => {
       assertAutoComplete({
-        beforeCursor: 'GRANT ALL ON TABLE tbl TO bla WITH GRANT ',
+        beforeCursor: 'GRANT ALL ON TABLE tbl TO GROUP bla WITH GRANT ',
         afterCursor: '',
         noErrors: true,
         expectedResult: {
@@ -374,7 +374,7 @@ describe('impalaAutocompleteParser.js GRANT statements', () => {
         noErrors: true,
         expectedResult: {
           lowerCase: false,
-          suggestKeywords: ['ROLE']
+          suggestKeywords: ['GROUP', 'ROLE', 'USER']
         }
       });
     });
@@ -386,7 +386,7 @@ describe('impalaAutocompleteParser.js GRANT statements', () => {
         noErrors: true,
         expectedResult: {
           lowerCase: false,
-          suggestKeywords: ['ROLE']
+          suggestKeywords: ['GROUP', 'ROLE', 'USER']
         }
       });
     });
@@ -440,6 +440,19 @@ describe('impalaAutocompleteParser.js GRANT statements', () => {
       });
     });
 
+    it('should handle "REVOKE SELECT(id) ON SERVER ble FROM USER bla;|"', () => {
+      assertAutoComplete({
+        beforeCursor: 'REVOKE SELECT ON SERVER ble FROM USER bla;',
+        afterCursor: '',
+        noErrors: true,
+        containsKeywords: ['SELECT'],
+        hasLocations: false,
+        expectedResult: {
+          lowerCase: false
+        }
+      });
+    });
+
     it('should handle "REVOKE INSERT ON TABLE ble FROM bla;|"', () => {
       assertAutoComplete({
         beforeCursor: 'REVOKE INSERT ON TABLE ble FROM bla;',

+ 1 - 1
desktop/core/src/desktop/js/parse/sql/impala/spec/impalaAutocompleteParser_Show_Spec.js

@@ -462,7 +462,7 @@ describe('impalaAutocompleteParser.js SHOW statements', () => {
       afterCursor: '',
       expectedResult: {
         lowerCase: false,
-        suggestKeywords: ['ROLE', 'USER']
+        suggestKeywords: ['GROUP', 'ROLE', 'USER']
       }
     });
   });

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott