|
@@ -25,22 +25,19 @@ DataDefinition_EDIT
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
GrantStatement
|
|
GrantStatement
|
|
|
- : '<hive>GRANT' HivePrivilegeTypeList OptionalOnSpecification 'TO' PrincipalSpecificationList OptionalWithGrantOption
|
|
|
|
|
- | '<hive>GRANT' UserOrRoleList 'TO' PrincipalSpecificationList OptionalWithAdminOption
|
|
|
|
|
- | '<hive>GRANT' '<hive>ROLE' UserOrRoleList 'TO' PrincipalSpecificationList OptionalWithAdminOption
|
|
|
|
|
- | '<impala>GRANT' '<impala>ROLE' RegularOrBacktickedIdentifier 'TO' '<impala>GROUP' RegularOrBacktickedIdentifier
|
|
|
|
|
- | '<impala>GRANT' ImpalaPrivilegeType 'ON' ImpalaObjectSpecification 'TO' RegularOrBacktickedIdentifier OptionalWithGrantOption
|
|
|
|
|
- | '<impala>GRANT' ImpalaPrivilegeType 'ON' ImpalaObjectSpecification 'TO' '<impala>ROLE' RegularOrBacktickedIdentifier OptionalWithGrantOption
|
|
|
|
|
|
|
+ : 'GRANT' PrivilegeTypeList OptionalOnSpecification 'TO' PrincipalSpecificationList OptionalWithGrantOption
|
|
|
|
|
+ | 'GRANT' UserOrRoleList 'TO' PrincipalSpecificationList OptionalWithAdminOption
|
|
|
|
|
+ | 'GRANT' 'ROLE' UserOrRoleList 'TO' PrincipalSpecificationList OptionalWithAdminOption
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
GrantStatement_EDIT
|
|
GrantStatement_EDIT
|
|
|
- : '<hive>GRANT' 'CURSOR'
|
|
|
|
|
|
|
+ : 'GRANT' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['ALL', 'ALTER', 'CREATE', 'DELETE', 'DROP', 'INDEX', 'INSERT', 'LOCK', 'ROLE', 'SELECT', 'UPDATE']);
|
|
parser.suggestKeywords(['ALL', 'ALTER', 'CREATE', 'DELETE', 'DROP', 'INDEX', 'INSERT', 'LOCK', 'ROLE', 'SELECT', 'UPDATE']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>GRANT' HivePrivilegeTypeList_EDIT OptionalOnSpecification
|
|
|
|
|
- | '<hive>GRANT' HivePrivilegeTypeList OnSpecification_EDIT
|
|
|
|
|
- | '<hive>GRANT' HivePrivilegeTypeList OptionalOnSpecification 'CURSOR'
|
|
|
|
|
|
|
+ | 'GRANT' PrivilegeTypeList_EDIT OptionalOnSpecification
|
|
|
|
|
+ | 'GRANT' PrivilegeTypeList OnSpecification_EDIT
|
|
|
|
|
+ | 'GRANT' PrivilegeTypeList OptionalOnSpecification 'CURSOR'
|
|
|
{
|
|
{
|
|
|
if (!$3) {
|
|
if (!$3) {
|
|
|
parser.suggestKeywords(['ON', 'TO']);
|
|
parser.suggestKeywords(['ON', 'TO']);
|
|
@@ -48,103 +45,51 @@ GrantStatement_EDIT
|
|
|
parser.suggestKeywords(['TO']);
|
|
parser.suggestKeywords(['TO']);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- | '<hive>GRANT' HivePrivilegeTypeList OptionalOnSpecification 'TO' 'CURSOR'
|
|
|
|
|
|
|
+ | 'GRANT' PrivilegeTypeList OptionalOnSpecification 'TO' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>GRANT' HivePrivilegeTypeList OptionalOnSpecification 'TO' PrincipalSpecificationList_EDIT
|
|
|
|
|
- | '<hive>GRANT' HivePrivilegeTypeList OptionalOnSpecification 'TO' PrincipalSpecificationList OptionalWithGrantOption 'CURSOR'
|
|
|
|
|
|
|
+ | 'GRANT' PrivilegeTypeList OptionalOnSpecification 'TO' PrincipalSpecificationList_EDIT
|
|
|
|
|
+ | 'GRANT' PrivilegeTypeList OptionalOnSpecification 'TO' PrincipalSpecificationList OptionalWithGrantOption 'CURSOR'
|
|
|
{
|
|
{
|
|
|
if (!$6) {
|
|
if (!$6) {
|
|
|
parser.suggestKeywords(['WITH GRANT OPTION']);
|
|
parser.suggestKeywords(['WITH GRANT OPTION']);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- | '<hive>GRANT' HivePrivilegeTypeList OptionalOnSpecification 'TO' PrincipalSpecificationList WithGrantOption_EDIT
|
|
|
|
|
- | '<hive>GRANT' UserOrRoleList 'CURSOR'
|
|
|
|
|
|
|
+ | 'GRANT' PrivilegeTypeList OptionalOnSpecification 'TO' PrincipalSpecificationList WithGrantOption_EDIT
|
|
|
|
|
+ | 'GRANT' UserOrRoleList 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['TO']);
|
|
parser.suggestKeywords(['TO']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>GRANT' UserOrRoleList 'TO' 'CURSOR'
|
|
|
|
|
|
|
+ | 'GRANT' UserOrRoleList 'TO' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>GRANT' UserOrRoleList 'TO' PrincipalSpecificationList_EDIT
|
|
|
|
|
- | '<hive>GRANT' UserOrRoleList 'TO' PrincipalSpecificationList OptionalWithAdminOption 'CURSOR'
|
|
|
|
|
|
|
+ | 'GRANT' UserOrRoleList 'TO' PrincipalSpecificationList_EDIT
|
|
|
|
|
+ | 'GRANT' UserOrRoleList 'TO' PrincipalSpecificationList OptionalWithAdminOption 'CURSOR'
|
|
|
{
|
|
{
|
|
|
if (!$5) {
|
|
if (!$5) {
|
|
|
parser.suggestKeywords(['WITH ADMIN OPTION']);
|
|
parser.suggestKeywords(['WITH ADMIN OPTION']);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- | '<hive>GRANT' UserOrRoleList 'TO' PrincipalSpecificationList WithAdminOption_EDIT
|
|
|
|
|
- | '<hive>GRANT' '<hive>ROLE' UserOrRoleList 'TO' 'CURSOR'
|
|
|
|
|
|
|
+ | 'GRANT' UserOrRoleList 'TO' PrincipalSpecificationList WithAdminOption_EDIT
|
|
|
|
|
+ | 'GRANT' 'ROLE' UserOrRoleList 'TO' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>GRANT' '<hive>ROLE' UserOrRoleList 'TO' PrincipalSpecificationList_EDIT
|
|
|
|
|
- | '<hive>GRANT' '<hive>ROLE' UserOrRoleList 'TO' PrincipalSpecificationList OptionalWithAdminOption 'CURSOR'
|
|
|
|
|
|
|
+ | 'GRANT' 'ROLE' UserOrRoleList 'TO' PrincipalSpecificationList_EDIT
|
|
|
|
|
+ | 'GRANT' 'ROLE' UserOrRoleList 'TO' PrincipalSpecificationList OptionalWithAdminOption 'CURSOR'
|
|
|
{
|
|
{
|
|
|
if (!$6) {
|
|
if (!$6) {
|
|
|
parser.suggestKeywords(['WITH ADMIN OPTION']);
|
|
parser.suggestKeywords(['WITH ADMIN OPTION']);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- | '<hive>GRANT' '<hive>ROLE' UserOrRoleList 'TO' PrincipalSpecificationList WithAdminOption_EDIT
|
|
|
|
|
- | '<impala>GRANT' 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- parser.suggestKeywords(['ALL', 'ALTER', 'CREATE', 'DROP', 'INSERT', 'REFRESH', 'ROLE', 'SELECT']);
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>GRANT' '<impala>ROLE' RegularOrBacktickedIdentifier 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- parser.suggestKeywords(['TO GROUP']);
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>GRANT' '<impala>ROLE' RegularOrBacktickedIdentifier 'TO' 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- parser.suggestKeywords(['GROUP']);
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>GRANT' ImpalaPrivilegeType_EDIT
|
|
|
|
|
- | '<impala>GRANT' ImpalaPrivilegeType 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- if ($2.isCreate) {
|
|
|
|
|
- parser.suggestKeywords(['ON DATABASE', 'ON SERVER']);
|
|
|
|
|
- } else {
|
|
|
|
|
- parser.suggestKeywords(['ON DATABASE', 'ON SERVER', 'ON TABLE', 'ON URI']);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>GRANT' ImpalaPrivilegeType 'ON' 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- if ($2.isCreate) {
|
|
|
|
|
- parser.suggestKeywords(['DATABASE', 'SERVER']);
|
|
|
|
|
- } else {
|
|
|
|
|
- parser.suggestKeywords(['DATABASE', 'SERVER', 'TABLE', 'URI']);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>GRANT' ImpalaPrivilegeType 'ON' ImpalaObjectSpecification_EDIT
|
|
|
|
|
- | '<impala>GRANT' ImpalaPrivilegeType 'ON' ImpalaObjectSpecification 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- parser.suggestKeywords(['TO']);
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>GRANT' ImpalaPrivilegeType 'ON' ImpalaObjectSpecification 'TO' 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- parser.suggestKeywords(['ROLE']);
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>GRANT' ImpalaPrivilegeType 'ON' ImpalaObjectSpecification 'TO' RegularOrBacktickedIdentifier OptionalWithGrantOption 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- if (!$7) {
|
|
|
|
|
- parser.suggestKeywords(['WITH GRANT OPTION']);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>GRANT' ImpalaPrivilegeType 'ON' ImpalaObjectSpecification 'TO' RegularOrBacktickedIdentifier WithGrantOption_EDIT
|
|
|
|
|
- | '<impala>GRANT' ImpalaPrivilegeType 'ON' ImpalaObjectSpecification 'TO' '<impala>ROLE' RegularOrBacktickedIdentifier OptionalWithGrantOption 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- if (!$8) {
|
|
|
|
|
- parser.suggestKeywords(['WITH GRANT OPTION']);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>GRANT' ImpalaPrivilegeType 'ON' ImpalaObjectSpecification 'TO' '<impala>ROLE' RegularOrBacktickedIdentifier WithGrantOption_EDIT
|
|
|
|
|
|
|
+ | 'GRANT' 'ROLE' UserOrRoleList 'TO' PrincipalSpecificationList WithAdminOption_EDIT
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
OptionalOnSpecification
|
|
OptionalOnSpecification
|
|
|
:
|
|
:
|
|
|
- | 'ON' HiveObjectSpecification
|
|
|
|
|
|
|
+ | 'ON' ObjectSpecification
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
OnSpecification_EDIT
|
|
OnSpecification_EDIT
|
|
@@ -154,12 +99,12 @@ OnSpecification_EDIT
|
|
|
parser.suggestTables();
|
|
parser.suggestTables();
|
|
|
parser.suggestDatabases({ appendDot: true });
|
|
parser.suggestDatabases({ appendDot: true });
|
|
|
}
|
|
}
|
|
|
- | 'ON' HiveObjectSpecification_EDIT
|
|
|
|
|
|
|
+ | 'ON' ObjectSpecification_EDIT
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
-HiveObjectSpecification
|
|
|
|
|
|
|
+ObjectSpecification
|
|
|
: 'DATABASE' RegularOrBacktickedIdentifier
|
|
: 'DATABASE' RegularOrBacktickedIdentifier
|
|
|
- | '<hive>TABLE' SchemaQualifiedTableIdentifier
|
|
|
|
|
|
|
+ | 'TABLE' SchemaQualifiedTableIdentifier
|
|
|
{
|
|
{
|
|
|
parser.addTablePrimary($2);
|
|
parser.addTablePrimary($2);
|
|
|
}
|
|
}
|
|
@@ -169,109 +114,69 @@ HiveObjectSpecification
|
|
|
}
|
|
}
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
-HiveObjectSpecification_EDIT
|
|
|
|
|
|
|
+ObjectSpecification_EDIT
|
|
|
: 'DATABASE' 'CURSOR'
|
|
: 'DATABASE' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestDatabases();
|
|
parser.suggestDatabases();
|
|
|
}
|
|
}
|
|
|
- | '<hive>TABLE' 'CURSOR'
|
|
|
|
|
|
|
+ | 'TABLE' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestTables();
|
|
parser.suggestTables();
|
|
|
parser.suggestDatabases({ appendDot: true });
|
|
parser.suggestDatabases({ appendDot: true });
|
|
|
}
|
|
}
|
|
|
- | '<hive>TABLE' SchemaQualifiedTableIdentifier_EDIT
|
|
|
|
|
|
|
+ | 'TABLE' SchemaQualifiedTableIdentifier_EDIT
|
|
|
| SchemaQualifiedTableIdentifier_EDIT
|
|
| SchemaQualifiedTableIdentifier_EDIT
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
-ImpalaObjectSpecification
|
|
|
|
|
- : 'DATABASE' RegularOrBacktickedIdentifier
|
|
|
|
|
- {
|
|
|
|
|
- parser.addDatabaseLocation(@2, [ { name: $2 } ]);
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>TABLE' SchemaQualifiedTableIdentifier
|
|
|
|
|
- {
|
|
|
|
|
- parser.addTablePrimary($2);
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>SERVER' RegularOrBacktickedIdentifier
|
|
|
|
|
- | '<impala>URI' RegularOrBacktickedIdentifier
|
|
|
|
|
- ;
|
|
|
|
|
-
|
|
|
|
|
-ImpalaObjectSpecification_EDIT
|
|
|
|
|
- : 'DATABASE' 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- parser.suggestDatabases();
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>TABLE' 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- parser.suggestTables();
|
|
|
|
|
- parser.suggestDatabases({ appendDot: true });
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>TABLE' SchemaQualifiedTableIdentifier_EDIT
|
|
|
|
|
- ;
|
|
|
|
|
-
|
|
|
|
|
-HivePrivilegeTypeList
|
|
|
|
|
- : HivePrivilegeTypeWithOptionalColumn
|
|
|
|
|
|
|
+PrivilegeTypeList
|
|
|
|
|
+ : PrivilegeTypeWithOptionalColumn
|
|
|
{
|
|
{
|
|
|
if ($1.toUpperCase() === 'ALL') {
|
|
if ($1.toUpperCase() === 'ALL') {
|
|
|
$$ = { singleAll: true };
|
|
$$ = { singleAll: true };
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- | HivePrivilegeTypeList ',' HivePrivilegeTypeWithOptionalColumn
|
|
|
|
|
|
|
+ | PrivilegeTypeList ',' PrivilegeTypeWithOptionalColumn
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
-HivePrivilegeTypeList_EDIT
|
|
|
|
|
- : HivePrivilegeTypeWithOptionalColumn_EDIT
|
|
|
|
|
- | HivePrivilegeTypeList ',' HivePrivilegeTypeWithOptionalColumn_EDIT
|
|
|
|
|
- | HivePrivilegeTypeWithOptionalColumn_EDIT ',' HivePrivilegeTypeList
|
|
|
|
|
- | HivePrivilegeTypeList ',' HivePrivilegeTypeWithOptionalColumn_EDIT ',' HivePrivilegeTypeList
|
|
|
|
|
- | 'CURSOR' ',' HivePrivilegeTypeList
|
|
|
|
|
|
|
+PrivilegeTypeList_EDIT
|
|
|
|
|
+ : PrivilegeTypeWithOptionalColumn_EDIT
|
|
|
|
|
+ | PrivilegeTypeList ',' PrivilegeTypeWithOptionalColumn_EDIT
|
|
|
|
|
+ | PrivilegeTypeWithOptionalColumn_EDIT ',' PrivilegeTypeList
|
|
|
|
|
+ | PrivilegeTypeList ',' PrivilegeTypeWithOptionalColumn_EDIT ',' PrivilegeTypeList
|
|
|
|
|
+ | 'CURSOR' ',' PrivilegeTypeList
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['ALL', 'ALTER', 'CREATE', 'DELETE', 'DROP', 'INDEX', 'INSERT', 'LOCK', 'SELECT', 'SHOW_DATABASE', 'UPDATE']);
|
|
parser.suggestKeywords(['ALL', 'ALTER', 'CREATE', 'DELETE', 'DROP', 'INDEX', 'INSERT', 'LOCK', 'SELECT', 'SHOW_DATABASE', 'UPDATE']);
|
|
|
}
|
|
}
|
|
|
- | HivePrivilegeTypeList ',' 'CURSOR'
|
|
|
|
|
|
|
+ | PrivilegeTypeList ',' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['ALL', 'ALTER', 'CREATE', 'DELETE', 'DROP', 'INDEX', 'INSERT', 'LOCK', 'SELECT', 'SHOW_DATABASE', 'UPDATE']);
|
|
parser.suggestKeywords(['ALL', 'ALTER', 'CREATE', 'DELETE', 'DROP', 'INDEX', 'INSERT', 'LOCK', 'SELECT', 'SHOW_DATABASE', 'UPDATE']);
|
|
|
}
|
|
}
|
|
|
- | HivePrivilegeTypeList ',' 'CURSOR' ',' HivePrivilegeTypeList
|
|
|
|
|
|
|
+ | PrivilegeTypeList ',' 'CURSOR' ',' PrivilegeTypeList
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['ALL', 'ALTER', 'CREATE', 'DELETE', 'DROP', 'INDEX', 'INSERT', 'LOCK', 'SELECT', 'SHOW_DATABASE', 'UPDATE']);
|
|
parser.suggestKeywords(['ALL', 'ALTER', 'CREATE', 'DELETE', 'DROP', 'INDEX', 'INSERT', 'LOCK', 'SELECT', 'SHOW_DATABASE', 'UPDATE']);
|
|
|
}
|
|
}
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
-HivePrivilegeTypeWithOptionalColumn
|
|
|
|
|
- : HivePrivilegeType OptionalParenthesizedColumnList
|
|
|
|
|
- ;
|
|
|
|
|
-
|
|
|
|
|
-HivePrivilegeTypeWithOptionalColumn_EDIT
|
|
|
|
|
- : HivePrivilegeType ParenthesizedColumnList_EDIT
|
|
|
|
|
|
|
+PrivilegeTypeWithOptionalColumn
|
|
|
|
|
+ : PrivilegeType OptionalParenthesizedColumnList
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
-HivePrivilegeType
|
|
|
|
|
- : '<hive>INSERT'
|
|
|
|
|
- | 'SELECT'
|
|
|
|
|
- | 'UPDATE'
|
|
|
|
|
- | '<hive>DELETE'
|
|
|
|
|
- | 'ALTER'
|
|
|
|
|
- | '<hive>CREATE'
|
|
|
|
|
- | 'DROP'
|
|
|
|
|
- | '<hive>INDEX'
|
|
|
|
|
- | '<hive>LOCK'
|
|
|
|
|
- | '<hive>SHOW_DATABASE'
|
|
|
|
|
- | '<hive>ALL'
|
|
|
|
|
|
|
+PrivilegeTypeWithOptionalColumn_EDIT
|
|
|
|
|
+ : PrivilegeType ParenthesizedColumnList_EDIT
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
-ImpalaPrivilegeType
|
|
|
|
|
|
|
+PrivilegeType
|
|
|
: 'ALL'
|
|
: 'ALL'
|
|
|
| 'ALTER'
|
|
| 'ALTER'
|
|
|
- | '<impala>CREATE' --> { isCreate: true }
|
|
|
|
|
|
|
+ | 'CREATE'
|
|
|
|
|
+ | 'DELETE'
|
|
|
| 'DROP'
|
|
| 'DROP'
|
|
|
- | '<impala>INSERT'
|
|
|
|
|
- | '<impala>REFRESH'
|
|
|
|
|
- | 'SELECT' OptionalParenthesizedColumnList
|
|
|
|
|
- ;
|
|
|
|
|
-
|
|
|
|
|
-ImpalaPrivilegeType_EDIT
|
|
|
|
|
- : 'SELECT' ParenthesizedColumnList_EDIT
|
|
|
|
|
|
|
+ | 'INDEX'
|
|
|
|
|
+ | 'INSERT'
|
|
|
|
|
+ | 'LOCK'
|
|
|
|
|
+ | 'SELECT'
|
|
|
|
|
+ | 'SHOW_DATABASE'
|
|
|
|
|
+ | 'UPDATE'
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
PrincipalSpecificationList
|
|
PrincipalSpecificationList
|
|
@@ -295,15 +200,15 @@ PrincipalSpecificationList_EDIT
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
PrincipalSpecification
|
|
PrincipalSpecification
|
|
|
- : '<hive>USER' RegularOrBacktickedIdentifier
|
|
|
|
|
|
|
+ : 'USER' RegularOrBacktickedIdentifier
|
|
|
| 'GROUP' RegularOrBacktickedIdentifier
|
|
| 'GROUP' RegularOrBacktickedIdentifier
|
|
|
- | '<hive>ROLE' RegularOrBacktickedIdentifier
|
|
|
|
|
|
|
+ | 'ROLE' RegularOrBacktickedIdentifier
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
PrincipalSpecification_EDIT
|
|
PrincipalSpecification_EDIT
|
|
|
- : '<hive>USER' 'CURSOR'
|
|
|
|
|
|
|
+ : 'USER' 'CURSOR'
|
|
|
| 'GROUP' 'CURSOR'
|
|
| 'GROUP' 'CURSOR'
|
|
|
- | '<hive>ROLE' 'CURSOR'
|
|
|
|
|
|
|
+ | 'ROLE' 'CURSOR'
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
UserOrRoleList
|
|
UserOrRoleList
|
|
@@ -313,8 +218,7 @@ UserOrRoleList
|
|
|
|
|
|
|
|
OptionalWithGrantOption
|
|
OptionalWithGrantOption
|
|
|
:
|
|
:
|
|
|
- | '<hive>WITH' '<hive>GRANT' 'OPTION'
|
|
|
|
|
- | '<impala>WITH' '<impala>GRANT' 'OPTION'
|
|
|
|
|
|
|
+ | 'WITH' 'GRANT' 'OPTION'
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
WithGrantOption_EDIT
|
|
WithGrantOption_EDIT
|
|
@@ -322,11 +226,7 @@ WithGrantOption_EDIT
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['GRANT OPTION']);
|
|
parser.suggestKeywords(['GRANT OPTION']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>WITH' '<hive>GRANT' 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- parser.suggestKeywords(['OPTION']);
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>WITH' '<impala>GRANT' 'CURSOR'
|
|
|
|
|
|
|
+ | 'WITH' 'GRANT' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['OPTION']);
|
|
parser.suggestKeywords(['OPTION']);
|
|
|
}
|
|
}
|
|
@@ -334,41 +234,38 @@ WithGrantOption_EDIT
|
|
|
|
|
|
|
|
OptionalWithAdminOption
|
|
OptionalWithAdminOption
|
|
|
:
|
|
:
|
|
|
- | '<hive>WITH' '<hive>ADMIN' 'OPTION'
|
|
|
|
|
|
|
+ | 'WITH' 'ADMIN' 'OPTION'
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
WithAdminOption_EDIT
|
|
WithAdminOption_EDIT
|
|
|
- : '<hive>WITH' 'CURSOR'
|
|
|
|
|
|
|
+ : 'WITH' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['ADMIN OPTION']);
|
|
parser.suggestKeywords(['ADMIN OPTION']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>WITH' '<hive>ADMIN' 'CURSOR'
|
|
|
|
|
|
|
+ | 'WITH' 'ADMIN' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['OPTION']);
|
|
parser.suggestKeywords(['OPTION']);
|
|
|
}
|
|
}
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
RevokeStatement
|
|
RevokeStatement
|
|
|
- : '<hive>REVOKE' HivePrivilegeTypeList OptionalOnSpecification 'FROM' PrincipalSpecificationList
|
|
|
|
|
- | '<hive>REVOKE' '<hive>GRANT' 'OPTION' '<hive>FOR' HivePrivilegeTypeList OptionalOnSpecification 'FROM' PrincipalSpecificationList
|
|
|
|
|
- | '<hive>REVOKE' UserOrRoleList 'FROM' PrincipalSpecificationList
|
|
|
|
|
- | '<hive>REVOKE' '<hive>ROLE' UserOrRoleList 'FROM' PrincipalSpecificationList
|
|
|
|
|
- | '<hive>REVOKE' '<hive>ADMIN' 'OPTION' '<hive>FOR' UserOrRoleList 'FROM' PrincipalSpecificationList
|
|
|
|
|
- | '<hive>REVOKE' '<hive>ADMIN' 'OPTION' '<hive>FOR' '<hive>ROLE' UserOrRoleList 'FROM' PrincipalSpecificationList
|
|
|
|
|
- | '<hive>REVOKE' '<hive>ALL' PrivilegesOrGrantOption 'FROM' UserOrRoleList
|
|
|
|
|
- | '<impala>REVOKE' '<impala>ROLE' RegularOrBacktickedIdentifier 'FROM' '<impala>GROUP' RegularOrBacktickedIdentifier
|
|
|
|
|
- | '<impala>REVOKE' ImpalaPrivilegeType 'ON' ImpalaObjectSpecification 'FROM' RegularOrBacktickedIdentifier
|
|
|
|
|
- | '<impala>REVOKE' ImpalaPrivilegeType 'ON' ImpalaObjectSpecification 'FROM' '<impala>ROLE' RegularOrBacktickedIdentifier
|
|
|
|
|
|
|
+ : 'REVOKE' PrivilegeTypeList OptionalOnSpecification 'FROM' PrincipalSpecificationList
|
|
|
|
|
+ | 'REVOKE' 'GRANT' 'OPTION' 'FOR' PrivilegeTypeList OptionalOnSpecification 'FROM' PrincipalSpecificationList
|
|
|
|
|
+ | 'REVOKE' UserOrRoleList 'FROM' PrincipalSpecificationList
|
|
|
|
|
+ | 'REVOKE' 'ROLE' UserOrRoleList 'FROM' PrincipalSpecificationList
|
|
|
|
|
+ | 'REVOKE' 'ADMIN' 'OPTION' 'FOR' UserOrRoleList 'FROM' PrincipalSpecificationList
|
|
|
|
|
+ | 'REVOKE' 'ADMIN' 'OPTION' 'FOR' 'ROLE' UserOrRoleList 'FROM' PrincipalSpecificationList
|
|
|
|
|
+ | 'REVOKE' 'ALL' PrivilegesOrGrantOption 'FROM' UserOrRoleList
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
RevokeStatement_EDIT
|
|
RevokeStatement_EDIT
|
|
|
- : '<hive>REVOKE' 'CURSOR'
|
|
|
|
|
|
|
+ : 'REVOKE' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['ADMIN OPTION FOR', 'ALL', 'ALL GRANT OPTION FROM', 'ALL PRIVILEGES FROM', 'ALTER', 'CREATE', 'DELETE', 'DROP', 'GRANT OPTION FOR', 'INDEX', 'INSERT', 'LOCK', 'ROLE', 'SELECT', 'UPDATE']);
|
|
parser.suggestKeywords(['ADMIN OPTION FOR', 'ALL', 'ALL GRANT OPTION FROM', 'ALL PRIVILEGES FROM', 'ALTER', 'CREATE', 'DELETE', 'DROP', 'GRANT OPTION FOR', 'INDEX', 'INSERT', 'LOCK', 'ROLE', 'SELECT', 'UPDATE']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' HivePrivilegeTypeList_EDIT
|
|
|
|
|
- | '<hive>REVOKE' HivePrivilegeTypeList OnSpecification_EDIT
|
|
|
|
|
- | '<hive>REVOKE' HivePrivilegeTypeList OptionalOnSpecification 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' PrivilegeTypeList_EDIT
|
|
|
|
|
+ | 'REVOKE' PrivilegeTypeList OnSpecification_EDIT
|
|
|
|
|
+ | 'REVOKE' PrivilegeTypeList OptionalOnSpecification 'CURSOR'
|
|
|
{
|
|
{
|
|
|
if (!$3) {
|
|
if (!$3) {
|
|
|
if ($2.singleAll) {
|
|
if ($2.singleAll) {
|
|
@@ -380,26 +277,26 @@ RevokeStatement_EDIT
|
|
|
parser.suggestKeywords(['FROM']);
|
|
parser.suggestKeywords(['FROM']);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' HivePrivilegeTypeList OptionalOnSpecification 'FROM' 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' PrivilegeTypeList OptionalOnSpecification 'FROM' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' HivePrivilegeTypeList OptionalOnSpecification 'FROM' PrincipalSpecificationList_EDIT
|
|
|
|
|
- | '<hive>REVOKE' '<hive>GRANT' 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' PrivilegeTypeList OptionalOnSpecification 'FROM' PrincipalSpecificationList_EDIT
|
|
|
|
|
+ | 'REVOKE' 'GRANT' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['OPTION FOR']);
|
|
parser.suggestKeywords(['OPTION FOR']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' '<hive>GRANT' 'OPTION' 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' 'GRANT' 'OPTION' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['FOR']);
|
|
parser.suggestKeywords(['FOR']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' '<hive>GRANT' 'OPTION' '<hive>FOR' 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' 'GRANT' 'OPTION' 'FOR' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['ALL', 'ALTER', 'CREATE', 'DELETE', 'DROP', 'INDEX', 'INSERT', 'LOCK', 'SELECT', 'SHOW_DATABASE', 'UPDATE']);
|
|
parser.suggestKeywords(['ALL', 'ALTER', 'CREATE', 'DELETE', 'DROP', 'INDEX', 'INSERT', 'LOCK', 'SELECT', 'SHOW_DATABASE', 'UPDATE']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' '<hive>GRANT' 'OPTION' '<hive>FOR' HivePrivilegeTypeList_EDIT
|
|
|
|
|
- | '<hive>REVOKE' '<hive>GRANT' 'OPTION' '<hive>FOR' HivePrivilegeTypeList OnSpecification_EDIT
|
|
|
|
|
- | '<hive>REVOKE' '<hive>GRANT' 'OPTION' '<hive>FOR' HivePrivilegeTypeList OptionalOnSpecification 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' 'GRANT' 'OPTION' 'FOR' PrivilegeTypeList_EDIT
|
|
|
|
|
+ | 'REVOKE' 'GRANT' 'OPTION' 'FOR' PrivilegeTypeList OnSpecification_EDIT
|
|
|
|
|
+ | 'REVOKE' 'GRANT' 'OPTION' 'FOR' PrivilegeTypeList OptionalOnSpecification 'CURSOR'
|
|
|
{
|
|
{
|
|
|
if (!$6) {
|
|
if (!$6) {
|
|
|
parser.suggestKeywords(['FROM', 'ON']);
|
|
parser.suggestKeywords(['FROM', 'ON']);
|
|
@@ -407,12 +304,12 @@ RevokeStatement_EDIT
|
|
|
parser.suggestKeywords(['FROM']);
|
|
parser.suggestKeywords(['FROM']);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' '<hive>GRANT' 'OPTION' '<hive>FOR' HivePrivilegeTypeList OptionalOnSpecification 'FROM' 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' 'GRANT' 'OPTION' 'FOR' PrivilegeTypeList OptionalOnSpecification 'FROM' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' '<hive>GRANT' 'OPTION' '<hive>FOR' HivePrivilegeTypeList OptionalOnSpecification 'FROM' PrincipalSpecificationList_EDIT
|
|
|
|
|
- | '<hive>REVOKE' UserOrRoleList 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' 'GRANT' 'OPTION' 'FOR' PrivilegeTypeList OptionalOnSpecification 'FROM' PrincipalSpecificationList_EDIT
|
|
|
|
|
+ | 'REVOKE' UserOrRoleList 'CURSOR'
|
|
|
{
|
|
{
|
|
|
if ($2.toUpperCase() === 'ADMIN') {
|
|
if ($2.toUpperCase() === 'ADMIN') {
|
|
|
parser.suggestKeywords(['FROM', 'OPTION FOR']);
|
|
parser.suggestKeywords(['FROM', 'OPTION FOR']);
|
|
@@ -420,99 +317,61 @@ RevokeStatement_EDIT
|
|
|
parser.suggestKeywords(['FROM']);
|
|
parser.suggestKeywords(['FROM']);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' UserOrRoleList 'FROM' 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' UserOrRoleList 'FROM' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' UserOrRoleList 'FROM' PrincipalSpecificationList_EDIT
|
|
|
|
|
- | '<hive>REVOKE' '<hive>ROLE' UserOrRoleList 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' UserOrRoleList 'FROM' PrincipalSpecificationList_EDIT
|
|
|
|
|
+ | 'REVOKE' 'ROLE' UserOrRoleList 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['FROM']);
|
|
parser.suggestKeywords(['FROM']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' '<hive>ROLE' UserOrRoleList 'FROM' 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' 'ROLE' UserOrRoleList 'FROM' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' '<hive>ROLE' UserOrRoleList 'FROM' PrincipalSpecificationList_EDIT
|
|
|
|
|
|
|
+ | 'REVOKE' 'ROLE' UserOrRoleList 'FROM' PrincipalSpecificationList_EDIT
|
|
|
|
|
|
|
|
- | '<hive>REVOKE' '<hive>ADMIN' 'OPTION' 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' 'ADMIN' 'OPTION' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['FOR']);
|
|
parser.suggestKeywords(['FOR']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' '<hive>ADMIN' 'OPTION' '<hive>FOR' 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' 'ADMIN' 'OPTION' 'FOR' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['ROLE']);
|
|
parser.suggestKeywords(['ROLE']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' '<hive>ADMIN' 'OPTION' '<hive>FOR' UserOrRoleList 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' 'ADMIN' 'OPTION' 'FOR' UserOrRoleList 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['FROM']);
|
|
parser.suggestKeywords(['FROM']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' '<hive>ADMIN' 'OPTION' '<hive>FOR' UserOrRoleList 'FROM' 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' 'ADMIN' 'OPTION' 'FOR' UserOrRoleList 'FROM' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' '<hive>ADMIN' 'OPTION' '<hive>FOR' UserOrRoleList 'FROM' PrincipalSpecificationList_EDIT
|
|
|
|
|
- | '<hive>REVOKE' '<hive>ADMIN' 'OPTION' '<hive>FOR' '<hive>ROLE' UserOrRoleList 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' 'ADMIN' 'OPTION' 'FOR' UserOrRoleList 'FROM' PrincipalSpecificationList_EDIT
|
|
|
|
|
+ | 'REVOKE' 'ADMIN' 'OPTION' 'FOR' 'ROLE' UserOrRoleList 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['FROM']);
|
|
parser.suggestKeywords(['FROM']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' '<hive>ADMIN' 'OPTION' '<hive>FOR' '<hive>ROLE' UserOrRoleList 'FROM' 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' 'ADMIN' 'OPTION' 'FOR' 'ROLE' UserOrRoleList 'FROM' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
parser.suggestKeywords(['GROUP', 'ROLE', 'USER']);
|
|
|
}
|
|
}
|
|
|
- | '<hive>REVOKE' '<hive>ADMIN' 'OPTION' '<hive>FOR' '<hive>ROLE' UserOrRoleList 'FROM' PrincipalSpecificationList_EDIT
|
|
|
|
|
- | '<hive>REVOKE' '<hive>ALL' PrivilegesOrGrantOption_EDIT
|
|
|
|
|
- | '<hive>REVOKE' '<hive>ALL' PrivilegesOrGrantOption 'CURSOR'
|
|
|
|
|
|
|
+ | 'REVOKE' 'ADMIN' 'OPTION' 'FOR' 'ROLE' UserOrRoleList 'FROM' PrincipalSpecificationList_EDIT
|
|
|
|
|
+ | 'REVOKE' 'ALL' PrivilegesOrGrantOption_EDIT
|
|
|
|
|
+ | 'REVOKE' 'ALL' PrivilegesOrGrantOption 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['FROM']);
|
|
parser.suggestKeywords(['FROM']);
|
|
|
}
|
|
}
|
|
|
- | '<impala>REVOKE' 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- parser.suggestKeywords(['ALL', 'ALTER', 'CREATE', 'DROP', 'INSERT', 'REFRESH', 'ROLE', 'SELECT']);
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>REVOKE' '<impala>ROLE' RegularOrBacktickedIdentifier 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- parser.suggestKeywords(['FROM GROUP']);
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>REVOKE' '<impala>ROLE' RegularOrBacktickedIdentifier 'FROM' 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- parser.suggestKeywords(['GROUP']);
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>REVOKE' ImpalaPrivilegeType_EDIT
|
|
|
|
|
- | '<impala>REVOKE' ImpalaPrivilegeType 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- if ($2.isCreate) {
|
|
|
|
|
- parser.suggestKeywords(['ON DATABASE', 'ON SERVER']);
|
|
|
|
|
- } else {
|
|
|
|
|
- parser.suggestKeywords(['ON DATABASE', 'ON SERVER', 'ON TABLE', 'ON URI']);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>REVOKE' ImpalaPrivilegeType 'ON' 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- if ($2.isCreate) {
|
|
|
|
|
- parser.suggestKeywords(['DATABASE', 'SERVER']);
|
|
|
|
|
- } else {
|
|
|
|
|
- parser.suggestKeywords(['DATABASE', 'SERVER', 'TABLE', 'URI']);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>REVOKE' ImpalaPrivilegeType 'ON' ImpalaObjectSpecification_EDIT
|
|
|
|
|
- | '<impala>REVOKE' ImpalaPrivilegeType 'ON' ImpalaObjectSpecification 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- parser.suggestKeywords(['FROM']);
|
|
|
|
|
- }
|
|
|
|
|
- | '<impala>REVOKE' ImpalaPrivilegeType 'ON' ImpalaObjectSpecification 'FROM' 'CURSOR'
|
|
|
|
|
- {
|
|
|
|
|
- parser.suggestKeywords(['ROLE']);
|
|
|
|
|
- }
|
|
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
PrivilegesOrGrantOption
|
|
PrivilegesOrGrantOption
|
|
|
- : '<hive>PRIVILEGES'
|
|
|
|
|
- | '<hive>GRANT' 'OPTION'
|
|
|
|
|
|
|
+ : 'PRIVILEGES'
|
|
|
|
|
+ | 'GRANT' 'OPTION'
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
PrivilegesOrGrantOption_EDIT
|
|
PrivilegesOrGrantOption_EDIT
|
|
|
- : '<hive>GRANT' 'CURSOR'
|
|
|
|
|
|
|
+ : 'GRANT' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
parser.suggestKeywords(['OPTION']);
|
|
parser.suggestKeywords(['OPTION']);
|
|
|
}
|
|
}
|