This is an automated email from the ASF dual-hosted git repository.

jcamacho pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new 634d93d  HIVE-21968: Remove index related codes (Miklos Gergely, 
reviewed by Jesus Camacho Rodriguez)
634d93d is described below

commit 634d93d2b3ab8b4387a8e36a13430222205a7396
Author: Miklos Gergely <mgerg...@hortonworks.com>
AuthorDate: Wed Jul 10 18:18:22 2019 -0700

    HIVE-21968: Remove index related codes (Miklos Gergely, reviewed by Jesus 
Camacho Rodriguez)
    
    Close apache/hive#707
---
 .../TestDDLWithRemoteMetastoreSecondNamenode.java  |   6 -
 .../test/resources/testconfiguration.properties    |  10 +-
 .../authorization/plugin/HiveOperationType.java    |   9 +-
 .../plugin/sqlstd/Operation2Privilege.java         | 393 +++++++++-----------
 .../queries/clientpositive/ql_rewrite_gbtoidx.q    | 177 ---------
 .../clientpositive/ql_rewrite_gbtoidx_cbo_1.q      | 175 ---------
 .../clientpositive/ql_rewrite_gbtoidx_cbo_2.q      | 394 ---------------------
 7 files changed, 162 insertions(+), 1002 deletions(-)

diff --git 
a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/TestDDLWithRemoteMetastoreSecondNamenode.java
 
