Author: xuefu
Date: Fri Sep 19 05:01:42 2014
New Revision: 1626126

URL: http://svn.apache.org/r1626126
Log:
HIVE-8083: Authorization DDLs should not enforce hive identifier syntax for 
user or group (Prasad via Xuefu)

Added:
    hive/trunk/ql/src/test/queries/clientpositive/authorization_non_id.q
    hive/trunk/ql/src/test/results/clientpositive/authorization_non_id.q.out
Modified:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g?rev=1626126&r1=1626125&r2=1626126&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g 
(original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g Fri Sep 
19 05:01:42 2014
@@ -1530,8 +1530,8 @@ principalSpecification
 principalName
 @init {pushMsg("user|group|role name", state);}
 @after {popMsg(state);}
-    : KW_USER identifier -> ^(TOK_USER identifier)
-    | KW_GROUP identifier -> ^(TOK_GROUP identifier)
+    : KW_USER principalIdentifier -> ^(TOK_USER principalIdentifier)
+    | KW_GROUP principalIdentifier -> ^(TOK_GROUP principalIdentifier)
     | KW_ROLE identifier -> ^(TOK_ROLE identifier)
     ;
 

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g?rev=1626126&r1=1626125&r2=1626126&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g 
(original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g 
Fri Sep 19 05:01:42 2014
@@ -536,6 +536,13 @@ functionIdentifier
     identifier
     ;
 
+principalIdentifier
+@init { gParent.pushMsg("identifier for principal spec", state); }
+@after { gParent.popMsg(state); }
+    : identifier
+    | QuotedIdentifier
+    ;
+
 nonReserved
     :
     KW_TRUE | KW_FALSE | KW_LIKE | KW_EXISTS | KW_ASC | KW_DESC | KW_ORDER | 
KW_GROUP | KW_BY | KW_AS | KW_INSERT | KW_OVERWRITE | KW_OUTER | KW_LEFT | 
KW_RIGHT | KW_FULL | KW_PARTITION | KW_PARTITIONS | KW_TABLE | KW_TABLES | 
KW_COLUMNS | KW_INDEX | KW_INDEXES | KW_REBUILD | KW_FUNCTIONS | KW_SHOW | 
KW_MSCK | KW_REPAIR | KW_DIRECTORY | KW_LOCAL | KW_USING | KW_CLUSTER | 
KW_DISTRIBUTE | KW_SORT | KW_UNION | KW_LOAD | KW_EXPORT | KW_IMPORT | KW_DATA 
| KW_INPATH | KW_IS | KW_NULL | KW_CREATE | KW_EXTERNAL | KW_ALTER | KW_CHANGE 
| KW_FIRST | KW_AFTER | KW_DESCRIBE | KW_DROP | KW_RENAME | KW_IGNORE | 
KW_PROTECTION | KW_TO | KW_COMMENT | KW_BOOLEAN | KW_TINYINT | KW_SMALLINT | 
KW_INT | KW_BIGINT | KW_FLOAT | KW_DOUBLE | KW_DATE | KW_DATETIME | 
KW_TIMESTAMP | KW_DECIMAL | KW_STRING | KW_ARRAY | KW_STRUCT | KW_UNIONTYPE | 
KW_PARTITIONED | KW_CLUSTERED | KW_SORTED | KW_INTO | KW_BUCKETS | KW_ROW | 
KW_ROWS | KW_FORMAT | KW_DELIMITED | KW_FIELDS | KW_TERMINATED | KW_ESCAPED | 
KW_COLLECTION | 
 KW_ITEMS | KW_KEYS | KW_KEY_TYPE | KW_LINES | KW_STORED | KW_FILEFORMAT | 
KW_INPUTFORMAT | KW_OUTPUTFORMAT | KW_INPUTDRIVER | KW_OUTPUTDRIVER | 
KW_OFFLINE | KW_ENABLE | KW_DISABLE | KW_READONLY | KW_NO_DROP | KW_LOCATION | 
KW_BUCKET | KW_OUT | KW_OF | KW_PERCENT | KW_ADD | KW_REPLACE | KW_RLIKE | 
KW_REGEXP | KW_TEMPORARY | KW_EXPLAIN | KW_FORMATTED | KW_PRETTY | 
KW_DEPENDENCY | KW_LOGICAL | KW_SERDE | KW_WITH | KW_DEFERRED | 
KW_SERDEPROPERTIES | KW_DBPROPERTIES | KW_LIMIT | KW_SET | KW_UNSET | 
KW_TBLPROPERTIES | KW_IDXPROPERTIES | KW_VALUE_TYPE | KW_ELEM_TYPE | KW_MAPJOIN 
| KW_STREAMTABLE | KW_HOLD_DDLTIME | KW_CLUSTERSTATUS | KW_UTC | 
KW_UTCTIMESTAMP | KW_LONG | KW_DELETE | KW_PLUS | KW_MINUS | KW_FETCH | 
KW_INTERSECT | KW_VIEW | KW_IN | KW_DATABASES | KW_MATERIALIZED | KW_SCHEMA | 
KW_SCHEMAS | KW_GRANT | KW_REVOKE | KW_SSL | KW_UNDO | KW_LOCK | KW_LOCKS | 
KW_UNLOCK | KW_SHARED | KW_EXCLUSIVE | KW_PROCEDURE | KW_UNSIGNED | KW_WHILE | 
KW_READ | KW_READS | KW_PURGE | KW_RANGE | KW_AN
 ALYZE | KW_BEFORE | KW_BETWEEN | KW_BOTH | KW_BINARY | KW_CONTINUE | KW_CURSOR 
| KW_TRIGGER | KW_RECORDREADER | KW_RECORDWRITER | KW_SEMI | KW_LATERAL | 
KW_TOUCH | KW_ARCHIVE | KW_UNARCHIVE | KW_COMPUTE | KW_STATISTICS | KW_USE | 
KW_OPTION | KW_CONCATENATE | KW_SHOW_DATABASE | KW_UPDATE | KW_RESTRICT | 
KW_CASCADE | KW_SKEWED | KW_ROLLUP | KW_CUBE | KW_DIRECTORIES | KW_FOR | 
KW_GROUPING | KW_SETS | KW_TRUNCATE | KW_NOSCAN | KW_USER | KW_ROLE | KW_ROLES 
| KW_INNER | KW_DEFINED | KW_ADMIN | KW_JAR | KW_FILE | KW_OWNER | 
KW_PRINCIPALS | KW_ALL | KW_DEFAULT | KW_NONE | KW_COMPACT | KW_COMPACTIONS | 
KW_TRANSACTIONS | KW_REWRITE | KW_AUTHORIZATION | KW_VALUES

Added: hive/trunk/ql/src/test/queries/clientpositive/authorization_non_id.q
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/authorization_non_id.q?rev=1626126&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/authorization_non_id.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/authorization_non_id.q Fri 
Sep 19 05:01:42 2014
@@ -0,0 +1,25 @@
+set hive.test.authz.sstd.hs2.mode=true;
+set 
hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest;
+set 
hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.SessionStateConfigUserAuthenticator;
+set user.name=hive_admin_user;
+
+set role ADMIN;
+drop table if exists src_autho_test;
+create table src_autho_test (id int);
+
+create role src_role2;
+
+grant role src_role2 to user bar;
+grant role src_role2 to user `foo-1`;
+
+show role grant user bar;
+show role grant user `foo-1`;
+
+grant select on table src_autho_test to user bar;
+grant select on table src_autho_test to user `foo-1`;
+
+show grant user bar on all;
+show grant user `foo-1` on all;
+
+drop table src_autho_test;
+drop role src_role2;

Added: hive/trunk/ql/src/test/results/clientpositive/authorization_non_id.q.out
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/authorization_non_id.q.out?rev=1626126&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/authorization_non_id.q.out 
(added)
+++ hive/trunk/ql/src/test/results/clientpositive/authorization_non_id.q.out 
Fri Sep 19 05:01:42 2014
@@ -0,0 +1,74 @@
+PREHOOK: query: set role ADMIN
+PREHOOK: type: SHOW_ROLES
+POSTHOOK: query: set role ADMIN
+POSTHOOK: type: SHOW_ROLES
+PREHOOK: query: drop table if exists src_autho_test
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: drop table if exists src_autho_test
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: create table src_autho_test (id int)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@src_autho_test
+POSTHOOK: query: create table src_autho_test (id int)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@src_autho_test
+PREHOOK: query: create role src_role2
+PREHOOK: type: CREATEROLE
+POSTHOOK: query: create role src_role2
+POSTHOOK: type: CREATEROLE
+PREHOOK: query: grant role src_role2 to user bar
+PREHOOK: type: GRANT_ROLE
+POSTHOOK: query: grant role src_role2 to user bar
+POSTHOOK: type: GRANT_ROLE
+PREHOOK: query: grant role src_role2 to user `foo-1`
+PREHOOK: type: GRANT_ROLE
+POSTHOOK: query: grant role src_role2 to user `foo-1`
+POSTHOOK: type: GRANT_ROLE
+PREHOOK: query: show role grant user bar
+PREHOOK: type: SHOW_ROLE_GRANT
+POSTHOOK: query: show role grant user bar
+POSTHOOK: type: SHOW_ROLE_GRANT
+public false   -1      
+src_role2      false   -1      hive_admin_user
+PREHOOK: query: show role grant user `foo-1`
+PREHOOK: type: SHOW_ROLE_GRANT
+POSTHOOK: query: show role grant user `foo-1`
+POSTHOOK: type: SHOW_ROLE_GRANT
+public false   -1      
+src_role2      false   -1      hive_admin_user
+PREHOOK: query: grant select on table src_autho_test to user bar
+PREHOOK: type: GRANT_PRIVILEGE
+PREHOOK: Output: default@src_autho_test
+POSTHOOK: query: grant select on table src_autho_test to user bar
+POSTHOOK: type: GRANT_PRIVILEGE
+POSTHOOK: Output: default@src_autho_test
+PREHOOK: query: grant select on table src_autho_test to user `foo-1`
+PREHOOK: type: GRANT_PRIVILEGE
+PREHOOK: Output: default@src_autho_test
+POSTHOOK: query: grant select on table src_autho_test to user `foo-1`
+POSTHOOK: type: GRANT_PRIVILEGE
+POSTHOOK: Output: default@src_autho_test
+PREHOOK: query: show grant user bar on all
+PREHOOK: type: SHOW_GRANT
+POSTHOOK: query: show grant user bar on all
+POSTHOOK: type: SHOW_GRANT
+default        src_autho_test                  bar     USER    SELECT  false   
-1      hive_admin_user
+PREHOOK: query: show grant user `foo-1` on all
+PREHOOK: type: SHOW_GRANT
+POSTHOOK: query: show grant user `foo-1` on all
+POSTHOOK: type: SHOW_GRANT
+default        src_autho_test                  foo-1   USER    SELECT  false   
-1      hive_admin_user
+PREHOOK: query: drop table src_autho_test
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@src_autho_test
+PREHOOK: Output: default@src_autho_test
+POSTHOOK: query: drop table src_autho_test
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@src_autho_test
+POSTHOOK: Output: default@src_autho_test
+PREHOOK: query: drop role src_role2
+PREHOOK: type: DROPROLE
+POSTHOOK: query: drop role src_role2
+POSTHOOK: type: DROPROLE


Reply via email to