b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/TestDDLWithRemoteMetastoreSecondNamenode.java
index de33833..a56802c 100644
--- 
a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/TestDDLWithRemoteMetastoreSecondNamenode.java
+++ 
b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/TestDDLWithRemoteMetastoreSecondNamenode.java
@@ -50,8 +50,6 @@ public class TestDDLWithRemoteMetastoreSecondNamenode extends 
TestCase {
   private static final String Table5Name = "table5_nondefault_nn";
   private static final String Table6Name = "table6_nondefault_nn";
   private static final String Table7Name = "table7_nondefault_nn";
-  private static final String Index1Name = "index1_table1_nondefault_nn";
-  private static final String Index2Name = "index2_table1_nondefault_nn";
   private static final String tmpdir = System.getProperty("test.tmp.dir");
   private static final String tmpdirFs2 = "/" + 
TestDDLWithRemoteMetastoreSecondNamenode.class.getName();
   private static final Path tmppath = new Path(tmpdir);
@@ -141,10 +139,6 @@ public class TestDDLWithRemoteMetastoreSecondNamenode 
extends TestCase {
   }
 
   private void cleanup() throws Exception {
-      String[] srcidx = {Index1Name, Index2Name};
-      for (String src : srcidx) {
-        driver.run("DROP INDEX IF EXISTS " + src + " ON " + Table1Name);
-      }
       String[] srctables = {Table1Name, Table2Name, Database1Name + "." + 
Table3Name,
         Database1Name + "." + Table4Name, Table5Name, Table6Name};
       for (String src : srctables) {
diff --git a/itests/src/test/resources/testconfiguration.properties 
b/itests/src/test/resources/testconfiguration.properties
index 9eb5bf6..3ccba2b 100644
--- a/itests/src/test/resources/testconfiguration.properties
+++ b/itests/src/test/resources/testconfiguration.properties
@@ -4,12 +4,9 @@
 minimr.query.files=doesnotexist.q\
 
 # Tests that are not enabled for CLI Driver
-disabled.query.files=ql_rewrite_gbtoidx.q,\
-  ql_rewrite_gbtoidx_cbo_1.q,\
-  cbo_rp_subq_in.q,\
+disabled.query.files=cbo_rp_subq_in.q,\
   cbo_rp_subq_not_in.q,\
   cbo_rp_subq_exists.q,\
-  ql_rewrite_gbtoidx_cbo_2.q,\
   rcfile_merge1.q,\
   stats_filemetadata.q,\
   cbo_rp_insert.q,\
@@ -1754,11 +1751,6 @@ miniSparkOnYarn.query.files=auto_sortmerge_join_16.q,\
   vector_outer_join4.q,\
   vector_outer_join5.q
 
-# These tests are removed from miniSparkOnYarn.query.files
-#  ql_rewrite_gbtoidx.q,\
-#  ql_rewrite_gbtoidx_cbo_1.q,\
-#  smb_mapjoin_8.q,\
-
 localSpark.only.query.files=spark_local_queries.q
 
 spark.query.negative.files=groupby2_map_skew_multi_distinct.q,\
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java
index 09c15f0..0b2080a 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java
@@ -38,7 +38,7 @@ public enum HiveOperationType {
   SWITCHDATABASE,
   LOCKDB,
   UNLOCKDB,
-  DROPTABLE ,
+  DROPTABLE,
   DESCTABLE,
   DESCFUNCTION,
   MSCK,
@@ -76,7 +76,6 @@ public enum HiveOperationType {
   SHOW_CREATEDATABASE,
   SHOW_CREATETABLE,
   SHOWFUNCTIONS,
-  SHOWINDEXES,
   SHOWPARTITIONS,
   SHOWLOCKS,
   SHOWCONF,
@@ -91,9 +90,6 @@ public enum HiveOperationType {
   CREATE_MATERIALIZED_VIEW,
   DROPVIEW,
   DROP_MATERIALIZED_VIEW,
-  CREATEINDEX,
-  DROPINDEX,
-  ALTERINDEX_REBUILD,
   ALTERVIEW_PROPERTIES,
   DROPVIEW_PROPERTIES,
   LOCKTABLE,
@@ -118,7 +114,6 @@ public enum HiveOperationType {
   TRUNCATETABLE,
   CREATETABLE_AS_SELECT,
   QUERY,
-  ALTERINDEX_PROPS,
   ALTERDATABASE,
   ALTERDATABASE_OWNER,
   ALTERDATABASE_LOCATION,
@@ -177,7 +172,7 @@ public enum HiveOperationType {
   GET_FUNCTIONS, // getFunctions(String catalog, String schemaPattern, String 
functionNamePattern)
   GET_SCHEMAS, // getSchemas()
   GET_TABLES, // getTables(String catalog, String schemaPattern, String 
tableNamePattern, String[] types)
-  GET_TABLETYPES,// getTableTypes()
+  GET_TABLETYPES, // getTableTypes()
   GET_TYPEINFO // getTypeInfo()
   // ==== HiveServer2 metadata api types ends here ==== //
 
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java
index 6137983..f3c8cc5 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java
@@ -134,162 +134,140 @@ public class Operation2Privilege {
     adminPrivOps = new ArrayList<HiveOperationType>();
     op2Priv = new HashMap<HiveOperationType, List<PrivRequirement>>();
 
-    op2Priv.put(HiveOperationType.EXPLAIN, PrivRequirement.newIOPrivRequirement
-(SEL_NOGRANT_AR,
-        SEL_NOGRANT_AR)); //??
+    op2Priv.put(HiveOperationType.EXPLAIN, 
PrivRequirement.newIOPrivRequirement(SEL_NOGRANT_AR, SEL_NOGRANT_AR)); //??
 
     op2Priv.put(HiveOperationType.CREATEDATABASE, 
PrivRequirement.newPrivRequirementList(
         new PrivRequirement(INS_SEL_DEL_NOGRANT_AR, 
HivePrivilegeObjectType.DFS_URI),
         new PrivRequirement(INS_SEL_DEL_NOGRANT_AR, 
HivePrivilegeObjectType.LOCAL_URI)));
 
-    op2Priv.put(HiveOperationType.DROPDATABASE, 
PrivRequirement.newIOPrivRequirement
-(null, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.DROPDATABASE, 
PrivRequirement.newIOPrivRequirement(null, OWNER_PRIV_AR));
     // this should be database usage privilege once it is supported
-    op2Priv.put(HiveOperationType.SWITCHDATABASE, 
PrivRequirement.newIOPrivRequirement
-(null, null));
+    op2Priv.put(HiveOperationType.SWITCHDATABASE, 
PrivRequirement.newIOPrivRequirement(null, null));
 
     // lock operations not controlled for now
-    op2Priv.put(HiveOperationType.LOCKDB, PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.UNLOCKDB, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-
-    op2Priv.put(HiveOperationType.DROPTABLE, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, null));
-    op2Priv.put(HiveOperationType.DESCTABLE, 
PrivRequirement.newIOPrivRequirement
-(SEL_NOGRANT_AR, null));
-    op2Priv.put(HiveOperationType.SHOWPARTITIONS, 
PrivRequirement.newIOPrivRequirement
-(SEL_NOGRANT_AR, null));
-    op2Priv.put(HiveOperationType.DESCFUNCTION, 
PrivRequirement.newIOPrivRequirement
-(null, null));
+    op2Priv.put(HiveOperationType.LOCKDB, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.UNLOCKDB, 
PrivRequirement.newIOPrivRequirement(null, null));
+
+    op2Priv.put(HiveOperationType.DROPTABLE, 
PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, null));
+    op2Priv.put(HiveOperationType.DESCTABLE, 
PrivRequirement.newIOPrivRequirement(SEL_NOGRANT_AR, null));
+    op2Priv.put(HiveOperationType.SHOWPARTITIONS, 
PrivRequirement.newIOPrivRequirement(SEL_NOGRANT_AR, null));
+    op2Priv.put(HiveOperationType.DESCFUNCTION, 
PrivRequirement.newIOPrivRequirement(null, null));
 
     // meta store check command - equivalent to add partition command
     // no input objects are passed to it currently, but keeping admin priv
     // requirement on inputs just in case some input object like file
     // uri is added later
-    op2Priv.put(HiveOperationType.MSCK, PrivRequirement.newIOPrivRequirement
-(ADMIN_PRIV_AR, INS_NOGRANT_AR));
+    op2Priv.put(HiveOperationType.MSCK, 
PrivRequirement.newIOPrivRequirement(ADMIN_PRIV_AR, INS_NOGRANT_AR));
 
 
     //alter table commands require table ownership
     // There should not be output object, but just in case the table is 
incorrectly added
     // to output instead of input, adding owner requirement on output will 
catch that as well
-    op2Priv.put(HiveOperationType.ALTERTABLE_ADDCOLS, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_REPLACECOLS, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_RENAMECOL, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_RENAMEPART, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_RENAME, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_UPDATETABLESTATS, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_UPDATEPARTSTATS, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_TOUCH, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_ARCHIVE, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_UNARCHIVE, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_PROPERTIES, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_OWNER, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_SERIALIZER, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_PARTCOLTYPE, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERPARTITION_SERIALIZER, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_SERDEPROPERTIES, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERPARTITION_SERDEPROPERTIES, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_CLUSTER_SORT, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_BUCKETNUM, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERPARTITION_BUCKETNUM, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_PROTECTMODE, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERPARTITION_PROTECTMODE, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_FILEFORMAT, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERPARTITION_FILEFORMAT, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_LOCATION, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, INS_SEL_DEL_NOGRANT_AR));
-    op2Priv.put(HiveOperationType.ALTERPARTITION_LOCATION, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, INS_SEL_DEL_NOGRANT_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_MERGEFILES, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERPARTITION_MERGEFILES, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_SKEWED, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTBLPART_SKEWED_LOCATION, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, INS_SEL_DEL_NOGRANT_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_COMPACT, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR,  OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_UPDATECOLUMNS, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR,  OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.TRUNCATETABLE, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_DROPCONSTRAINT, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERTABLE_ADDCONSTRAINT, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-
-    //table ownership for create/drop/alter index
-    op2Priv.put(HiveOperationType.CREATEINDEX, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, INS_SEL_DEL_NOGRANT_AR));
-    op2Priv.put(HiveOperationType.DROPINDEX, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERINDEX_REBUILD, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERINDEX_PROPS, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_ADDCOLS,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_REPLACECOLS,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_RENAMECOL,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_RENAMEPART,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_RENAME,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_UPDATETABLESTATS,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_UPDATEPARTSTATS,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_TOUCH,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_ARCHIVE,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_UNARCHIVE,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_PROPERTIES,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_OWNER,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_SERIALIZER,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_PARTCOLTYPE,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERPARTITION_SERIALIZER,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_SERDEPROPERTIES,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERPARTITION_SERDEPROPERTIES,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_CLUSTER_SORT,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_BUCKETNUM,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERPARTITION_BUCKETNUM,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_PROTECTMODE,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERPARTITION_PROTECTMODE,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_FILEFORMAT,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERPARTITION_FILEFORMAT,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_LOCATION,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, 
INS_SEL_DEL_NOGRANT_AR));
+    op2Priv.put(HiveOperationType.ALTERPARTITION_LOCATION,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, 
INS_SEL_DEL_NOGRANT_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_MERGEFILES,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERPARTITION_MERGEFILES,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_SKEWED,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTBLPART_SKEWED_LOCATION,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, 
INS_SEL_DEL_NOGRANT_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_COMPACT,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR,  OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_UPDATECOLUMNS,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR,  OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.TRUNCATETABLE,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_DROPCONSTRAINT,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_ADDCONSTRAINT,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
 
     // require view ownership for alter/drop view
-    op2Priv.put(HiveOperationType.ALTERVIEW_PROPERTIES, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.DROPVIEW_PROPERTIES, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERVIEW_RENAME, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERVIEW_AS, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.DROPVIEW, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTER_MATERIALIZED_VIEW_REWRITE, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-    op2Priv.put(HiveOperationType.DROP_MATERIALIZED_VIEW, 
PrivRequirement.newIOPrivRequirement
-(OWNER_PRIV_AR, OWNER_PRIV_AR));
-
-    op2Priv.put(HiveOperationType.ANALYZE_TABLE, 
PrivRequirement.newIOPrivRequirement
-(arr(SQLPrivTypeGrant.SELECT_NOGRANT, SQLPrivTypeGrant.INSERT_NOGRANT), null));
-    op2Priv.put(HiveOperationType.CACHE_METADATA, 
PrivRequirement.newIOPrivRequirement
-(arr(SQLPrivTypeGrant.SELECT_NOGRANT, SQLPrivTypeGrant.INSERT_NOGRANT), null));
-    op2Priv.put(HiveOperationType.SHOWDATABASES, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.SHOWTABLES, 
PrivRequirement.newIOPrivRequirement
-(null, null));
+    op2Priv.put(HiveOperationType.ALTERVIEW_PROPERTIES,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.DROPVIEW_PROPERTIES,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERVIEW_RENAME,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERVIEW_AS,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.DROPVIEW,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTER_MATERIALIZED_VIEW_REWRITE,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+    op2Priv.put(HiveOperationType.DROP_MATERIALIZED_VIEW,
+        PrivRequirement.newIOPrivRequirement(OWNER_PRIV_AR, OWNER_PRIV_AR));
+
+    op2Priv.put(HiveOperationType.ANALYZE_TABLE,
+        
PrivRequirement.newIOPrivRequirement(arr(SQLPrivTypeGrant.SELECT_NOGRANT, 
SQLPrivTypeGrant.INSERT_NOGRANT),
+            null));
+    op2Priv.put(HiveOperationType.CACHE_METADATA,
+        
PrivRequirement.newIOPrivRequirement(arr(SQLPrivTypeGrant.SELECT_NOGRANT, 
SQLPrivTypeGrant.INSERT_NOGRANT),
+            null));
+    op2Priv.put(HiveOperationType.SHOWDATABASES, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.SHOWTABLES, 
PrivRequirement.newIOPrivRequirement(null, null));
 
     // operations that require insert/delete privileges
-    op2Priv.put(HiveOperationType.ALTERTABLE_DROPPARTS, 
PrivRequirement.newIOPrivRequirement
-(DEL_NOGRANT_AR, null));
+    op2Priv.put(HiveOperationType.ALTERTABLE_DROPPARTS, 
PrivRequirement.newIOPrivRequirement(DEL_NOGRANT_AR, null));
     // in alter-table-add-partition, the table is output, and location is input
-    op2Priv.put(HiveOperationType.ALTERTABLE_ADDPARTS, 
PrivRequirement.newIOPrivRequirement
-(INS_SEL_DEL_NOGRANT_AR, INS_NOGRANT_AR));
+    op2Priv.put(HiveOperationType.ALTERTABLE_ADDPARTS,
+        PrivRequirement.newIOPrivRequirement(INS_SEL_DEL_NOGRANT_AR, 
INS_NOGRANT_AR));
 
     // select with grant for exporting contents
-    op2Priv.put(HiveOperationType.EXPORT, PrivRequirement.newIOPrivRequirement
-(SEL_GRANT_AR, INS_SEL_DEL_NOGRANT_AR));
+    op2Priv.put(HiveOperationType.EXPORT,
+        PrivRequirement.newIOPrivRequirement(SEL_GRANT_AR, 
INS_SEL_DEL_NOGRANT_AR));
     // For import statement, require uri rwx+owner privileges on input uri, and
     // necessary privileges on the output table and database
     // NOTE : privileges are only checked if the object of that type is marked 
as part of ReadEntity or WriteEntity
@@ -307,12 +285,9 @@ public class Operation2Privilege {
     // for a broad privilege such as this is the best route forward. REPL 
STATUS
     // should use privileges similar to DESCRIBE DB/TABLE, and so, it asks for 
no
     // output privileges, and asks for select-no-grant on input.
-    op2Priv.put(HiveOperationType.REPLDUMP, 
PrivRequirement.newIOPrivRequirement(
-        ADMIN_PRIV_AR, ADMIN_PRIV_AR));
-    op2Priv.put(HiveOperationType.REPLLOAD, 
PrivRequirement.newIOPrivRequirement(
-        ADMIN_PRIV_AR, ADMIN_PRIV_AR));
-    op2Priv.put(HiveOperationType.REPLSTATUS, 
PrivRequirement.newIOPrivRequirement(
-        SEL_NOGRANT_AR, null));
+    op2Priv.put(HiveOperationType.REPLDUMP, 
PrivRequirement.newIOPrivRequirement(ADMIN_PRIV_AR, ADMIN_PRIV_AR));
+    op2Priv.put(HiveOperationType.REPLLOAD, 
PrivRequirement.newIOPrivRequirement(ADMIN_PRIV_AR, ADMIN_PRIV_AR));
+    op2Priv.put(HiveOperationType.REPLSTATUS, 
PrivRequirement.newIOPrivRequirement(SEL_NOGRANT_AR, null));
     adminPrivOps.add(HiveOperationType.REPLDUMP);
     adminPrivOps.add(HiveOperationType.REPLLOAD);
     adminPrivOps.add(HiveOperationType.KILL_QUERY);
@@ -333,12 +308,9 @@ public class Operation2Privilege {
     adminPrivOps.add(HiveOperationType.DROPFUNCTION);
 
     // operations require select priv
-    op2Priv.put(HiveOperationType.SHOWCOLUMNS, 
PrivRequirement.newIOPrivRequirement
-(SEL_NOGRANT_AR, null));
-    op2Priv.put(HiveOperationType.SHOW_TABLESTATUS, 
PrivRequirement.newIOPrivRequirement
-(SEL_NOGRANT_AR, null));
-    op2Priv.put(HiveOperationType.SHOW_TBLPROPERTIES, 
PrivRequirement.newIOPrivRequirement
-(SEL_NOGRANT_AR, null));
+    op2Priv.put(HiveOperationType.SHOWCOLUMNS, 
PrivRequirement.newIOPrivRequirement(SEL_NOGRANT_AR, null));
+    op2Priv.put(HiveOperationType.SHOW_TABLESTATUS, 
PrivRequirement.newIOPrivRequirement(SEL_NOGRANT_AR, null));
+    op2Priv.put(HiveOperationType.SHOW_TBLPROPERTIES, 
PrivRequirement.newIOPrivRequirement(SEL_NOGRANT_AR, null));
     op2Priv.put(HiveOperationType.CREATETABLE_AS_SELECT, 
PrivRequirement.newPrivRequirementList(
         new PrivRequirement(SEL_NOGRANT_AR, IOType.INPUT),
         new PrivRequirement(INS_SEL_DEL_NOGRANT_AR, 
HivePrivilegeObjectType.DFS_URI),
@@ -360,16 +332,13 @@ public class Operation2Privilege {
             )
         );
 
-    op2Priv.put(HiveOperationType.LOAD, PrivRequirement.newIOPrivRequirement
-(INS_SEL_DEL_NOGRANT_AR,
+    op2Priv.put(HiveOperationType.LOAD, 
PrivRequirement.newIOPrivRequirement(INS_SEL_DEL_NOGRANT_AR,
         arr(SQLPrivTypeGrant.INSERT_NOGRANT, 
SQLPrivTypeGrant.DELETE_NOGRANT)));
 
     // show create table is more sensitive information, includes table 
properties etc
     // for now require select WITH GRANT
-    op2Priv.put(HiveOperationType.SHOW_CREATETABLE, 
PrivRequirement.newIOPrivRequirement
-(SEL_GRANT_AR, null));
-    op2Priv.put(HiveOperationType.SHOW_CREATEDATABASE, 
PrivRequirement.newIOPrivRequirement
-(SEL_GRANT_AR, null));
+    op2Priv.put(HiveOperationType.SHOW_CREATETABLE, 
PrivRequirement.newIOPrivRequirement(SEL_GRANT_AR, null));
+    op2Priv.put(HiveOperationType.SHOW_CREATEDATABASE, 
PrivRequirement.newIOPrivRequirement(SEL_GRANT_AR, null));
 
     // for now allow only create-view with 'select with grant'
     // the owner will also have select with grant privileges on new view
@@ -381,112 +350,68 @@ public class Operation2Privilege {
         new PrivRequirement(SEL_GRANT_AR, IOType.INPUT),
         new PrivRequirement(OWNER_PRIV_AR, HivePrivilegeObjectType.DATABASE)));
 
-    op2Priv.put(HiveOperationType.SHOWFUNCTIONS, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.SHOWINDEXES, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.SHOWLOCKS, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.CREATEFUNCTION, 
PrivRequirement.newIOPrivRequirement
-(null, ADMIN_PRIV_AR));
-    op2Priv.put(HiveOperationType.DROPFUNCTION, 
PrivRequirement.newIOPrivRequirement
-(null, ADMIN_PRIV_AR));
-    op2Priv.put(HiveOperationType.RELOADFUNCTION, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.CREATEMACRO, 
PrivRequirement.newIOPrivRequirement
-(null, ADMIN_PRIV_AR));
-    op2Priv.put(HiveOperationType.DROPMACRO, 
PrivRequirement.newIOPrivRequirement
-(null, ADMIN_PRIV_AR));
-    op2Priv.put(HiveOperationType.SHOW_COMPACTIONS, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.SHOW_TRANSACTIONS, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.SHOWCONF, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.SHOWVIEWS, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.SHOWMATERIALIZEDVIEWS, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.LOCKTABLE, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.UNLOCKTABLE, 
PrivRequirement.newIOPrivRequirement
-(null, null));
+    op2Priv.put(HiveOperationType.SHOWFUNCTIONS, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.SHOWLOCKS, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.CREATEFUNCTION, 
PrivRequirement.newIOPrivRequirement(null, ADMIN_PRIV_AR));
+    op2Priv.put(HiveOperationType.DROPFUNCTION, 
PrivRequirement.newIOPrivRequirement(null, ADMIN_PRIV_AR));
+    op2Priv.put(HiveOperationType.RELOADFUNCTION, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.CREATEMACRO, 
PrivRequirement.newIOPrivRequirement(null, ADMIN_PRIV_AR));
+    op2Priv.put(HiveOperationType.DROPMACRO, 
PrivRequirement.newIOPrivRequirement(null, ADMIN_PRIV_AR));
+    op2Priv.put(HiveOperationType.SHOW_COMPACTIONS, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.SHOW_TRANSACTIONS, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.SHOWCONF, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.SHOWVIEWS, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.SHOWMATERIALIZEDVIEWS, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.LOCKTABLE, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.UNLOCKTABLE, 
PrivRequirement.newIOPrivRequirement(null, null));
 
     // require db ownership, if there is a file require SELECT , INSERT, and 
DELETE
     op2Priv.put(HiveOperationType.CREATETABLE, 
PrivRequirement.newPrivRequirementList(
         new PrivRequirement(INS_SEL_DEL_NOGRANT_AR, IOType.INPUT),
         new PrivRequirement(OWNER_PRIV_AR, HivePrivilegeObjectType.DATABASE)));
 
-    op2Priv.put(HiveOperationType.ALTERDATABASE, 
PrivRequirement.newIOPrivRequirement
-(null, ADMIN_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERDATABASE_OWNER, 
PrivRequirement.newIOPrivRequirement
-(null, ADMIN_PRIV_AR));
-    op2Priv.put(HiveOperationType.ALTERDATABASE_LOCATION, 
PrivRequirement.newIOPrivRequirement
-(null, ADMIN_PRIV_AR));
-    op2Priv.put(HiveOperationType.DESCDATABASE, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.DFS, PrivRequirement.newIOPrivRequirement
-(ADMIN_PRIV_AR, ADMIN_PRIV_AR));
-    op2Priv.put(HiveOperationType.RESET, PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.COMPILE, PrivRequirement.newIOPrivRequirement
-(ADMIN_PRIV_AR, ADMIN_PRIV_AR));
-    op2Priv.put(HiveOperationType.ADD, PrivRequirement.newIOPrivRequirement
-(ADMIN_PRIV_AR, ADMIN_PRIV_AR));
-    op2Priv.put(HiveOperationType.DELETE, PrivRequirement.newIOPrivRequirement
-(ADMIN_PRIV_AR, ADMIN_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERDATABASE, 
PrivRequirement.newIOPrivRequirement(null, ADMIN_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERDATABASE_OWNER, 
PrivRequirement.newIOPrivRequirement(null, ADMIN_PRIV_AR));
+    op2Priv.put(HiveOperationType.ALTERDATABASE_LOCATION, 
PrivRequirement.newIOPrivRequirement(null, ADMIN_PRIV_AR));
+    op2Priv.put(HiveOperationType.DESCDATABASE, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.DFS, 
PrivRequirement.newIOPrivRequirement(ADMIN_PRIV_AR, ADMIN_PRIV_AR));
+    op2Priv.put(HiveOperationType.RESET, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.COMPILE, 
PrivRequirement.newIOPrivRequirement(ADMIN_PRIV_AR, ADMIN_PRIV_AR));
+    op2Priv.put(HiveOperationType.ADD, 
PrivRequirement.newIOPrivRequirement(ADMIN_PRIV_AR, ADMIN_PRIV_AR));
+    op2Priv.put(HiveOperationType.DELETE, 
PrivRequirement.newIOPrivRequirement(ADMIN_PRIV_AR, ADMIN_PRIV_AR));
     // set command is currently not authorized through the API
-    op2Priv.put(HiveOperationType.SET, PrivRequirement.newIOPrivRequirement
-(null, null));
+    op2Priv.put(HiveOperationType.SET, 
PrivRequirement.newIOPrivRequirement(null, null));
 
     // The following actions are authorized through SQLStdHiveAccessController,
     // and it is not using this privilege mapping, but it might make sense to 
move it here
-    op2Priv.put(HiveOperationType.CREATEROLE, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.DROPROLE, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.GRANT_PRIVILEGE, 
PrivRequirement.newIOPrivRequirement
-(null,
-        null));
-    op2Priv.put(HiveOperationType.REVOKE_PRIVILEGE, 
PrivRequirement.newIOPrivRequirement
-(null,
-        null));
-    op2Priv.put(HiveOperationType.SHOW_GRANT, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-      op2Priv.put(HiveOperationType.GRANT_ROLE, 
PrivRequirement.newIOPrivRequirement
-  (null, null));
-    op2Priv.put(HiveOperationType.REVOKE_ROLE, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.SHOW_ROLES, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.SHOW_ROLE_GRANT, 
PrivRequirement.newIOPrivRequirement
-(null, null));
-    op2Priv.put(HiveOperationType.SHOW_ROLE_PRINCIPALS,
-        PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.CREATEROLE, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.DROPROLE, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.GRANT_PRIVILEGE, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.REVOKE_PRIVILEGE, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.SHOW_GRANT, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.GRANT_ROLE, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.REVOKE_ROLE, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.SHOW_ROLES, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.SHOW_ROLE_GRANT, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.SHOW_ROLE_PRINCIPALS, 
PrivRequirement.newIOPrivRequirement(null, null));
     op2Priv.put(HiveOperationType.GET_CATALOGS, 
PrivRequirement.newIOPrivRequirement(null, null));
     op2Priv.put(HiveOperationType.GET_SCHEMAS, 
PrivRequirement.newIOPrivRequirement(null, null));
     op2Priv.put(HiveOperationType.GET_TABLES, 
PrivRequirement.newIOPrivRequirement(null, null));
     op2Priv.put(HiveOperationType.GET_FUNCTIONS, 
PrivRequirement.newIOPrivRequirement(null, null));
     op2Priv.put(HiveOperationType.GET_TABLETYPES, 
PrivRequirement.newIOPrivRequirement(null, null));
     op2Priv.put(HiveOperationType.GET_TYPEINFO, 
PrivRequirement.newIOPrivRequirement(null, null));
-    op2Priv.put(HiveOperationType.GET_COLUMNS,
-        PrivRequirement.newIOPrivRequirement(SEL_NOGRANT_AR, null));
-
-    op2Priv.put(HiveOperationType.START_TRANSACTION, 
PrivRequirement.newIOPrivRequirement
-      (null, null));
-    op2Priv.put(HiveOperationType.COMMIT, PrivRequirement.newIOPrivRequirement
-      (null, null));
-    op2Priv.put(HiveOperationType.ROLLBACK, 
PrivRequirement.newIOPrivRequirement
-      (null, null));
-    op2Priv.put(HiveOperationType.SET_AUTOCOMMIT, 
PrivRequirement.newIOPrivRequirement
-      (null, null));
+    op2Priv.put(HiveOperationType.GET_COLUMNS, 
PrivRequirement.newIOPrivRequirement(SEL_NOGRANT_AR, null));
+
+    op2Priv.put(HiveOperationType.START_TRANSACTION, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.COMMIT, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.ROLLBACK, 
PrivRequirement.newIOPrivRequirement(null, null));
+    op2Priv.put(HiveOperationType.SET_AUTOCOMMIT, 
PrivRequirement.newIOPrivRequirement(null, null));
     // For alter table exchange partition, we need select & delete on input & 
insert on output
     op2Priv.put(
         HiveOperationType.ALTERTABLE_EXCHANGEPARTITION,
         PrivRequirement.newIOPrivRequirement(
             arr(SQLPrivTypeGrant.SELECT_NOGRANT, 
SQLPrivTypeGrant.DELETE_NOGRANT), INS_NOGRANT_AR));
-    op2Priv.put(HiveOperationType.ABORT_TRANSACTIONS, 
PrivRequirement.newIOPrivRequirement
-      (null, null));
+    op2Priv.put(HiveOperationType.ABORT_TRANSACTIONS, 
PrivRequirement.newIOPrivRequirement(null, null));
 
     // Handled via adminPrivOps (see above).
     op2Priv.put(HiveOperationType.KILL_QUERY, 
PrivRequirement.newIOPrivRequirement(null, null));
diff --git a/ql/src/test/queries/clientpositive/ql_rewrite_gbtoidx.q 
b/ql/src/test/queries/clientpositive/ql_rewrite_gbtoidx.q
deleted file mode 100644
index e3996e3..0000000
--- a/ql/src/test/queries/clientpositive/ql_rewrite_gbtoidx.q
+++ /dev/null
@@ -1,177 +0,0 @@
---! qt:dataset:srcpart
---! qt:dataset:lineitem
-set hive.stats.dbclass=fs;
-set hive.stats.autogather=true;
-set hive.cbo.enable=false;
-
-DROP TABLE IF EXISTS lineitem_ix_n1;
-CREATE TABLE lineitem_ix_n1 (L_ORDERKEY      INT,
-                                L_PARTKEY       INT,
-                                L_SUPPKEY       INT,
-                                L_LINENUMBER    INT,
-                                L_QUANTITY      DOUBLE,
-                                L_EXTENDEDPRICE DOUBLE,
-                                L_DISCOUNT      DOUBLE,
-                                L_TAX           DOUBLE,
-                                L_RETURNFLAG    STRING,
-                                L_LINESTATUS    STRING,
-                                l_shipdate      STRING,
-                                L_COMMITDATE    STRING,
-                                L_RECEIPTDATE   STRING,
-                                L_SHIPINSTRUCT  STRING,
-                                L_SHIPMODE      STRING,
-                                L_COMMENT       STRING)
-ROW FORMAT DELIMITED
-FIELDS TERMINATED BY '|';
-
-LOAD DATA LOCAL INPATH '../../data/files/lineitem.txt' OVERWRITE INTO TABLE 
lineitem_ix_n1;
-
-CREATE INDEX lineitem_ix_lshipdate_idx ON TABLE lineitem_ix_n1(l_shipdate) AS 
'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD 
IDXPROPERTIES("AGGREGATES"="count(l_shipdate)");
-ALTER INDEX lineitem_ix_lshipdate_idx ON lineitem_ix_n1 REBUILD;
-
-explain select l_shipdate, count(l_shipdate)
-from lineitem_ix_n1
-group by l_shipdate;
-
-select l_shipdate, count(l_shipdate)
-from lineitem_ix_n1
-group by l_shipdate
-order by l_shipdate;
-
-set hive.optimize.index.groupby=true;
-
-explain select l_shipdate, count(l_shipdate)
-from lineitem_ix_n1
-group by l_shipdate;
-
-select l_shipdate, count(l_shipdate)
-from lineitem_ix_n1
-group by l_shipdate
-order by l_shipdate;
-
-set hive.optimize.index.groupby=false;
-
-
-explain select year(l_shipdate) as year,
-        month(l_shipdate) as month,
-        count(l_shipdate) as monthly_shipments
-from lineitem_ix_n1
-group by year(l_shipdate), month(l_shipdate) 
-order by year, month;
-
-select year(l_shipdate) as year,
-        month(l_shipdate) as month,
-        count(l_shipdate) as monthly_shipments
-from lineitem_ix_n1
-group by year(l_shipdate), month(l_shipdate) 
-order by year, month;
-
-set hive.optimize.index.groupby=true;
-
-explain select year(l_shipdate) as year,
-        month(l_shipdate) as month,
-        count(l_shipdate) as monthly_shipments
-from lineitem_ix_n1
-group by year(l_shipdate), month(l_shipdate) 
-order by year, month;
-
-select year(l_shipdate) as year,
-        month(l_shipdate) as month,
-        count(l_shipdate) as monthly_shipments
-from lineitem_ix_n1
-group by year(l_shipdate), month(l_shipdate) 
-order by year, month;
-
-explain select lastyear.month,
-        thisyear.month,
-        (thisyear.monthly_shipments - lastyear.monthly_shipments) /
-lastyear.monthly_shipments as monthly_shipments_delta
-   from (select year(l_shipdate) as year,
-                month(l_shipdate) as month,
-                count(l_shipdate) as monthly_shipments
-           from lineitem_ix_n1
-          where year(l_shipdate) = 1997
-          group by year(l_shipdate), month(l_shipdate)
-        )  lastyear join
-        (select year(l_shipdate) as year,
-                month(l_shipdate) as month,
-                count(l_shipdate) as monthly_shipments
-           from lineitem_ix_n1
-          where year(l_shipdate) = 1998
-          group by year(l_shipdate), month(l_shipdate)
-        )  thisyear
-  on lastyear.month = thisyear.month;
-
-explain  select l_shipdate, cnt
-from (select l_shipdate, count(l_shipdate) as cnt from lineitem_ix_n1 group by 
l_shipdate
-union all
-select l_shipdate, l_orderkey as cnt
-from lineitem_ix_n1) dummy;
-
-CREATE TABLE tbl_n2(key int, value int);
-CREATE INDEX tbl_key_idx ON TABLE tbl_n2(key) AS 
'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD 
IDXPROPERTIES("AGGREGATES"="count(key)");
-ALTER INDEX tbl_key_idx ON tbl_n2 REBUILD;
-
-EXPLAIN select key, count(key) from tbl_n2 where key = 1 group by key;
-EXPLAIN select key, count(key) from tbl_n2 group by key;
-
-EXPLAIN select count(1) from tbl_n2;
-EXPLAIN select count(key) from tbl_n2;
-
-EXPLAIN select key FROM tbl_n2 GROUP BY key;
-EXPLAIN select key FROM tbl_n2 GROUP BY value, key;
-EXPLAIN select key FROM tbl_n2 WHERE key = 3 GROUP BY key;
-EXPLAIN select key FROM tbl_n2 WHERE value = 2 GROUP BY key;
-EXPLAIN select key FROM tbl_n2 GROUP BY key, substr(key,2,3);
-
-EXPLAIN select key, value FROM tbl_n2 GROUP BY value, key;
-EXPLAIN select key, value FROM tbl_n2 WHERE value = 1 GROUP BY key, value;
-
-EXPLAIN select DISTINCT key FROM tbl_n2;
-EXPLAIN select DISTINCT key FROM tbl_n2;
-EXPLAIN select DISTINCT key FROM tbl_n2;
-EXPLAIN select DISTINCT key, value FROM tbl_n2;
-EXPLAIN select DISTINCT key, value FROM tbl_n2 WHERE value = 2;
-EXPLAIN select DISTINCT key, value FROM tbl_n2 WHERE value = 2 AND key = 3;
-EXPLAIN select DISTINCT key, value FROM tbl_n2 WHERE value = key;
-EXPLAIN select DISTINCT key, substr(value,2,3) FROM tbl_n2 WHERE value = key;
-EXPLAIN select DISTINCT key, substr(value,2,3) FROM tbl_n2;
-
-EXPLAIN select * FROM (select DISTINCT key, value FROM tbl_n2) v1 WHERE 
v1.value = 2;
-
-DROP TABLE tbl_n2;
-
-CREATE TABLE tblpart_n0 (key int, value string) PARTITIONED BY (ds string, hr 
int);
-INSERT OVERWRITE TABLE tblpart_n0 PARTITION (ds='2008-04-08', hr=11) SELECT 
key, value FROM srcpart WHERE ds = '2008-04-08' AND hr = 11;
-INSERT OVERWRITE TABLE tblpart_n0 PARTITION (ds='2008-04-08', hr=12) SELECT 
key, value FROM srcpart WHERE ds = '2008-04-08' AND hr = 12;
-INSERT OVERWRITE TABLE tblpart_n0 PARTITION (ds='2008-04-09', hr=11) SELECT 
key, value FROM srcpart WHERE ds = '2008-04-09' AND hr = 11;
-INSERT OVERWRITE TABLE tblpart_n0 PARTITION (ds='2008-04-09', hr=12) SELECT 
key, value FROM srcpart WHERE ds = '2008-04-09' AND hr = 12;
-
-CREATE INDEX tbl_part_index ON TABLE tblpart_n0(key) AS 
'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD 
IDXPROPERTIES("AGGREGATES"="count(key)");
-
-ALTER INDEX tbl_part_index ON tblpart_n0 PARTITION (ds='2008-04-08', hr=11) 
REBUILD;
-EXPLAIN SELECT key, count(key) FROM tblpart_n0 WHERE ds='2008-04-09' AND hr=12 
AND key < 10 GROUP BY key;
-
-ALTER INDEX tbl_part_index ON tblpart_n0 PARTITION (ds='2008-04-08', hr=12) 
REBUILD;
-ALTER INDEX tbl_part_index ON tblpart_n0 PARTITION (ds='2008-04-09', hr=11) 
REBUILD;
-ALTER INDEX tbl_part_index ON tblpart_n0 PARTITION (ds='2008-04-09', hr=12) 
REBUILD;
-EXPLAIN SELECT key, count(key) FROM tblpart_n0 WHERE ds='2008-04-09' AND hr=12 
AND key < 10 GROUP BY key;
-
-DROP INDEX tbl_part_index on tblpart_n0;
-DROP TABLE tblpart_n0;
-
-CREATE TABLE tbl_n2(key int, value int) ROW FORMAT DELIMITED FIELDS TERMINATED 
BY '|'; 
-LOAD DATA LOCAL INPATH '../../data/files/tbl.txt' OVERWRITE INTO TABLE tbl_n2;
-
-CREATE INDEX tbl_key_idx ON TABLE tbl_n2(key) AS 
'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD 
IDXPROPERTIES("AGGREGATES"="count(key)");
-ALTER INDEX tbl_key_idx ON tbl_n2 REBUILD;
-
-set hive.optimize.index.groupby=false;
-explain select key, count(key) from tbl_n2 group by key order by key;
-select key, count(key) from tbl_n2 group by key order by key;
-set hive.optimize.index.groupby=true;
-explain select key, count(key) from tbl_n2 group by key order by key;
-select key, count(key) from tbl_n2 group by key order by key;
-DROP TABLE tbl_n2;
-
-reset hive.cbo.enable;
diff --git a/ql/src/test/queries/clientpositive/ql_rewrite_gbtoidx_cbo_1.q 
b/ql/src/test/queries/clientpositive/ql_rewrite_gbtoidx_cbo_1.q
deleted file mode 100644
index 0941493..0000000
--- a/ql/src/test/queries/clientpositive/ql_rewrite_gbtoidx_cbo_1.q
+++ /dev/null
@@ -1,175 +0,0 @@
---! qt:dataset:srcpart
---! qt:dataset:lineitem
-set hive.stats.dbclass=fs;
-set hive.stats.autogather=true;
-set hive.cbo.enable=true;
-
-DROP TABLE IF EXISTS lineitem_ix;
-CREATE TABLE lineitem_ix (L_ORDERKEY      INT,
-                                L_PARTKEY       INT,
-                                L_SUPPKEY       INT,
-                                L_LINENUMBER    INT,
-                                L_QUANTITY      DOUBLE,
-                                L_EXTENDEDPRICE DOUBLE,
-                                L_DISCOUNT      DOUBLE,
-                                L_TAX           DOUBLE,
-                                L_RETURNFLAG    STRING,
-                                L_LINESTATUS    STRING,
-                                l_shipdate      STRING,
-                                L_COMMITDATE    STRING,
-                                L_RECEIPTDATE   STRING,
-                                L_SHIPINSTRUCT  STRING,
-                                L_SHIPMODE      STRING,
-                                L_COMMENT       STRING)
-ROW FORMAT DELIMITED
-FIELDS TERMINATED BY '|';
-
-LOAD DATA LOCAL INPATH '../../data/files/lineitem.txt' OVERWRITE INTO TABLE 
lineitem_ix;
-
-CREATE INDEX lineitem_ix_lshipdate_idx ON TABLE lineitem_ix(l_shipdate) AS 
'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD 
IDXPROPERTIES("AGGREGATES"="count(l_shipdate)");
-ALTER INDEX lineitem_ix_lshipdate_idx ON lineitem_ix REBUILD;
-
-explain select l_shipdate, count(l_shipdate)
-from lineitem_ix
-group by l_shipdate;
-
-select l_shipdate, count(l_shipdate)
-from lineitem_ix
-group by l_shipdate
-order by l_shipdate;
-
-set hive.optimize.index.groupby=true;
-
-explain select l_shipdate, count(l_shipdate)
-from lineitem_ix
-group by l_shipdate;
-
-select l_shipdate, count(l_shipdate)
-from lineitem_ix
-group by l_shipdate
-order by l_shipdate;
-
-set hive.optimize.index.groupby=false;
-
-
-explain select year(l_shipdate) as year,
-        month(l_shipdate) as month,
-        count(l_shipdate) as monthly_shipments
-from lineitem_ix
-group by year(l_shipdate), month(l_shipdate)
-order by year, month;
-
-select year(l_shipdate) as year,
-        month(l_shipdate) as month,
-        count(l_shipdate) as monthly_shipments
-from lineitem_ix
-group by year(l_shipdate), month(l_shipdate)
-order by year, month;
-
-set hive.optimize.index.groupby=true;
-
-explain select year(l_shipdate) as year,
-        month(l_shipdate) as month,
-        count(l_shipdate) as monthly_shipments
-from lineitem_ix
-group by year(l_shipdate), month(l_shipdate)
-order by year, month;
-
-select year(l_shipdate) as year,
-        month(l_shipdate) as month,
-        count(l_shipdate) as monthly_shipments
-from lineitem_ix
-group by year(l_shipdate), month(l_shipdate)
-order by year, month;
-
-explain select lastyear.month,
-        thisyear.month,
-        (thisyear.monthly_shipments - lastyear.monthly_shipments) /
-lastyear.monthly_shipments as monthly_shipments_delta
-   from (select year(l_shipdate) as year,
-                month(l_shipdate) as month,
-                count(l_shipdate) as monthly_shipments
-           from lineitem_ix
-          where year(l_shipdate) = 1997
-          group by year(l_shipdate), month(l_shipdate)
-        )  lastyear join
-        (select year(l_shipdate) as year,
-                month(l_shipdate) as month,
-                count(l_shipdate) as monthly_shipments
-           from lineitem_ix
-          where year(l_shipdate) = 1998
-          group by year(l_shipdate), month(l_shipdate)
-        )  thisyear
-  on lastyear.month = thisyear.month;
-
-explain  select l_shipdate, cnt
-from (select l_shipdate, count(l_shipdate) as cnt from lineitem_ix group by 
l_shipdate
-union all
-select l_shipdate, l_orderkey as cnt
-from lineitem_ix) dummy;
-
-CREATE TABLE tbl(key int, value int);
-CREATE INDEX tbl_key_idx ON TABLE tbl(key) AS 
'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD 
IDXPROPERTIES("AGGREGATES"="count(key)");
-ALTER INDEX tbl_key_idx ON tbl REBUILD;
-
-EXPLAIN select key, count(key) from tbl where key = 1 group by key;
-EXPLAIN select key, count(key) from tbl group by key;
-
-EXPLAIN select count(1) from tbl;
-EXPLAIN select count(key) from tbl;
-
-EXPLAIN select key FROM tbl GROUP BY key;
-EXPLAIN select key FROM tbl GROUP BY value, key;
-EXPLAIN select key FROM tbl WHERE key = 3 GROUP BY key;
-EXPLAIN select key FROM tbl WHERE value = 2 GROUP BY key;
-EXPLAIN select key FROM tbl GROUP BY key, substr(key,2,3);
-
-EXPLAIN select key, value FROM tbl GROUP BY value, key;
-EXPLAIN select key, value FROM tbl WHERE value = 1 GROUP BY key, value;
-
-EXPLAIN select DISTINCT key FROM tbl;
-EXPLAIN select DISTINCT key FROM tbl;
-EXPLAIN select DISTINCT key FROM tbl;
-EXPLAIN select DISTINCT key, value FROM tbl;
-EXPLAIN select DISTINCT key, value FROM tbl WHERE value = 2;
-EXPLAIN select DISTINCT key, value FROM tbl WHERE value = 2 AND key = 3;
-EXPLAIN select DISTINCT key, value FROM tbl WHERE value = key;
-EXPLAIN select DISTINCT key, substr(value,2,3) FROM tbl WHERE value = key;
-EXPLAIN select DISTINCT key, substr(value,2,3) FROM tbl;
-
-EXPLAIN select * FROM (select DISTINCT key, value FROM tbl) v1 WHERE v1.value 
= 2;
-
-DROP TABLE tbl;
-
-CREATE TABLE tblpart (key int, value string) PARTITIONED BY (ds string, hr 
int);
-INSERT OVERWRITE TABLE tblpart PARTITION (ds='2008-04-08', hr=11) SELECT key, 
value FROM srcpart WHERE ds = '2008-04-08' AND hr = 11;
-INSERT OVERWRITE TABLE tblpart PARTITION (ds='2008-04-08', hr=12) SELECT key, 
value FROM srcpart WHERE ds = '2008-04-08' AND hr = 12;
-INSERT OVERWRITE TABLE tblpart PARTITION (ds='2008-04-09', hr=11) SELECT key, 
value FROM srcpart WHERE ds = '2008-04-09' AND hr = 11;
-INSERT OVERWRITE TABLE tblpart PARTITION (ds='2008-04-09', hr=12) SELECT key, 
value FROM srcpart WHERE ds = '2008-04-09' AND hr = 12;
-
-CREATE INDEX tbl_part_index ON TABLE tblpart(key) AS 
'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD 
IDXPROPERTIES("AGGREGATES"="count(key)");
-
-ALTER INDEX tbl_part_index ON tblpart PARTITION (ds='2008-04-08', hr=11) 
REBUILD;
-EXPLAIN SELECT key, count(key) FROM tblpart WHERE ds='2008-04-09' AND hr=12 
AND key < 10 GROUP BY key;
-
-ALTER INDEX tbl_part_index ON tblpart PARTITION (ds='2008-04-08', hr=12) 
REBUILD;
-ALTER INDEX tbl_part_index ON tblpart PARTITION (ds='2008-04-09', hr=11) 
REBUILD;
-ALTER INDEX tbl_part_index ON tblpart PARTITION (ds='2008-04-09', hr=12) 
REBUILD;
-EXPLAIN SELECT key, count(key) FROM tblpart WHERE ds='2008-04-09' AND hr=12 
AND key < 10 GROUP BY key;
-
-DROP INDEX tbl_part_index on tblpart;
-DROP TABLE tblpart;
-
-CREATE TABLE tbl(key int, value int) ROW FORMAT DELIMITED FIELDS TERMINATED BY 
'|'; 
-LOAD DATA LOCAL INPATH '../../data/files/tbl.txt' OVERWRITE INTO TABLE tbl;
-
-CREATE INDEX tbl_key_idx ON TABLE tbl(key) AS 
'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD 
IDXPROPERTIES("AGGREGATES"="count(key)");
-ALTER INDEX tbl_key_idx ON tbl REBUILD;
-
-set hive.optimize.index.groupby=false;
-explain select key, count(key) from tbl group by key order by key;
-select key, count(key) from tbl group by key order by key;
-set hive.optimize.index.groupby=true;
-explain select key, count(key) from tbl group by key order by key;
-select key, count(key) from tbl group by key order by key;
-DROP TABLE tbl;
\ No newline at end of file
diff --git a/ql/src/test/queries/clientpositive/ql_rewrite_gbtoidx_cbo_2.q 
b/ql/src/test/queries/clientpositive/ql_rewrite_gbtoidx_cbo_2.q
deleted file mode 100644
index cd42548..0000000
--- a/ql/src/test/queries/clientpositive/ql_rewrite_gbtoidx_cbo_2.q
+++ /dev/null
@@ -1,394 +0,0 @@
---! qt:dataset:src
---! qt:dataset:lineitem
-set hive.stats.dbclass=fs;
-set hive.stats.autogather=true;
-set hive.cbo.enable=true;
-set hive.optimize.index.groupby=true;
-
-DROP TABLE IF EXISTS lineitem_ix_n0;
-DROP INDEX IF EXISTS lineitem_ix_L_ORDERKEY_idx on lineitem_ix_n0;
-DROP INDEX IF EXISTS lineitem_ix_L_PARTKEY_idx on lineitem_ix_n0;
-
-
-CREATE TABLE lineitem_ix_n0 (L_ORDERKEY      INT,
-                                L_PARTKEY       INT,
-                                L_SUPPKEY       INT,
-                                L_LINENUMBER    INT,
-                                L_QUANTITY      DOUBLE,
-                                L_EXTENDEDPRICE DOUBLE,
-                                L_DISCOUNT      DOUBLE,
-                                L_TAX           DOUBLE,
-                                L_RETURNFLAG    STRING,
-                                L_LINESTATUS    STRING,
-                                l_shipdate      STRING,
-                                L_COMMITDATE    STRING,
-                                L_RECEIPTDATE   STRING,
-                                L_SHIPINSTRUCT  STRING,
-                                L_SHIPMODE      STRING,
-                                L_COMMENT       STRING)
-ROW FORMAT DELIMITED
-FIELDS TERMINATED BY '|';
-
-LOAD DATA LOCAL INPATH '../../data/files/lineitem.txt' OVERWRITE INTO TABLE 
lineitem_ix_n0;
-
-CREATE INDEX lineitem_ix_L_ORDERKEY_idx ON TABLE lineitem_ix_n0(L_ORDERKEY) AS 
'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD 
IDXPROPERTIES("AGGREGATES"="count(L_ORDERKEY)");
-ALTER INDEX lineitem_ix_L_ORDERKEY_idx ON lineitem_ix_n0 REBUILD;
-
-CREATE INDEX lineitem_ix_L_PARTKEY_idx ON TABLE lineitem_ix_n0(L_PARTKEY) AS 
'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD 
IDXPROPERTIES("AGGREGATES"="count(L_PARTKEY)");
-ALTER INDEX lineitem_ix_L_PARTKEY_idx ON lineitem_ix_n0 REBUILD;
-
-explain
-select count(1)
-from lineitem_ix_n0;
-
-select count(1)
-from lineitem_ix_n0;
-
-explain
-select count(L_ORDERKEY)
-from lineitem_ix_n0;
-
-select count(L_ORDERKEY)
-from lineitem_ix_n0;
-
-explain select L_ORDERKEY+L_PARTKEY as keysum,
-count(L_ORDERKEY), count(L_PARTKEY)
-from lineitem_ix_n0
-group by L_ORDERKEY, L_PARTKEY;
-
-select L_ORDERKEY+L_PARTKEY as keysum,
-count(L_ORDERKEY), count(L_PARTKEY)
-from lineitem_ix_n0
-group by L_ORDERKEY, L_PARTKEY;
-
-explain
-select L_ORDERKEY, count(L_ORDERKEY)
-from  lineitem_ix_n0
-where L_ORDERKEY = 7
-group by L_ORDERKEY;
-
-select L_ORDERKEY, count(L_ORDERKEY)
-from  lineitem_ix_n0
-where L_ORDERKEY = 7
-group by L_ORDERKEY;
-
-explain
-select L_ORDERKEY, count(1)
-from lineitem_ix_n0
-group by L_ORDERKEY;
-
-select L_ORDERKEY, count(1)
-from lineitem_ix_n0
-group by L_ORDERKEY;
-
-explain
-select count(L_ORDERKEY+1)
-from lineitem_ix_n0;
-
-select count(L_ORDERKEY+1)
-from lineitem_ix_n0;
-
-explain
-select L_ORDERKEY, count(L_ORDERKEY+1)
-from lineitem_ix_n0
-group by L_ORDERKEY;
-
-select L_ORDERKEY, count(L_ORDERKEY+1)
-from lineitem_ix_n0
-group by L_ORDERKEY;
-
-explain
-select L_ORDERKEY, count(L_ORDERKEY+1+L_ORDERKEY+2)
-from lineitem_ix_n0
-group by L_ORDERKEY;
-
-select L_ORDERKEY, count(L_ORDERKEY+1+L_ORDERKEY+2)
-from lineitem_ix_n0
-group by L_ORDERKEY;
-
-explain
-select L_ORDERKEY, count(1+L_ORDERKEY+2)
-from lineitem_ix_n0
-group by L_ORDERKEY;
-
-select L_ORDERKEY, count(1+L_ORDERKEY+2)
-from lineitem_ix_n0
-group by L_ORDERKEY;
-
-
-explain
-select L_ORDERKEY as a, count(1) as b
-from lineitem_ix_n0
-where L_ORDERKEY < 7
-group by L_ORDERKEY;
-
-select L_ORDERKEY as a, count(1) as b
-from lineitem_ix_n0
-where L_ORDERKEY < 7
-group by L_ORDERKEY;
-
-explain
-select L_ORDERKEY, count(keysum), sum(keysum)
-from
-(select L_ORDERKEY, L_ORDERKEY+L_PARTKEY as keysum from lineitem_ix_n0) tabA
-group by L_ORDERKEY;
-
-select L_ORDERKEY, count(keysum), sum(keysum)
-from
-(select L_ORDERKEY, L_ORDERKEY+L_PARTKEY as keysum from lineitem_ix_n0) tabA
-group by L_ORDERKEY;
-
-
-explain
-select L_ORDERKEY, count(L_ORDERKEY), sum(L_ORDERKEY)
-from lineitem_ix_n0
-group by L_ORDERKEY;
-
-select L_ORDERKEY, count(L_ORDERKEY), sum(L_ORDERKEY)
-from lineitem_ix_n0
-group by L_ORDERKEY;
-
-explain
-select colA, count(colA)
-from (select L_ORDERKEY as colA from lineitem_ix_n0) tabA
-group by colA;
-
-select colA, count(colA)
-from (select L_ORDERKEY as colA from lineitem_ix_n0) tabA
-group by colA;
-
-explain
-select keysum, count(keysum)
-from
-(select L_ORDERKEY+L_PARTKEY as keysum from lineitem_ix_n0) tabA
-group by keysum;
-
-select keysum, count(keysum)
-from
-(select L_ORDERKEY+L_PARTKEY as keysum from lineitem_ix_n0) tabA
-group by keysum;
-
-explain
-select keysum, count(keysum)
-from
-(select L_ORDERKEY+1 as keysum from lineitem_ix_n0) tabA
-group by keysum;
-
-select keysum, count(keysum)
-from
-(select L_ORDERKEY+1 as keysum from lineitem_ix_n0) tabA
-group by keysum;
-
-
-explain
-select keysum, count(1)
-from
-(select L_ORDERKEY+1 as keysum from lineitem_ix_n0) tabA
-group by keysum;
-
-select keysum, count(1)
-from
-(select L_ORDERKEY+1 as keysum from lineitem_ix_n0) tabA
-group by keysum;
-
-
-explain
-select keysum, count(keysum)
-from
-(select L_ORDERKEY+1 as keysum from lineitem_ix_n0 where L_ORDERKEY = 7) tabA
-group by keysum;
-
-select keysum, count(keysum)
-from
-(select L_ORDERKEY+1 as keysum from lineitem_ix_n0 where L_ORDERKEY = 7) tabA
-group by keysum;
-
-
-explain
-select ckeysum, count(ckeysum)
-from
-(select keysum, count(keysum) as ckeysum
-from 
-       (select L_ORDERKEY+1 as keysum from lineitem_ix_n0 where L_ORDERKEY = 
7) tabA
-group by keysum) tabB
-group by ckeysum;
-
-select ckeysum, count(ckeysum)
-from
-(select keysum, count(keysum) as ckeysum
-from 
-       (select L_ORDERKEY+1 as keysum from lineitem_ix_n0 where L_ORDERKEY = 
7) tabA
-group by keysum) tabB
-group by ckeysum;
-
-explain
-select keysum, count(keysum) as ckeysum
-from
-(select L_ORDERKEY, count(L_ORDERKEY) as keysum
-from lineitem_ix_n0
-where L_ORDERKEY < 7
-group by L_ORDERKEY)tabA
-group by keysum;
-
-select keysum, count(keysum) as ckeysum
-from
-(select L_ORDERKEY, count(L_ORDERKEY) as keysum
-from lineitem_ix_n0
-where L_ORDERKEY < 7
-group by L_ORDERKEY)tabA
-group by keysum;
-
-
-DROP INDEX IF EXISTS src_key_idx on src;
-CREATE INDEX src_key_idx ON TABLE src(key) AS 
'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD 
IDXPROPERTIES("AGGREGATES"="count(key)");
-ALTER INDEX src_key_idx ON src REBUILD;
-
-explain
-select tabA.a, tabA.b, tabB.a, tabB.b
-from
-(select L_ORDERKEY as a, count(L_ORDERKEY) as b
-from lineitem_ix_n0
-where L_ORDERKEY < 7
-group by L_ORDERKEY) tabA
-join
-(select key as a, count(key) as b
-from src
-group by key
-) tabB
-on (tabA.b=tabB.b);
-
-select tabA.a, tabA.b, tabB.a, tabB.b
-from
-(select L_ORDERKEY as a, count(L_ORDERKEY) as b
-from lineitem_ix_n0
-where L_ORDERKEY < 7
-group by L_ORDERKEY) tabA
-join
-(select key as a, count(key) as b
-from src
-group by key
-) tabB
-on (tabA.b=tabB.b);
-
-
-explain
-select tabA.a, tabA.b, tabB.a, tabB.b
-from
-(select L_ORDERKEY as a, count(L_ORDERKEY) as b
-from lineitem_ix_n0
-where L_ORDERKEY < 7
-group by L_ORDERKEY) tabA
-join
-(select key as a, count(key) as b
-from src
-group by key
-) tabB
-on (tabA.b=tabB.b and tabB.a < '2');
-
-select tabA.a, tabA.b, tabB.a, tabB.b
-from 
-(select L_ORDERKEY as a, count(L_ORDERKEY) as b
-from lineitem_ix_n0
-where L_ORDERKEY < 7
-group by L_ORDERKEY) tabA
-join
-(select key as a, count(key) as b
-from src
-group by key
-) tabB
-on (tabA.b=tabB.b and tabB.a < '2');
-
-EXPLAIN
-select L_ORDERKEY FROM lineitem_ix_n0 GROUP BY L_ORDERKEY, L_ORDERKEY+1;
-
-select L_ORDERKEY FROM lineitem_ix_n0 GROUP BY L_ORDERKEY, L_ORDERKEY+1;
-
-EXPLAIN
-select L_ORDERKEY, L_ORDERKEY+1, count(L_ORDERKEY) FROM lineitem_ix_n0 GROUP 
BY L_ORDERKEY, L_ORDERKEY+1;
-
-select L_ORDERKEY, L_ORDERKEY+1, count(L_ORDERKEY) FROM lineitem_ix_n0 GROUP 
BY L_ORDERKEY, L_ORDERKEY+1;
-
-EXPLAIN
-select L_ORDERKEY+2, count(L_ORDERKEY) FROM lineitem_ix_n0 GROUP BY 
L_ORDERKEY+2;
-
-select L_ORDERKEY+2, count(L_ORDERKEY) FROM lineitem_ix_n0 GROUP BY 
L_ORDERKEY+2;
-
---with cbo on, the following query can use idx
-
-explain
-select b, count(b) as ckeysum
-from
-(
-select L_ORDERKEY as a, count(L_ORDERKEY) as b
-from lineitem_ix_n0
-where L_ORDERKEY < 7
-group by L_ORDERKEY
-union all
-select L_PARTKEY as a, count(L_PARTKEY) as b
-from lineitem_ix_n0
-where L_PARTKEY < 10
-group by L_PARTKEY
-) tabA
-group by b;
-
-select b, count(b) as ckeysum
-from
-(
-select L_ORDERKEY as a, count(L_ORDERKEY) as b
-from lineitem_ix_n0
-where L_ORDERKEY < 7
-group by L_ORDERKEY
-union all
-select L_PARTKEY as a, count(L_PARTKEY) as b
-from lineitem_ix_n0 
-where L_PARTKEY < 10
-group by L_PARTKEY
-) tabA
-group by b;
-
---with cbo on, the following query can not use idx because AggFunc is empty 
here
-
-explain
-select a, count(a) as ckeysum
-from
-(
-select L_ORDERKEY as a, count(L_ORDERKEY) as b 
-from lineitem_ix_n0
-where L_ORDERKEY < 7 
-group by L_ORDERKEY
-union all
-select L_PARTKEY as a, count(L_PARTKEY) as b
-from lineitem_ix_n0
-where L_PARTKEY < 10
-group by L_PARTKEY
-) tabA
-group by a;
-
-select a, count(a) as ckeysum
-from
-(
-select L_ORDERKEY as a, count(L_ORDERKEY) as b
-from lineitem_ix_n0
-where L_ORDERKEY < 7
-group by L_ORDERKEY
-union all
-select L_PARTKEY as a, count(L_PARTKEY) as b
-from lineitem_ix_n0 
-where L_PARTKEY < 10
-group by L_PARTKEY
-) tabA
-group by a;
-
-explain
-select a, count(a)
-from (
-select case L_ORDERKEY when null then 1 else 1 END as a
-from lineitem_ix_n0)tab
-group by a;
-
-select a, count(a)
-from (
-select case L_ORDERKEY when null then 1 else 1 END as a
-from lineitem_ix_n0)tab
-group by a;
-

Reply via email to