You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by vg...@apache.org on 2015/07/09 19:23:53 UTC
[1/3] hive git commit: HIVE-10895: ObjectStore does not close Query
objects in some calls,
causing a potential leak in some metastore db resources (Aihua Xu reviewed by
Chaoyu Tang, Sergey Shelukhin, Vaibhav Gumashta)
Repository: hive
Updated Branches:
refs/heads/master 68eab6485 -> 08595ffa3
http://git-wip-us.apache.org/repos/asf/hive/blob/08595ffa/metastore/src/java/org/apache/hadoop/hive/metastore/tools/HiveMetaTool.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/tools/HiveMetaTool.java b/metastore/src/java/org/apache/hadoop/hive/metastore/tools/HiveMetaTool.java
index d0ff329..411ac21 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/tools/HiveMetaTool.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/tools/HiveMetaTool.java
@@ -149,16 +149,21 @@ public class HiveMetaTool {
initObjectStore(hiveConf);
System.out.println("Executing query: " + query);
- Collection<?> result = objStore.executeJDOQLSelect(query);
- if (result != null) {
- Iterator<?> iter = result.iterator();
- while (iter.hasNext()) {
- Object o = iter.next();
- System.out.println(o.toString());
+ ObjectStore.QueryWrapper queryWrapper = new ObjectStore.QueryWrapper();
+ try {
+ Collection<?> result = objStore.executeJDOQLSelect(query, queryWrapper);
+ if (result != null) {
+ Iterator<?> iter = result.iterator();
+ while (iter.hasNext()) {
+ Object o = iter.next();
+ System.out.println(o.toString());
+ }
+ } else {
+ System.err.println("Encountered error during executeJDOQLSelect -" +
+ "commit of JDO transaction failed.");
}
- } else {
- System.err.println("Encountered error during executeJDOQLSelect -" +
- "commit of JDO transaction failed.");
+ } finally {
+ queryWrapper.close();
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/08595ffa/metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java
----------------------------------------------------------------------
diff --git a/metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java b/metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java
new file mode 100644
index 0000000..a4f9f6c
--- /dev/null
+++ b/metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java
@@ -0,0 +1,230 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.metastore;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+
+import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.metastore.api.Database;
+import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hadoop.hive.metastore.api.InvalidInputException;
+import org.apache.hadoop.hive.metastore.api.InvalidObjectException;
+import org.apache.hadoop.hive.metastore.api.MetaException;
+import org.apache.hadoop.hive.metastore.api.NoSuchObjectException;
+import org.apache.hadoop.hive.metastore.api.Partition;
+import org.apache.hadoop.hive.metastore.api.PrincipalType;
+import org.apache.hadoop.hive.metastore.api.Role;
+import org.apache.hadoop.hive.metastore.api.SerDeInfo;
+import org.apache.hadoop.hive.metastore.api.StorageDescriptor;
+import org.apache.hadoop.hive.metastore.api.Table;
+import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestObjectStore {
+ private ObjectStore objectStore = null;
+
+ private static final String DB1 = "testobjectstoredb1";
+ private static final String DB2 = "testobjectstoredb2";
+ private static final String TABLE1 = "testobjectstoretable1";
+ private static final String KEY1 = "testobjectstorekey1";
+ private static final String KEY2 = "testobjectstorekey2";
+ private static final String OWNER = "testobjectstoreowner";
+ private static final String USER1 = "testobjectstoreuser1";
+ private static final String ROLE1 = "testobjectstorerole1";
+ private static final String ROLE2 = "testobjectstorerole2";
+
+ public static class MockPartitionExpressionProxy implements PartitionExpressionProxy {
+ @Override
+ public String convertExprToFilter(byte[] expr) throws MetaException {
+ return null;
+ }
+
+ @Override
+ public boolean filterPartitionsByExpr(List<String> partColumnNames,
+ List<PrimitiveTypeInfo> partColumnTypeInfos, byte[] expr,
+ String defaultPartitionName, List<String> partitionNames)
+ throws MetaException {
+ return false;
+ }
+ }
+
+ @Before
+ public void setUp() {
+ HiveConf conf = new HiveConf();
+ conf.setVar(HiveConf.ConfVars.METASTORE_EXPRESSION_PROXY_CLASS, MockPartitionExpressionProxy.class.getName());
+
+ objectStore = new ObjectStore();
+ objectStore.setConf(conf);
+
+ Deadline.registerIfNot(100000);
+ try {
+ objectStore.dropDatabase(DB1);
+ } catch (Exception e) {
+ }
+ try {
+ objectStore.dropDatabase(DB2);
+ } catch (Exception e) {
+ }
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test database operations
+ */
+ @Test
+ public void testDatabaseOps() throws MetaException, InvalidObjectException, NoSuchObjectException {
+ Database db1 = new Database(DB1, "description", "locationurl", null);
+ Database db2 = new Database(DB2, "description", "locationurl", null);
+ objectStore.createDatabase(db1);
+ objectStore.createDatabase(db2);
+
+ List<String> databases = objectStore.getAllDatabases();
+ Assert.assertEquals(2, databases.size());
+ Assert.assertEquals(DB1, databases.get(0));
+ Assert.assertEquals(DB2, databases.get(1));
+
+ objectStore.dropDatabase(DB1);
+ databases = objectStore.getAllDatabases();
+ Assert.assertEquals(1, databases.size());
+ Assert.assertEquals(DB2, databases.get(0));
+
+ objectStore.dropDatabase(DB2);
+ }
+
+ /**
+ * Test table operations
+ */
+ @Test
+ public void testTableOps() throws MetaException, InvalidObjectException, NoSuchObjectException, InvalidInputException {
+ Database db1 = new Database(DB1, "description", "locationurl", null);
+ objectStore.createDatabase(db1);
+ StorageDescriptor sd = new StorageDescriptor(null, "location", null, null, false, 0, new SerDeInfo("SerDeName", "serializationLib", null), null, null, null);
+ HashMap<String,String> params = new HashMap<String,String>();
+ params.put("EXTERNAL", "false");
+ Table tbl1 = new Table(TABLE1, DB1, "owner", 1, 2, 3, sd, null, params, "viewOriginalText", "viewExpandedText", "MANAGED_TABLE");
+ objectStore.createTable(tbl1);
+
+ List<String> tables = objectStore.getAllTables(DB1);
+ Assert.assertEquals(1, tables.size());
+ Assert.assertEquals(TABLE1, tables.get(0));
+
+ Table newTbl1 = new Table("new" + TABLE1, DB1, "owner", 1, 2, 3, sd, null, params, "viewOriginalText", "viewExpandedText", "MANAGED_TABLE");
+ objectStore.alterTable(DB1, TABLE1, newTbl1);
+ tables = objectStore.getTables(DB1, "new*");
+ Assert.assertEquals(1, tables.size());
+ Assert.assertEquals("new" + TABLE1, tables.get(0));
+
+ objectStore.dropTable(DB1, "new" + TABLE1);
+ tables = objectStore.getAllTables(DB1);
+ Assert.assertEquals(0, tables.size());
+
+ objectStore.dropDatabase(DB1);
+ }
+
+ /**
+ * Tests partition operations
+ */
+ @Test
+ public void testPartitionOps() throws MetaException, InvalidObjectException, NoSuchObjectException, InvalidInputException {
+ Database db1 = new Database(DB1, "description", "locationurl", null);
+ objectStore.createDatabase(db1);
+ StorageDescriptor sd = new StorageDescriptor(null, "location", null, null, false, 0, new SerDeInfo("SerDeName", "serializationLib", null), null, null, null);
+ HashMap<String,String> tableParams = new HashMap<String,String>();
+ tableParams.put("EXTERNAL", "false");
+ FieldSchema partitionKey1 = new FieldSchema("Country", "String", "");
+ FieldSchema partitionKey2 = new FieldSchema("State", "String", "");
+ Table tbl1 = new Table(TABLE1, DB1, "owner", 1, 2, 3, sd, Arrays.asList(partitionKey1, partitionKey2), tableParams, "viewOriginalText", "viewExpandedText", "MANAGED_TABLE");
+ objectStore.createTable(tbl1);
+ HashMap<String, String> partitionParams = new HashMap<String, String>();
+ partitionParams.put("PARTITION_LEVEL_PRIVILEGE", "true");
+ List<String> value1 = Arrays.asList("US", "CA");
+ Partition part1 = new Partition(value1, DB1, TABLE1, 111, 111, sd, partitionParams);
+ objectStore.addPartition(part1);
+ List<String> value2 = Arrays.asList("US", "MA");
+ Partition part2 = new Partition(value2, DB1, TABLE1, 222, 222, sd, partitionParams);
+ objectStore.addPartition(part2);
+
+ Deadline.startTimer("getPartition");
+ List<Partition> partitions = objectStore.getPartitions(DB1, TABLE1, 10);
+ Assert.assertEquals(2, partitions.size());
+ Assert.assertEquals(111, partitions.get(0).getCreateTime());
+ Assert.assertEquals(222, partitions.get(1).getCreateTime());
+
+ objectStore.dropPartition(DB1, TABLE1, value1);
+ partitions = objectStore.getPartitions(DB1, TABLE1, 10);
+ Assert.assertEquals(1, partitions.size());
+ Assert.assertEquals(222, partitions.get(0).getCreateTime());
+
+ objectStore.dropPartition(DB1, TABLE1, value2);
+ objectStore.dropTable(DB1, TABLE1);
+ objectStore.dropDatabase(DB1);
+ }
+
+ /**
+ * Test master keys operation
+ */
+ @Test
+ public void testMasterKeyOps() throws MetaException, NoSuchObjectException {
+ int id1 = objectStore.addMasterKey(KEY1);
+ int id2 = objectStore.addMasterKey(KEY2);
+
+ String[] keys = objectStore.getMasterKeys();
+ Assert.assertEquals(2, keys.length);
+ Assert.assertEquals(KEY1, keys[0]);
+ Assert.assertEquals(KEY2, keys[1]);
+
+ objectStore.updateMasterKey(id1, "new" + KEY1);
+ objectStore.updateMasterKey(id2, "new" + KEY2);
+ keys = objectStore.getMasterKeys();
+ Assert.assertEquals(2, keys.length);
+ Assert.assertEquals("new" + KEY1, keys[0]);
+ Assert.assertEquals("new" + KEY2, keys[1]);
+
+ objectStore.removeMasterKey(id1);
+ keys = objectStore.getMasterKeys();
+ Assert.assertEquals(1, keys.length);
+ Assert.assertEquals("new" + KEY2, keys[0]);
+
+ objectStore.removeMasterKey(id2);
+ }
+
+ /**
+ * Test role operation
+ */
+ @Test
+ public void testRoleOps() throws InvalidObjectException, MetaException, NoSuchObjectException {
+ objectStore.addRole(ROLE1, OWNER);
+ objectStore.addRole(ROLE2, OWNER);
+ List<String> roles = objectStore.listRoleNames();
+ Assert.assertEquals(2, roles.size());
+ Assert.assertEquals(ROLE2, roles.get(1));
+ Role role1 = objectStore.getRole(ROLE1);
+ Assert.assertEquals(OWNER, role1.getOwnerName());
+ objectStore.grantRole(role1, USER1, PrincipalType.USER, OWNER, PrincipalType.ROLE, true);
+ objectStore.revokeRole(role1, USER1, PrincipalType.USER, false);
+ objectStore.removeRole(ROLE1);
+ }
+}
[3/3] hive git commit: HIVE-10895: ObjectStore does not close Query
objects in some calls,
causing a potential leak in some metastore db resources (Aihua Xu reviewed by
Chaoyu Tang, Sergey Shelukhin, Vaibhav Gumashta)
Posted by vg...@apache.org.
HIVE-10895: ObjectStore does not close Query objects in some calls, causing a potential leak in some metastore db resources (Aihua Xu reviewed by Chaoyu Tang, Sergey Shelukhin, Vaibhav Gumashta)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/08595ffa
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/08595ffa
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/08595ffa
Branch: refs/heads/master
Commit: 08595ffa33d4985b43249be9b7c5a081cece2e6a
Parents: 68eab64
Author: Vaibhav Gumashta <vg...@apache.org>
Authored: Thu Jul 9 22:53:21 2015 +0530
Committer: Vaibhav Gumashta <vg...@apache.org>
Committed: Thu Jul 9 22:53:21 2015 +0530
----------------------------------------------------------------------
.../hive/metastore/MetaStoreDirectSql.java | 56 +-
.../hadoop/hive/metastore/ObjectStore.java | 1838 ++++++++++--------
.../hive/metastore/tools/HiveMetaTool.java | 23 +-
.../hadoop/hive/metastore/TestObjectStore.java | 230 +++
4 files changed, 1330 insertions(+), 817 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/08595ffa/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java
index 1c21c8b..5776ec6 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java
@@ -178,25 +178,44 @@ class MetaStoreDirectSql {
private boolean ensureDbInit() {
Transaction tx = pm.currentTransaction();
+ Query dbQuery = null, tblColumnQuery = null, partColumnQuery = null;
try {
// Force the underlying db to initialize.
- pm.newQuery(MDatabase.class, "name == ''").execute();
- pm.newQuery(MTableColumnStatistics.class, "dbName == ''").execute();
- pm.newQuery(MPartitionColumnStatistics.class, "dbName == ''").execute();
+ dbQuery = pm.newQuery(MDatabase.class, "name == ''");
+ dbQuery.execute();
+
+ tblColumnQuery = pm.newQuery(MTableColumnStatistics.class, "dbName == ''");
+ tblColumnQuery.execute();
+
+ partColumnQuery = pm.newQuery(MPartitionColumnStatistics.class, "dbName == ''");
+ partColumnQuery.execute();
+
return true;
} catch (Exception ex) {
LOG.warn("Database initialization failed; direct SQL is disabled", ex);
tx.rollback();
return false;
+ } finally {
+ if (dbQuery != null) {
+ dbQuery.closeAll();
+ }
+ if (tblColumnQuery != null) {
+ tblColumnQuery.closeAll();
+ }
+ if (partColumnQuery != null) {
+ partColumnQuery.closeAll();
+ }
}
}
private boolean runTestQuery() {
Transaction tx = pm.currentTransaction();
+ Query query = null;
// Run a self-test query. If it doesn't work, we will self-disable. What a PITA...
String selfTestQuery = "select \"DB_ID\" from \"DBS\"";
try {
- pm.newQuery("javax.jdo.query.SQL", selfTestQuery).execute();
+ query = pm.newQuery("javax.jdo.query.SQL", selfTestQuery);
+ query.execute();
tx.commit();
return true;
} catch (Exception ex) {
@@ -204,6 +223,11 @@ class MetaStoreDirectSql {
tx.rollback();
return false;
}
+ finally {
+ if (query != null) {
+ query.closeAll();
+ }
+ }
}
public boolean isCompatibleDatastore() {
@@ -393,14 +417,21 @@ class MetaStoreDirectSql {
}
private boolean isViewTable(String dbName, String tblName) throws MetaException {
- String queryText = "select \"TBL_TYPE\" from \"TBLS\"" +
- " inner join \"DBS\" on \"TBLS\".\"DB_ID\" = \"DBS\".\"DB_ID\" " +
- " where \"TBLS\".\"TBL_NAME\" = ? and \"DBS\".\"NAME\" = ?";
- Object[] params = new Object[] { tblName, dbName };
- Query query = pm.newQuery("javax.jdo.query.SQL", queryText);
- query.setUnique(true);
- Object result = executeWithArray(query, params, queryText);
- return (result != null) && result.toString().equals(TableType.VIRTUAL_VIEW.toString());
+ Query query = null;
+ try {
+ String queryText = "select \"TBL_TYPE\" from \"TBLS\"" +
+ " inner join \"DBS\" on \"TBLS\".\"DB_ID\" = \"DBS\".\"DB_ID\" " +
+ " where \"TBLS\".\"TBL_NAME\" = ? and \"DBS\".\"NAME\" = ?";
+ Object[] params = new Object[] { tblName, dbName };
+ query = pm.newQuery("javax.jdo.query.SQL", queryText);
+ query.setUnique(true);
+ Object result = executeWithArray(query, params, queryText);
+ return (result != null) && result.toString().equals(TableType.VIRTUAL_VIEW.toString());
+ } finally {
+ if (query != null) {
+ query.closeAll();
+ }
+ }
}
/**
@@ -1190,6 +1221,7 @@ class MetaStoreDirectSql {
partsFound++;
}
}
+ query.closeAll();
return partsFound;
}
[2/3] hive git commit: HIVE-10895: ObjectStore does not close Query
objects in some calls,
causing a potential leak in some metastore db resources (Aihua Xu reviewed by
Chaoyu Tang, Sergey Shelukhin, Vaibhav Gumashta)
Posted by vg...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/08595ffa/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
index 8f52f83..39ab9e7 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
@@ -217,6 +217,29 @@ public class ObjectStore implements RawStore, Configurable {
private Pattern partitionValidationPattern;
+ /**
+ * A class to pass the Query object to the caller to let the caller release
+ * resources by calling QueryWrapper.query.closeAll() after consuming all the query results.
+ */
+ public static class QueryWrapper {
+ public Query query;
+
+ /**
+ * Explicitly closes the query object to release the resources
+ */
+ public void close() {
+ if (query != null) {
+ query.closeAll();
+ query = null;
+ }
+ }
+
+ @Override
+ protected void finalize() {
+ this.close();
+ }
+ }
+
public ObjectStore() {
}
@@ -551,10 +574,11 @@ public class ObjectStore implements RawStore, Configurable {
private MDatabase getMDatabase(String name) throws NoSuchObjectException {
MDatabase mdb = null;
boolean commited = false;
+ Query query = null;
try {
openTransaction();
name = HiveStringUtils.normalizeIdentifier(name);
- Query query = pm.newQuery(MDatabase.class, "name == dbname");
+ query = pm.newQuery(MDatabase.class, "name == dbname");
query.declareParameters("java.lang.String dbname");
query.setUnique(true);
mdb = (MDatabase) query.execute(name);
@@ -564,6 +588,9 @@ public class ObjectStore implements RawStore, Configurable {
if (!commited) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
if (mdb == null) {
throw new NoSuchObjectException("There is no database named " + name);
@@ -666,6 +693,7 @@ public class ObjectStore implements RawStore, Configurable {
boolean success = false;
LOG.info("Dropping database " + dbname + " along with all tables");
dbname = HiveStringUtils.normalizeIdentifier(dbname);
+ QueryWrapper queryWrapper = new QueryWrapper();
try {
openTransaction();
@@ -673,7 +701,7 @@ public class ObjectStore implements RawStore, Configurable {
MDatabase db = getMDatabase(dbname);
pm.retrieve(db);
if (db != null) {
- List<MDBPrivilege> dbGrants = this.listDatabaseGrants(dbname);
+ List<MDBPrivilege> dbGrants = this.listDatabaseGrants(dbname, queryWrapper);
if (dbGrants != null && dbGrants.size() > 0) {
pm.deletePersistentAll(dbGrants);
}
@@ -684,36 +712,36 @@ public class ObjectStore implements RawStore, Configurable {
if (!success) {
rollbackTransaction();
}
+ queryWrapper.close();
}
return success;
}
-
@Override
public List<String> getDatabases(String pattern) throws MetaException {
boolean commited = false;
List<String> databases = null;
+ Query query = null;
try {
openTransaction();
// Take the pattern and split it on the | to get all the composing
// patterns
String[] subpatterns = pattern.trim().split("\\|");
- String query = "select name from org.apache.hadoop.hive.metastore.model.MDatabase where (";
+ String queryStr = "select name from org.apache.hadoop.hive.metastore.model.MDatabase where (";
boolean first = true;
for (String subpattern : subpatterns) {
subpattern = "(?i)" + subpattern.replaceAll("\\*", ".*");
if (!first) {
- query = query + " || ";
+ queryStr = queryStr + " || ";
}
- query = query + " name.matches(\"" + subpattern + "\")";
+ queryStr = queryStr + " name.matches(\"" + subpattern + "\")";
first = false;
}
- query = query + ")";
-
- Query q = pm.newQuery(query);
- q.setResult("name");
- q.setOrdering("name ascending");
- Collection names = (Collection) q.execute();
+ queryStr = queryStr + ")";
+ query = pm.newQuery(queryStr);
+ query.setResult("name");
+ query.setOrdering("name ascending");
+ Collection names = (Collection) query.execute();
databases = new ArrayList<String>();
for (Iterator i = names.iterator(); i.hasNext();) {
databases.add((String) i.next());
@@ -723,6 +751,9 @@ public class ObjectStore implements RawStore, Configurable {
if (!commited) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return databases;
}
@@ -781,9 +812,10 @@ public class ObjectStore implements RawStore, Configurable {
public Type getType(String typeName) {
Type type = null;
boolean commited = false;
+ Query query = null;
try {
openTransaction();
- Query query = pm.newQuery(MType.class, "name == typeName");
+ query = pm.newQuery(MType.class, "name == typeName");
query.declareParameters("java.lang.String typeName");
query.setUnique(true);
MType mtype = (MType) query.execute(typeName.trim());
@@ -796,6 +828,9 @@ public class ObjectStore implements RawStore, Configurable {
if (!commited) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return type;
}
@@ -803,9 +838,10 @@ public class ObjectStore implements RawStore, Configurable {
@Override
public boolean dropType(String typeName) {
boolean success = false;
+ Query query = null;
try {
openTransaction();
- Query query = pm.newQuery(MType.class, "name == typeName");
+ query = pm.newQuery(MType.class, "name == typeName");
query.declareParameters("java.lang.String typeName");
query.setUnique(true);
MType type = (MType) query.execute(typeName.trim());
@@ -821,6 +857,9 @@ public class ObjectStore implements RawStore, Configurable {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return success;
}
@@ -956,9 +995,9 @@ public class ObjectStore implements RawStore, Configurable {
}
@Override
- public List<String> getTables(String dbName, String pattern)
- throws MetaException {
+ public List<String> getTables(String dbName, String pattern) throws MetaException {
boolean commited = false;
+ Query query = null;
List<String> tbls = null;
try {
openTransaction();
@@ -966,25 +1005,24 @@ public class ObjectStore implements RawStore, Configurable {
// Take the pattern and split it on the | to get all the composing
// patterns
String[] subpatterns = pattern.trim().split("\\|");
- String query =
- "select tableName from org.apache.hadoop.hive.metastore.model.MTable "
- + "where database.name == dbName && (";
+ String queryStr =
+ "select tableName from org.apache.hadoop.hive.metastore.model.MTable "
+ + "where database.name == dbName && (";
boolean first = true;
for (String subpattern : subpatterns) {
subpattern = "(?i)" + subpattern.replaceAll("\\*", ".*");
if (!first) {
- query = query + " || ";
+ queryStr = queryStr + " || ";
}
- query = query + " tableName.matches(\"" + subpattern + "\")";
+ queryStr = queryStr + " tableName.matches(\"" + subpattern + "\")";
first = false;
}
- query = query + ")";
-
- Query q = pm.newQuery(query);
- q.declareParameters("java.lang.String dbName");
- q.setResult("tableName");
- q.setOrdering("tableName ascending");
- Collection names = (Collection) q.execute(dbName);
+ queryStr = queryStr + ")";
+ query = pm.newQuery(queryStr);
+ query.declareParameters("java.lang.String dbName");
+ query.setResult("tableName");
+ query.setOrdering("tableName ascending");
+ Collection names = (Collection) query.execute(dbName);
tbls = new ArrayList<String>();
for (Iterator i = names.iterator(); i.hasNext();) {
tbls.add((String) i.next());
@@ -994,6 +1032,9 @@ public class ObjectStore implements RawStore, Configurable {
if (!commited) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return tbls;
}
@@ -1006,11 +1047,12 @@ public class ObjectStore implements RawStore, Configurable {
private MTable getMTable(String db, String table) {
MTable mtbl = null;
boolean commited = false;
+ Query query = null;
try {
openTransaction();
db = HiveStringUtils.normalizeIdentifier(db);
table = HiveStringUtils.normalizeIdentifier(table);
- Query query = pm.newQuery(MTable.class, "tableName == table && database.name == db");
+ query = pm.newQuery(MTable.class, "tableName == table && database.name == db");
query.declareParameters("java.lang.String table, java.lang.String db");
query.setUnique(true);
mtbl = (MTable) query.execute(table, db);
@@ -1020,20 +1062,24 @@ public class ObjectStore implements RawStore, Configurable {
if (!commited) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return mtbl;
}
@Override
- public List<Table> getTableObjectsByName(String db, List<String> tbl_names)
- throws MetaException, UnknownDBException {
+ public List<Table> getTableObjectsByName(String db, List<String> tbl_names) throws MetaException,
+ UnknownDBException {
List<Table> tables = new ArrayList<Table>();
boolean committed = false;
+ Query dbExistsQuery = null;
+ Query query = null;
try {
openTransaction();
-
db = HiveStringUtils.normalizeIdentifier(db);
- Query dbExistsQuery = pm.newQuery(MDatabase.class, "name == db");
+ dbExistsQuery = pm.newQuery(MDatabase.class, "name == db");
dbExistsQuery.declareParameters("java.lang.String db");
dbExistsQuery.setUnique(true);
dbExistsQuery.setResult("name");
@@ -1046,7 +1092,7 @@ public class ObjectStore implements RawStore, Configurable {
for (String t : tbl_names) {
lowered_tbl_names.add(HiveStringUtils.normalizeIdentifier(t));
}
- Query query = pm.newQuery(MTable.class);
+ query = pm.newQuery(MTable.class);
query.setFilter("database.name == db && tbl_names.contains(tableName)");
query.declareParameters("java.lang.String db, java.util.Collection tbl_names");
Collection mtables = (Collection) query.execute(db, lowered_tbl_names);
@@ -1058,6 +1104,12 @@ public class ObjectStore implements RawStore, Configurable {
if (!committed) {
rollbackTransaction();
}
+ if (dbExistsQuery != null) {
+ dbExistsQuery.closeAll();
+ }
+ if (query != null) {
+ query.closeAll();
+ }
}
return tables;
}
@@ -1208,9 +1260,9 @@ public class ObjectStore implements RawStore, Configurable {
// MSD and SD should be same objects. Not sure how to make then same right now
// MSerdeInfo *& SerdeInfo should be same as well
- private StorageDescriptor convertToStorageDescriptor(MStorageDescriptor msd,
- boolean noFS)
- throws MetaException {
+ private StorageDescriptor convertToStorageDescriptor(
+ MStorageDescriptor msd,
+ boolean noFS) throws MetaException {
if (msd == null) {
return null;
}
@@ -1296,8 +1348,6 @@ public class ObjectStore implements RawStore, Configurable {
return map;
}
-
-
/**
* Converts a storage descriptor to a db-backed storage descriptor. Creates a
* new db-backed column descriptor object for this SD.
@@ -1404,7 +1454,6 @@ public class ObjectStore implements RawStore, Configurable {
return !doesExist;
}
-
@Override
public boolean addPartitions(String dbName, String tblName,
PartitionSpecProxy partitionSpec, boolean ifNotExists)
@@ -1531,10 +1580,11 @@ public class ObjectStore implements RawStore, Configurable {
return part;
}
- private MPartition getMPartition(String dbName, String tableName,
- List<String> part_vals) throws MetaException {
+ private MPartition getMPartition(String dbName, String tableName, List<String> part_vals)
+ throws MetaException {
MPartition mpart = null;
boolean commited = false;
+ Query query = null;
try {
openTransaction();
dbName = HiveStringUtils.normalizeIdentifier(dbName);
@@ -1546,10 +1596,11 @@ public class ObjectStore implements RawStore, Configurable {
}
// Change the query to use part_vals instead of the name which is
// redundant TODO: callers of this often get part_vals out of name for no reason...
- String name = Warehouse.makePartName(convertToFieldSchemas(mtbl
- .getPartitionKeys()), part_vals);
- Query query = pm.newQuery(MPartition.class,
- "table.tableName == t1 && table.database.name == t2 && partitionName == t3");
+ String name =
+ Warehouse.makePartName(convertToFieldSchemas(mtbl.getPartitionKeys()), part_vals);
+ query =
+ pm.newQuery(MPartition.class,
+ "table.tableName == t1 && table.database.name == t2 && partitionName == t3");
query.declareParameters("java.lang.String t1, java.lang.String t2, java.lang.String t3");
query.setUnique(true);
mpart = (MPartition) query.execute(tableName, dbName, name);
@@ -1559,6 +1610,9 @@ public class ObjectStore implements RawStore, Configurable {
if (!commited) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return mpart;
}
@@ -1750,8 +1804,13 @@ public class ObjectStore implements RawStore, Configurable {
}
@Override
protected List<Partition> getJdoResult(
- GetHelper<List<Partition>> ctx) throws MetaException, NoSuchObjectException {
- return convertToParts(listMPartitions(dbName, tblName, maxParts));
+ GetHelper<List<Partition>> ctx) throws MetaException {
+ QueryWrapper queryWrapper = new QueryWrapper();
+ try {
+ return convertToParts(listMPartitions(dbName, tblName, maxParts, queryWrapper));
+ } finally {
+ queryWrapper.close();
+ }
}
}.run(false);
}
@@ -1759,11 +1818,13 @@ public class ObjectStore implements RawStore, Configurable {
@Override
public List<Partition> getPartitionsWithAuth(String dbName, String tblName,
short max, String userName, List<String> groupNames)
- throws MetaException, NoSuchObjectException, InvalidObjectException {
+ throws MetaException, InvalidObjectException {
boolean success = false;
+ QueryWrapper queryWrapper = new QueryWrapper();
+
try {
openTransaction();
- List<MPartition> mparts = listMPartitions(dbName, tblName, max);
+ List<MPartition> mparts = listMPartitions(dbName, tblName, max, queryWrapper);
List<Partition> parts = new ArrayList<Partition>(mparts.size());
if (mparts != null && mparts.size()>0) {
for (MPartition mpart : mparts) {
@@ -1786,6 +1847,7 @@ public class ObjectStore implements RawStore, Configurable {
if (!success) {
rollbackTransaction();
}
+ queryWrapper.close();
}
}
@@ -1822,7 +1884,6 @@ public class ObjectStore implements RawStore, Configurable {
}
}
-
private List<Partition> convertToParts(List<MPartition> mparts) throws MetaException {
return convertToParts(mparts, null);
}
@@ -1875,20 +1936,22 @@ public class ObjectStore implements RawStore, Configurable {
List<String> pns = new ArrayList<String>();
dbName = HiveStringUtils.normalizeIdentifier(dbName);
tableName = HiveStringUtils.normalizeIdentifier(tableName);
- Query q = pm.newQuery(
- "select partitionName from org.apache.hadoop.hive.metastore.model.MPartition "
- + "where table.database.name == t1 && table.tableName == t2 "
- + "order by partitionName asc");
- q.declareParameters("java.lang.String t1, java.lang.String t2");
- q.setResult("partitionName");
-
- if(max > 0) {
- q.setRange(0, max);
- }
- Collection names = (Collection) q.execute(dbName, tableName);
+ Query query =
+ pm.newQuery("select partitionName from org.apache.hadoop.hive.metastore.model.MPartition "
+ + "where table.database.name == t1 && table.tableName == t2 "
+ + "order by partitionName asc");
+ query.declareParameters("java.lang.String t1, java.lang.String t2");
+ query.setResult("partitionName");
+ if (max > 0) {
+ query.setRange(0, max);
+ }
+ Collection names = (Collection) query.execute(dbName, tableName);
for (Iterator i = names.iterator(); i.hasNext();) {
pns.add((String) i.next());
}
+ if (query != null) {
+ query.closeAll();
+ }
return pns;
}
@@ -1908,51 +1971,46 @@ public class ObjectStore implements RawStore, Configurable {
* has types of String, and if resultsCol is null, the types are MPartition.
*/
private Collection getPartitionPsQueryResults(String dbName, String tableName,
- List<String> part_vals, short max_parts, String resultsCol)
+ List<String> part_vals, short max_parts, String resultsCol, QueryWrapper queryWrapper)
throws MetaException, NoSuchObjectException {
dbName = HiveStringUtils.normalizeIdentifier(dbName);
tableName = HiveStringUtils.normalizeIdentifier(tableName);
Table table = getTable(dbName, tableName);
-
if (table == null) {
throw new NoSuchObjectException(dbName + "." + tableName + " table not found");
}
-
List<FieldSchema> partCols = table.getPartitionKeys();
int numPartKeys = partCols.size();
if (part_vals.size() > numPartKeys) {
throw new MetaException("Incorrect number of partition values");
}
-
partCols = partCols.subList(0, part_vals.size());
- //Construct a pattern of the form: partKey=partVal/partKey2=partVal2/...
+ // Construct a pattern of the form: partKey=partVal/partKey2=partVal2/...
// where partVal is either the escaped partition value given as input,
// or a regex of the form ".*"
- //This works because the "=" and "/" separating key names and partition key/values
+ // This works because the "=" and "/" separating key names and partition key/values
// are not escaped.
String partNameMatcher = Warehouse.makePartName(partCols, part_vals, ".*");
- //add ".*" to the regex to match anything else afterwards the partial spec.
+ // add ".*" to the regex to match anything else afterwards the partial spec.
if (part_vals.size() < numPartKeys) {
partNameMatcher += ".*";
}
-
- Query q = pm.newQuery(MPartition.class);
+ Query query = queryWrapper.query = pm.newQuery(MPartition.class);
StringBuilder queryFilter = new StringBuilder("table.database.name == dbName");
queryFilter.append(" && table.tableName == tableName");
queryFilter.append(" && partitionName.matches(partialRegex)");
- q.setFilter(queryFilter.toString());
- q.declareParameters("java.lang.String dbName, " +
- "java.lang.String tableName, java.lang.String partialRegex");
-
- if( max_parts >= 0 ) {
- //User specified a row limit, set it on the Query
- q.setRange(0, max_parts);
+ query.setFilter(queryFilter.toString());
+ query.declareParameters("java.lang.String dbName, "
+ + "java.lang.String tableName, java.lang.String partialRegex");
+ if (max_parts >= 0) {
+ // User specified a row limit, set it on the Query
+ query.setRange(0, max_parts);
}
if (resultsCol != null && !resultsCol.isEmpty()) {
- q.setResult(resultsCol);
+ query.setResult(resultsCol);
}
- return (Collection) q.execute(dbName, tableName, partNameMatcher);
+ return (Collection) query.execute(dbName, tableName, partNameMatcher);
}
@Override
@@ -1961,11 +2019,13 @@ public class ObjectStore implements RawStore, Configurable {
throws MetaException, InvalidObjectException, NoSuchObjectException {
List<Partition> partitions = new ArrayList<Partition>();
boolean success = false;
+ QueryWrapper queryWrapper = new QueryWrapper();
+
try {
openTransaction();
LOG.debug("executing listPartitionNamesPsWithAuth");
Collection parts = getPartitionPsQueryResults(db_name, tbl_name,
- part_vals, max_parts, null);
+ part_vals, max_parts, null, queryWrapper);
MTable mtbl = getMTable(db_name, tbl_name);
for (Object o : parts) {
Partition part = convertToPart((MPartition) o);
@@ -1985,6 +2045,7 @@ public class ObjectStore implements RawStore, Configurable {
if (!success) {
rollbackTransaction();
}
+ queryWrapper.close();
}
return partitions;
}
@@ -1994,11 +2055,13 @@ public class ObjectStore implements RawStore, Configurable {
List<String> part_vals, short max_parts) throws MetaException, NoSuchObjectException {
List<String> partitionNames = new ArrayList<String>();
boolean success = false;
+ QueryWrapper queryWrapper = new QueryWrapper();
+
try {
openTransaction();
LOG.debug("Executing listPartitionNamesPs");
Collection names = getPartitionPsQueryResults(dbName, tableName,
- part_vals, max_parts, "partitionName");
+ part_vals, max_parts, "partitionName", queryWrapper);
for (Object o : names) {
partitionNames.add((String) o);
}
@@ -2007,14 +2070,13 @@ public class ObjectStore implements RawStore, Configurable {
if (!success) {
rollbackTransaction();
}
+ queryWrapper.close();
}
return partitionNames;
}
// TODO:pc implement max
- private List<MPartition> listMPartitions(String dbName, String tableName,
- int max) {
-
+ private List<MPartition> listMPartitions(String dbName, String tableName, int max, QueryWrapper queryWrapper) {
boolean success = false;
List<MPartition> mparts = null;
try {
@@ -2022,11 +2084,10 @@ public class ObjectStore implements RawStore, Configurable {
LOG.debug("Executing listMPartitions");
dbName = HiveStringUtils.normalizeIdentifier(dbName);
tableName = HiveStringUtils.normalizeIdentifier(tableName);
- Query query = pm.newQuery(MPartition.class,
- "table.tableName == t1 && table.database.name == t2");
+ Query query = queryWrapper.query = pm.newQuery(MPartition.class, "table.tableName == t1 && table.database.name == t2");
query.declareParameters("java.lang.String t1, java.lang.String t2");
query.setOrdering("partitionName ascending");
- if(max > 0) {
+ if (max > 0) {
query.setRange(0, max);
}
mparts = (List<MPartition>) query.execute(tableName, dbName);
@@ -2216,8 +2277,8 @@ public class ObjectStore implements RawStore, Configurable {
private List<Partition> getPartitionsViaOrmFilter(Table table, ExpressionTree tree,
short maxParts, boolean isValidatedFilter) throws MetaException {
Map<String, Object> params = new HashMap<String, Object>();
- String jdoFilter = makeQueryFilterString(
- table.getDbName(), table, tree, params, isValidatedFilter);
+ String jdoFilter =
+ makeQueryFilterString(table.getDbName(), table, tree, params, isValidatedFilter);
if (jdoFilter == null) {
assert !isValidatedFilter;
return null;
@@ -2227,14 +2288,11 @@ public class ObjectStore implements RawStore, Configurable {
// User specified a row limit, set it on the Query
query.setRange(0, maxParts);
}
-
String parameterDeclaration = makeParameterDeclarationStringObj(params);
query.declareParameters(parameterDeclaration);
query.setOrdering("partitionName ascending");
-
@SuppressWarnings("unchecked")
List<MPartition> mparts = (List<MPartition>) query.executeWithMap(params);
-
LOG.debug("Done executing query for getPartitionsViaOrmFilter");
pm.retrieveAll(mparts); // TODO: why is this inconsistent with what we get by names?
LOG.debug("Done retrieving all objects for getPartitionsViaOrmFilter");
@@ -2243,10 +2301,6 @@ public class ObjectStore implements RawStore, Configurable {
return results;
}
- private static class Out<T> {
- public T val;
- }
-
/**
* Gets partition names from the table via ORM (JDOQL) name filter.
* @param dbName Database name.
@@ -2259,16 +2313,19 @@ public class ObjectStore implements RawStore, Configurable {
if (partNames.isEmpty()) {
return new ArrayList<Partition>();
}
- Out<Query> query = new Out<Query>();
- List<MPartition> mparts = null;
- try {
- mparts = getMPartitionsViaOrmFilter(dbName, tblName, partNames, query);
- return convertToParts(dbName, tblName, mparts);
- } finally {
- if (query.val != null) {
- query.val.closeAll();
- }
+ ObjectPair<Query, Map<String, String>> queryWithParams =
+ getPartQueryWithParams(dbName, tblName, partNames);
+ Query query = queryWithParams.getFirst();
+ query.setResultClass(MPartition.class);
+ query.setClass(MPartition.class);
+ query.setOrdering("partitionName ascending");
+ @SuppressWarnings("unchecked")
+ List<MPartition> mparts = (List<MPartition>)query.executeWithMap(queryWithParams.getSecond());
+ List<Partition> partitions = convertToParts(dbName, tblName, mparts);
+ if (query != null) {
+ query.closeAll();
}
+ return partitions;
}
private void dropPartitionsNoTxn(String dbName, String tblName, List<String> partNames) {
@@ -2304,27 +2361,15 @@ public class ObjectStore implements RawStore, Configurable {
sd.setCD(null);
}
}
+ if (query != null) {
+ query.closeAll();
+ }
return candidateCds;
}
- private List<MPartition> getMPartitionsViaOrmFilter(String dbName,
- String tblName, List<String> partNames, Out<Query> out) {
- ObjectPair<Query, Map<String, String>> queryWithParams =
- getPartQueryWithParams(dbName, tblName, partNames);
- Query query = out.val = queryWithParams.getFirst();
- query.setResultClass(MPartition.class);
- query.setClass(MPartition.class);
- query.setOrdering("partitionName ascending");
-
- @SuppressWarnings("unchecked")
- List<MPartition> result = (List<MPartition>)query.executeWithMap(queryWithParams.getSecond());
- return result;
- }
-
- private ObjectPair<Query, Map<String, String>> getPartQueryWithParams(
- String dbName, String tblName, List<String> partNames) {
- StringBuilder sb = new StringBuilder(
- "table.tableName == t1 && table.database.name == t2 && (");
+ private ObjectPair<Query, Map<String, String>> getPartQueryWithParams(String dbName,
+ String tblName, List<String> partNames) {
+ StringBuilder sb = new StringBuilder("table.tableName == t1 && table.database.name == t2 && (");
int n = 0;
Map<String, String> params = new HashMap<String, String>();
for (Iterator<String> itr = partNames.iterator(); itr.hasNext();) {
@@ -2337,16 +2382,13 @@ public class ObjectStore implements RawStore, Configurable {
}
sb.setLength(sb.length() - 4); // remove the last " || "
sb.append(')');
-
Query query = pm.newQuery();
query.setFilter(sb.toString());
-
LOG.debug(" JDOQL filter is " + sb.toString());
params.put("t1", HiveStringUtils.normalizeIdentifier(tblName));
params.put("t2", HiveStringUtils.normalizeIdentifier(dbName));
-
query.declareParameters(makeParameterDeclarationString(params));
- return new ObjectPair<Query, Map<String,String>>(query, params);
+ return new ObjectPair<Query, Map<String, String>>(query, params);
}
@Override
@@ -2668,6 +2710,7 @@ public class ObjectStore implements RawStore, Configurable {
public List<String> listTableNamesByFilter(String dbName, String filter, short maxTables)
throws MetaException {
boolean success = false;
+ Query query = null;
List<String> tableNames = new ArrayList<String>();
try {
openTransaction();
@@ -2675,7 +2718,7 @@ public class ObjectStore implements RawStore, Configurable {
dbName = HiveStringUtils.normalizeIdentifier(dbName);
Map<String, Object> params = new HashMap<String, Object>();
String queryFilterString = makeQueryFilterString(dbName, null, filter, params);
- Query query = pm.newQuery(MTable.class);
+ query = pm.newQuery(MTable.class);
query.declareImports("import java.lang.String");
query.setResult("tableName");
query.setResultClass(java.lang.String.class);
@@ -2684,14 +2727,14 @@ public class ObjectStore implements RawStore, Configurable {
}
LOG.debug("filter specified is " + filter + "," + " JDOQL filter is " + queryFilterString);
for (Entry<String, Object> entry : params.entrySet()) {
- LOG.debug("key: " + entry.getKey() + " value: " + entry.getValue() +
- " class: " + entry.getValue().getClass().getName());
+ LOG.debug("key: " + entry.getKey() + " value: " + entry.getValue() + " class: "
+ + entry.getValue().getClass().getName());
}
String parameterDeclaration = makeParameterDeclarationStringObj(params);
query.declareParameters(parameterDeclaration);
query.setFilter(queryFilterString);
- Collection names = (Collection) query.executeWithMap(params);
- //have to emulate "distinct", otherwise tables with the same name may be returned
+ Collection names = (Collection)query.executeWithMap(params);
+ // have to emulate "distinct", otherwise tables with the same name may be returned
Set<String> tableNamesSet = new HashSet<String>();
for (Iterator i = names.iterator(); i.hasNext();) {
tableNamesSet.add((String) i.next());
@@ -2700,58 +2743,54 @@ public class ObjectStore implements RawStore, Configurable {
LOG.debug("Done executing query for listTableNamesByFilter");
success = commitTransaction();
LOG.debug("Done retrieving all objects for listTableNamesByFilter");
-
} finally {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return tableNames;
}
@Override
- public List<String> listPartitionNamesByFilter(String dbName, String tableName,
- String filter, short maxParts) throws MetaException {
+ public List<String> listPartitionNamesByFilter(String dbName, String tableName, String filter,
+ short maxParts) throws MetaException {
boolean success = false;
+ Query query = null;
List<String> partNames = new ArrayList<String>();
try {
openTransaction();
LOG.debug("Executing listMPartitionNamesByFilter");
dbName = HiveStringUtils.normalizeIdentifier(dbName);
tableName = HiveStringUtils.normalizeIdentifier(tableName);
-
MTable mtable = getMTable(dbName, tableName);
- if( mtable == null ) {
+ if (mtable == null) {
// To be consistent with the behavior of listPartitionNames, if the
// table or db does not exist, we return an empty list
return partNames;
}
Map<String, Object> params = new HashMap<String, Object>();
String queryFilterString = makeQueryFilterString(dbName, mtable, filter, params);
- Query query = pm.newQuery(
- "select partitionName from org.apache.hadoop.hive.metastore.model.MPartition "
- + "where " + queryFilterString);
-
- if( maxParts >= 0 ) {
- //User specified a row limit, set it on the Query
+ query =
+ pm.newQuery("select partitionName from org.apache.hadoop.hive.metastore.model.MPartition "
+ + "where " + queryFilterString);
+ if (maxParts >= 0) {
+ // User specified a row limit, set it on the Query
query.setRange(0, maxParts);
}
-
- LOG.debug("Filter specified is " + filter + "," +
- " JDOQL filter is " + queryFilterString);
+ LOG.debug("Filter specified is " + filter + "," + " JDOQL filter is " + queryFilterString);
LOG.debug("Parms is " + params);
-
String parameterDeclaration = makeParameterDeclarationStringObj(params);
query.declareParameters(parameterDeclaration);
query.setOrdering("partitionName ascending");
query.setResult("partitionName");
-
Collection names = (Collection) query.executeWithMap(params);
partNames = new ArrayList<String>();
for (Iterator i = names.iterator(); i.hasNext();) {
partNames.add((String) i.next());
}
-
LOG.debug("Done executing query for listMPartitionNamesByFilter");
success = commitTransaction();
LOG.debug("Done retrieving all objects for listMPartitionNamesByFilter");
@@ -2759,6 +2798,9 @@ public class ObjectStore implements RawStore, Configurable {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return partNames;
}
@@ -2962,10 +3004,12 @@ public class ObjectStore implements RawStore, Configurable {
}
boolean success = false;
+ QueryWrapper queryWrapper = new QueryWrapper();
+
try {
openTransaction();
LOG.debug("execute removeUnusedColumnDescriptor");
- List<MStorageDescriptor> referencedSDs = listStorageDescriptorsWithCD(oldCD, 1);
+ List<MStorageDescriptor> referencedSDs = listStorageDescriptorsWithCD(oldCD, 1, queryWrapper);
//if no other SD references this CD, we can throw it out.
if (referencedSDs != null && referencedSDs.isEmpty()) {
pm.retrieve(oldCD);
@@ -2977,6 +3021,7 @@ public class ObjectStore implements RawStore, Configurable {
if (!success) {
rollbackTransaction();
}
+ queryWrapper.close();
}
}
@@ -3005,21 +3050,22 @@ public class ObjectStore implements RawStore, Configurable {
* @param maxSDs the maximum number of SDs to return
* @return a list of storage descriptors
*/
- private List<MStorageDescriptor> listStorageDescriptorsWithCD(MColumnDescriptor oldCD,
- long maxSDs) {
+ private List<MStorageDescriptor> listStorageDescriptorsWithCD(
+ MColumnDescriptor oldCD,
+ long maxSDs,
+ QueryWrapper queryWrapper) {
boolean success = false;
List<MStorageDescriptor> sds = null;
try {
openTransaction();
LOG.debug("Executing listStorageDescriptorsWithCD");
- Query query = pm.newQuery(MStorageDescriptor.class,
- "this.cd == inCD");
+ Query query = queryWrapper.query = pm.newQuery(MStorageDescriptor.class, "this.cd == inCD");
query.declareParameters("MColumnDescriptor inCD");
- if(maxSDs >= 0) {
- //User specified a row limit, set it on the Query
+ if (maxSDs >= 0) {
+ // User specified a row limit, set it on the Query
query.setRange(0, maxSDs);
}
- sds = (List<MStorageDescriptor>) query.execute(oldCD);
+ sds = (List<MStorageDescriptor>)query.execute(oldCD);
LOG.debug("Done executing query for listStorageDescriptorsWithCD");
pm.retrieveAll(sds);
success = commitTransaction();
@@ -3096,9 +3142,11 @@ public class ObjectStore implements RawStore, Configurable {
return success;
}
- private MIndex getMIndex(String dbName, String originalTblName, String indexName) throws MetaException {
+ private MIndex getMIndex(String dbName, String originalTblName, String indexName)
+ throws MetaException {
MIndex midx = null;
boolean commited = false;
+ Query query = null;
try {
openTransaction();
dbName = HiveStringUtils.normalizeIdentifier(dbName);
@@ -3108,19 +3156,23 @@ public class ObjectStore implements RawStore, Configurable {
commited = commitTransaction();
return null;
}
-
- Query query = pm.newQuery(MIndex.class,
- "origTable.tableName == t1 && origTable.database.name == t2 && indexName == t3");
+ query =
+ pm.newQuery(MIndex.class,
+ "origTable.tableName == t1 && origTable.database.name == t2 && indexName == t3");
query.declareParameters("java.lang.String t1, java.lang.String t2, java.lang.String t3");
query.setUnique(true);
- midx = (MIndex) query.execute(originalTblName, dbName,
- HiveStringUtils.normalizeIdentifier(indexName));
+ midx =
+ (MIndex) query.execute(originalTblName, dbName,
+ HiveStringUtils.normalizeIdentifier(indexName));
pm.retrieve(midx);
commited = commitTransaction();
} finally {
if (!commited) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return midx;
}
@@ -3161,64 +3213,55 @@ public class ObjectStore implements RawStore, Configurable {
public List<Index> getIndexes(String dbName, String origTableName, int max)
throws MetaException {
boolean success = false;
+ Query query = null;
try {
+ LOG.debug("Executing getIndexes");
openTransaction();
- List<MIndex> mIndexList = listMIndexes(dbName, origTableName, max);
- List<Index> indexes = new ArrayList<Index>(mIndexList.size());
- for (MIndex midx : mIndexList) {
- indexes.add(this.convertToIndex(midx));
- }
- success = commitTransaction();
- return indexes;
- } finally {
- if (!success) {
- rollbackTransaction();
- }
- }
- }
- private List<MIndex> listMIndexes(String dbName, String origTableName,
- int max) {
- boolean success = false;
- List<MIndex> mindexes = null;
- try {
- openTransaction();
- LOG.debug("Executing listMIndexes");
dbName = HiveStringUtils.normalizeIdentifier(dbName);
origTableName = HiveStringUtils.normalizeIdentifier(origTableName);
- Query query = pm.newQuery(MIndex.class,
- "origTable.tableName == t1 && origTable.database.name == t2");
+ query =
+ pm.newQuery(MIndex.class, "origTable.tableName == t1 && origTable.database.name == t2");
query.declareParameters("java.lang.String t1, java.lang.String t2");
- mindexes = (List<MIndex>) query.execute(origTableName, dbName);
- LOG.debug("Done executing query for listMIndexes");
- pm.retrieveAll(mindexes);
+ List<MIndex> mIndexes = (List<MIndex>) query.execute(origTableName, dbName);
+ pm.retrieveAll(mIndexes);
+
+ List<Index> indexes = new ArrayList<Index>(mIndexes.size());
+ for (MIndex mIdx : mIndexes) {
+ indexes.add(this.convertToIndex(mIdx));
+ }
success = commitTransaction();
- LOG.debug("Done retrieving all objects for listMIndexes");
+ LOG.debug("Done retrieving all objects for getIndexes");
+
+ return indexes;
} finally {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
- return mindexes;
}
@Override
- public List<String> listIndexNames(String dbName, String origTableName,
- short max) throws MetaException {
+ public List<String> listIndexNames(String dbName, String origTableName, short max)
+ throws MetaException {
List<String> pns = new ArrayList<String>();
boolean success = false;
+ Query query = null;
try {
openTransaction();
LOG.debug("Executing listIndexNames");
dbName = HiveStringUtils.normalizeIdentifier(dbName);
origTableName = HiveStringUtils.normalizeIdentifier(origTableName);
- Query q = pm.newQuery(
- "select indexName from org.apache.hadoop.hive.metastore.model.MIndex "
- + "where origTable.database.name == t1 && origTable.tableName == t2 "
- + "order by indexName asc");
- q.declareParameters("java.lang.String t1, java.lang.String t2");
- q.setResult("indexName");
- Collection names = (Collection) q.execute(dbName, origTableName);
+ query =
+ pm.newQuery("select indexName from org.apache.hadoop.hive.metastore.model.MIndex "
+ + "where origTable.database.name == t1 && origTable.tableName == t2 "
+ + "order by indexName asc");
+ query.declareParameters("java.lang.String t1, java.lang.String t2");
+ query.setResult("indexName");
+ Collection names = (Collection) query.execute(dbName, origTableName);
for (Iterator i = names.iterator(); i.hasNext();) {
pns.add((String) i.next());
}
@@ -3227,6 +3270,9 @@ public class ObjectStore implements RawStore, Configurable {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return pns;
}
@@ -3243,8 +3289,7 @@ public class ObjectStore implements RawStore, Configurable {
throw new InvalidObjectException("Role " + roleName + " already exists.");
}
int now = (int)(System.currentTimeMillis()/1000);
- MRole mRole = new MRole(roleName, now,
- ownerName);
+ MRole mRole = new MRole(roleName, now, ownerName);
pm.makePersistent(mRole);
commited = commitTransaction();
success = true;
@@ -3334,13 +3379,16 @@ public class ObjectStore implements RawStore, Configurable {
return success;
}
- private MRoleMap getMSecurityUserRoleMap(String userName,
- PrincipalType principalType, String roleName) {
+ private MRoleMap getMSecurityUserRoleMap(String userName, PrincipalType principalType,
+ String roleName) {
MRoleMap mRoleMember = null;
boolean commited = false;
+ Query query = null;
try {
openTransaction();
- Query query = pm.newQuery(MRoleMap.class, "principalName == t1 && principalType == t2 && role.roleName == t3");
+ query =
+ pm.newQuery(MRoleMap.class,
+ "principalName == t1 && principalType == t2 && role.roleName == t3");
query.declareParameters("java.lang.String t1, java.lang.String t2, java.lang.String t3");
query.setUnique(true);
mRoleMember = (MRoleMap) query.executeWithArray(userName, principalType.toString(), roleName);
@@ -3350,6 +3398,9 @@ public class ObjectStore implements RawStore, Configurable {
if (!commited) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return mRoleMember;
}
@@ -3358,6 +3409,7 @@ public class ObjectStore implements RawStore, Configurable {
public boolean removeRole(String roleName) throws MetaException,
NoSuchObjectException {
boolean success = false;
+ QueryWrapper queryWrapper = new QueryWrapper();
try {
openTransaction();
MRole mRol = getMRole(roleName);
@@ -3370,10 +3422,11 @@ public class ObjectStore implements RawStore, Configurable {
pm.deletePersistentAll(roleMap);
}
List<MRoleMap> roleMember = listMSecurityPrincipalMembershipRole(mRol
- .getRoleName(), PrincipalType.ROLE);
+ .getRoleName(), PrincipalType.ROLE, queryWrapper);
if (roleMember.size() > 0) {
pm.deletePersistentAll(roleMember);
}
+ queryWrapper.close();
// then remove all the grants
List<MGlobalPrivilege> userGrants = listPrincipalGlobalGrants(
mRol.getRoleName(), PrincipalType.ROLE);
@@ -3381,30 +3434,36 @@ public class ObjectStore implements RawStore, Configurable {
pm.deletePersistentAll(userGrants);
}
List<MDBPrivilege> dbGrants = listPrincipalAllDBGrant(mRol
- .getRoleName(), PrincipalType.ROLE);
+ .getRoleName(), PrincipalType.ROLE, queryWrapper);
if (dbGrants.size() > 0) {
pm.deletePersistentAll(dbGrants);
}
+ queryWrapper.close();
List<MTablePrivilege> tabPartGrants = listPrincipalAllTableGrants(
- mRol.getRoleName(), PrincipalType.ROLE);
+ mRol.getRoleName(), PrincipalType.ROLE, queryWrapper);
if (tabPartGrants.size() > 0) {
pm.deletePersistentAll(tabPartGrants);
}
+ queryWrapper.close();
List<MPartitionPrivilege> partGrants = listPrincipalAllPartitionGrants(
- mRol.getRoleName(), PrincipalType.ROLE);
+ mRol.getRoleName(), PrincipalType.ROLE, queryWrapper);
if (partGrants.size() > 0) {
pm.deletePersistentAll(partGrants);
}
+ queryWrapper.close();
List<MTableColumnPrivilege> tblColumnGrants = listPrincipalAllTableColumnGrants(
- mRol.getRoleName(), PrincipalType.ROLE);
+ mRol.getRoleName(), PrincipalType.ROLE, queryWrapper);
if (tblColumnGrants.size() > 0) {
pm.deletePersistentAll(tblColumnGrants);
}
+ queryWrapper.close();
List<MPartitionColumnPrivilege> partColumnGrants = listPrincipalAllPartitionColumnGrants(
- mRol.getRoleName(), PrincipalType.ROLE);
+ mRol.getRoleName(), PrincipalType.ROLE, queryWrapper);
if (partColumnGrants.size() > 0) {
pm.deletePersistentAll(partColumnGrants);
}
+ queryWrapper.close();
+
// finally remove the role
pm.deletePersistent(mRol);
}
@@ -3413,6 +3472,8 @@ public class ObjectStore implements RawStore, Configurable {
if (!success) {
rollbackTransaction();
}
+
+ queryWrapper.close();
}
return success;
}
@@ -3461,66 +3522,62 @@ public class ObjectStore implements RawStore, Configurable {
@SuppressWarnings("unchecked")
@Override
- public List<MRoleMap> listRoles(String principalName,
- PrincipalType principalType) {
+ public List<MRoleMap> listRoles(String principalName, PrincipalType principalType) {
boolean success = false;
- List<MRoleMap> mRoleMember = null;
+ Query query = null;
+ List<MRoleMap> mRoleMember = new ArrayList<MRoleMap>();
+
try {
- openTransaction();
LOG.debug("Executing listRoles");
- Query query = pm
- .newQuery(
- MRoleMap.class,
- "principalName == t1 && principalType == t2");
- query
- .declareParameters("java.lang.String t1, java.lang.String t2");
+
+ openTransaction();
+ query = pm.newQuery(MRoleMap.class, "principalName == t1 && principalType == t2");
+ query.declareParameters("java.lang.String t1, java.lang.String t2");
query.setUnique(false);
- mRoleMember = (List<MRoleMap>) query.executeWithArray(
- principalName, principalType.toString());
- LOG.debug("Done executing query for listMSecurityUserRoleMap");
- pm.retrieveAll(mRoleMember);
+ List<MRoleMap> mRoles =
+ (List<MRoleMap>) query.executeWithArray(principalName, principalType.toString());
+ pm.retrieveAll(mRoles);
success = commitTransaction();
- LOG.debug("Done retrieving all objects for listMSecurityUserRoleMap");
+
+ mRoleMember.addAll(mRoles);
+
+ LOG.debug("Done retrieving all objects for listRoles");
} finally {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
if (principalType == PrincipalType.USER) {
// All users belong to public role implicitly, add that role
- if (mRoleMember == null) {
- mRoleMember = new ArrayList<MRoleMap>();
- } else {
- mRoleMember = new ArrayList<MRoleMap>(mRoleMember);
- }
MRole publicRole = new MRole(HiveMetaStore.PUBLIC, 0, HiveMetaStore.PUBLIC);
- mRoleMember.add(new MRoleMap(principalName, principalType.toString(), publicRole, 0,
- null, null, false));
+ mRoleMember.add(new MRoleMap(principalName, principalType.toString(), publicRole, 0, null,
+ null, false));
}
- return mRoleMember;
+ return mRoleMember;
}
@SuppressWarnings("unchecked")
private List<MRoleMap> listMSecurityPrincipalMembershipRole(final String roleName,
- final PrincipalType principalType) {
+ final PrincipalType principalType,
+ QueryWrapper queryWrapper) {
boolean success = false;
List<MRoleMap> mRoleMemebership = null;
try {
- openTransaction();
LOG.debug("Executing listMSecurityPrincipalMembershipRole");
- Query query = pm.newQuery(MRoleMap.class,
- "principalName == t1 && principalType == t2");
- query
- .declareParameters("java.lang.String t1, java.lang.String t2");
+
+ openTransaction();
+ Query query = queryWrapper.query = pm.newQuery(MRoleMap.class, "principalName == t1 && principalType == t2");
+ query.declareParameters("java.lang.String t1, java.lang.String t2");
mRoleMemebership = (List<MRoleMap>) query.execute(roleName, principalType.toString());
- LOG
- .debug("Done executing query for listMSecurityPrincipalMembershipRole");
pm.retrieveAll(mRoleMemebership);
success = commitTransaction();
- LOG
- .debug("Done retrieving all objects for listMSecurityPrincipalMembershipRole");
+
+ LOG.debug("Done retrieving all objects for listMSecurityPrincipalMembershipRole");
} finally {
if (!success) {
rollbackTransaction();
@@ -3543,9 +3600,10 @@ public class ObjectStore implements RawStore, Configurable {
private MRole getMRole(String roleName) {
MRole mrole = null;
boolean commited = false;
+ Query query = null;
try {
openTransaction();
- Query query = pm.newQuery(MRole.class, "roleName == t1");
+ query = pm.newQuery(MRole.class, "roleName == t1");
query.declareParameters("java.lang.String t1");
query.setUnique(true);
mrole = (MRole) query.execute(roleName);
@@ -3555,6 +3613,9 @@ public class ObjectStore implements RawStore, Configurable {
if (!commited) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return mrole;
}
@@ -3562,13 +3623,14 @@ public class ObjectStore implements RawStore, Configurable {
@Override
public List<String> listRoleNames() {
boolean success = false;
+ Query query = null;
try {
openTransaction();
LOG.debug("Executing listAllRoleNames");
- Query query = pm.newQuery("select roleName from org.apache.hadoop.hive.metastore.model.MRole");
+ query = pm.newQuery("select roleName from org.apache.hadoop.hive.metastore.model.MRole");
query.setResult("roleName");
Collection names = (Collection) query.execute();
- List<String> roleNames = new ArrayList<String>();
+ List<String> roleNames = new ArrayList<String>();
for (Iterator i = names.iterator(); i.hasNext();) {
roleNames.add((String) i.next());
}
@@ -3578,6 +3640,9 @@ public class ObjectStore implements RawStore, Configurable {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
}
@@ -4386,49 +4451,61 @@ public class ObjectStore implements RawStore, Configurable {
@Override
public List<MRoleMap> listRoleMembers(String roleName) {
boolean success = false;
- List<MRoleMap> mRoleMemeberList = null;
+ Query query = null;
+ List<MRoleMap> mRoleMemeberList = new ArrayList<MRoleMap>();
try {
+ LOG.debug("Executing listRoleMembers");
+
openTransaction();
- LOG.debug("Executing listMSecurityUserRoleMember");
- Query query = pm.newQuery(MRoleMap.class,
- "role.roleName == t1");
+ query = pm.newQuery(MRoleMap.class, "role.roleName == t1");
query.declareParameters("java.lang.String t1");
query.setUnique(false);
- mRoleMemeberList = (List<MRoleMap>) query.execute(
- roleName);
- LOG.debug("Done executing query for listMSecurityUserRoleMember");
- pm.retrieveAll(mRoleMemeberList);
+ List<MRoleMap> mRoles = (List<MRoleMap>) query.execute(roleName);
+ pm.retrieveAll(mRoles);
success = commitTransaction();
- LOG.debug("Done retrieving all objects for listMSecurityUserRoleMember");
+
+ mRoleMemeberList.addAll(mRoles);
+
+ LOG.debug("Done retrieving all objects for listRoleMembers");
} finally {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return mRoleMemeberList;
}
@SuppressWarnings("unchecked")
@Override
- public List<MGlobalPrivilege> listPrincipalGlobalGrants(String principalName, PrincipalType principalType) {
+ public List<MGlobalPrivilege> listPrincipalGlobalGrants(String principalName,
+ PrincipalType principalType) {
boolean commited = false;
- List<MGlobalPrivilege> userNameDbPriv = null;
+ Query query = null;
+ List<MGlobalPrivilege> userNameDbPriv = new ArrayList<MGlobalPrivilege>();
try {
+ List<MGlobalPrivilege> mPrivs = null;
openTransaction();
if (principalName != null) {
- Query query = pm.newQuery(MGlobalPrivilege.class,
- "principalName == t1 && principalType == t2 ");
- query.declareParameters(
- "java.lang.String t1, java.lang.String t2");
- userNameDbPriv = (List<MGlobalPrivilege>) query
- .executeWithArray(principalName, principalType.toString());
- pm.retrieveAll(userNameDbPriv);
+ query = pm.newQuery(MGlobalPrivilege.class, "principalName == t1 && principalType == t2 ");
+ query.declareParameters("java.lang.String t1, java.lang.String t2");
+ mPrivs = (List<MGlobalPrivilege>) query
+ .executeWithArray(principalName, principalType.toString());
+ pm.retrieveAll(mPrivs);
}
commited = commitTransaction();
+ if (mPrivs != null) {
+ userNameDbPriv.addAll(mPrivs);
+ }
} finally {
if (!commited) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return userNameDbPriv;
}
@@ -4436,9 +4513,10 @@ public class ObjectStore implements RawStore, Configurable {
@Override
public List<HiveObjectPrivilege> listGlobalGrantsAll() {
boolean commited = false;
+ Query query = null;
try {
openTransaction();
- Query query = pm.newQuery(MGlobalPrivilege.class);
+ query = pm.newQuery(MGlobalPrivilege.class);
List<MGlobalPrivilege> userNameDbPriv = (List<MGlobalPrivilege>) query.execute();
pm.retrieveAll(userNameDbPriv);
commited = commitTransaction();
@@ -4447,6 +4525,9 @@ public class ObjectStore implements RawStore, Configurable {
if (!commited) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
}
@@ -4470,25 +4551,32 @@ public class ObjectStore implements RawStore, Configurable {
public List<MDBPrivilege> listPrincipalDBGrants(String principalName,
PrincipalType principalType, String dbName) {
boolean success = false;
- List<MDBPrivilege> mSecurityDBList = null;
+ Query query = null;
+ List<MDBPrivilege> mSecurityDBList = new ArrayList<MDBPrivilege>();
dbName = HiveStringUtils.normalizeIdentifier(dbName);
-
try {
- openTransaction();
LOG.debug("Executing listPrincipalDBGrants");
- Query query = pm.newQuery(MDBPrivilege.class,
- "principalName == t1 && principalType == t2 && database.name == t3");
- query
- .declareParameters("java.lang.String t1, java.lang.String t2, java.lang.String t3");
- mSecurityDBList = (List<MDBPrivilege>) query.executeWithArray(principalName, principalType.toString(), dbName);
- LOG.debug("Done executing query for listPrincipalDBGrants");
- pm.retrieveAll(mSecurityDBList);
+
+ openTransaction();
+ query =
+ pm.newQuery(MDBPrivilege.class,
+ "principalName == t1 && principalType == t2 && database.name == t3");
+ query.declareParameters("java.lang.String t1, java.lang.String t2, java.lang.String t3");
+ List<MDBPrivilege> mPrivs =
+ (List<MDBPrivilege>) query.executeWithArray(principalName, principalType.toString(),
+ dbName);
+ pm.retrieveAll(mPrivs);
success = commitTransaction();
+
+ mSecurityDBList.addAll(mPrivs);
LOG.debug("Done retrieving all objects for listPrincipalDBGrants");
} finally {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return mSecurityDBList;
}
@@ -4496,12 +4584,22 @@ public class ObjectStore implements RawStore, Configurable {
@Override
public List<HiveObjectPrivilege> listPrincipalDBGrantsAll(
String principalName, PrincipalType principalType) {
- return convertDB(listPrincipalAllDBGrant(principalName, principalType));
+ QueryWrapper queryWrapper = new QueryWrapper();
+ try {
+ return convertDB(listPrincipalAllDBGrant(principalName, principalType, queryWrapper));
+ } finally {
+ queryWrapper.close();
+ }
}
@Override
public List<HiveObjectPrivilege> listDBGrantsAll(String dbName) {
- return convertDB(listDatabaseGrants(dbName));
+ QueryWrapper queryWrapper = new QueryWrapper();
+ try {
+ return convertDB(listDatabaseGrants(dbName, queryWrapper));
+ } finally {
+ queryWrapper.close();
+ }
}
private List<HiveObjectPrivilege> convertDB(List<MDBPrivilege> privs) {
@@ -4522,26 +4620,28 @@ public class ObjectStore implements RawStore, Configurable {
}
@SuppressWarnings("unchecked")
- private List<MDBPrivilege> listPrincipalAllDBGrant(
- String principalName, PrincipalType principalType) {
+ private List<MDBPrivilege> listPrincipalAllDBGrant(String principalName,
+ PrincipalType principalType,
+ QueryWrapper queryWrapper) {
boolean success = false;
+ Query query = null;
List<MDBPrivilege> mSecurityDBList = null;
try {
- openTransaction();
LOG.debug("Executing listPrincipalAllDBGrant");
+
+ openTransaction();
if (principalName != null && principalType != null) {
- Query query = pm.newQuery(MDBPrivilege.class,
- "principalName == t1 && principalType == t2");
- query
- .declareParameters("java.lang.String t1, java.lang.String t2");
- mSecurityDBList = (List<MDBPrivilege>) query.execute(principalName, principalType.toString());
+ query = queryWrapper.query = pm.newQuery(MDBPrivilege.class, "principalName == t1 && principalType == t2");
+ query.declareParameters("java.lang.String t1, java.lang.String t2");
+ mSecurityDBList =
+ (List<MDBPrivilege>) query.execute(principalName, principalType.toString());
} else {
- Query query = pm.newQuery(MDBPrivilege.class);
+ query = queryWrapper.query = pm.newQuery(MDBPrivilege.class);
mSecurityDBList = (List<MDBPrivilege>) query.execute();
}
- LOG.debug("Done executing query for listPrincipalAllDBGrant");
pm.retrieveAll(mSecurityDBList);
success = commitTransaction();
+
LOG.debug("Done retrieving all objects for listPrincipalAllDBGrant");
} finally {
if (!success) {
@@ -4552,91 +4652,101 @@ public class ObjectStore implements RawStore, Configurable {
}
@SuppressWarnings("unchecked")
- public List<MTablePrivilege> listAllTableGrants(String dbName,
- String tableName) {
+ public List<MTablePrivilege> listAllTableGrants(String dbName, String tableName) {
boolean success = false;
+ Query query = null;
tableName = HiveStringUtils.normalizeIdentifier(tableName);
dbName = HiveStringUtils.normalizeIdentifier(dbName);
- List<MTablePrivilege> mSecurityTabList = null;
+ List<MTablePrivilege> mSecurityTabList = new ArrayList<MTablePrivilege>();
tableName = HiveStringUtils.normalizeIdentifier(tableName);
dbName = HiveStringUtils.normalizeIdentifier(dbName);
try {
- openTransaction();
LOG.debug("Executing listAllTableGrants");
+
+ openTransaction();
String queryStr = "table.tableName == t1 && table.database.name == t2";
- Query query = pm.newQuery(
- MTablePrivilege.class, queryStr);
- query.declareParameters(
- "java.lang.String t1, java.lang.String t2");
- mSecurityTabList = (List<MTablePrivilege>) query
- .executeWithArray(tableName, dbName);
+ query = pm.newQuery(MTablePrivilege.class, queryStr);
+ query.declareParameters("java.lang.String t1, java.lang.String t2");
+ List<MTablePrivilege> mPrivs = (List<MTablePrivilege>) query.executeWithArray(tableName, dbName);
LOG.debug("Done executing query for listAllTableGrants");
- pm.retrieveAll(mSecurityTabList);
+ pm.retrieveAll(mPrivs);
success = commitTransaction();
- LOG
- .debug("Done retrieving all objects for listAllTableGrants");
+
+ mSecurityTabList.addAll(mPrivs);
+
+ LOG.debug("Done retrieving all objects for listAllTableGrants");
} finally {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return mSecurityTabList;
}
@SuppressWarnings("unchecked")
- public List<MPartitionPrivilege> listTableAllPartitionGrants(String dbName,
- String tableName) {
+ public List<MPartitionPrivilege> listTableAllPartitionGrants(String dbName, String tableName) {
tableName = HiveStringUtils.normalizeIdentifier(tableName);
dbName = HiveStringUtils.normalizeIdentifier(dbName);
boolean success = false;
- List<MPartitionPrivilege> mSecurityTabPartList = null;
+ Query query = null;
+ List<MPartitionPrivilege> mSecurityTabPartList = new ArrayList<MPartitionPrivilege>();
try {
- openTransaction();
LOG.debug("Executing listTableAllPartitionGrants");
+
+ openTransaction();
String queryStr = "partition.table.tableName == t1 && partition.table.database.name == t2";
- Query query = pm.newQuery(
- MPartitionPrivilege.class, queryStr);
- query.declareParameters(
- "java.lang.String t1, java.lang.String t2");
- mSecurityTabPartList = (List<MPartitionPrivilege>) query
- .executeWithArray(tableName, dbName);
- LOG.debug("Done executing query for listTableAllPartitionGrants");
- pm.retrieveAll(mSecurityTabPartList);
+ query = pm.newQuery(MPartitionPrivilege.class, queryStr);
+ query.declareParameters("java.lang.String t1, java.lang.String t2");
+ List<MPartitionPrivilege> mPrivs = (List<MPartitionPrivilege>) query.executeWithArray(tableName, dbName);
+ pm.retrieveAll(mPrivs);
success = commitTransaction();
- LOG
- .debug("Done retrieving all objects for listTableAllPartitionGrants");
+
+ mSecurityTabPartList.addAll(mPrivs);
+
+ LOG.debug("Done retrieving all objects for listTableAllPartitionGrants");
} finally {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return mSecurityTabPartList;
}
@SuppressWarnings("unchecked")
- public List<MTableColumnPrivilege> listTableAllColumnGrants(String dbName,
- String tableName) {
+ public List<MTableColumnPrivilege> listTableAllColumnGrants(String dbName, String tableName) {
boolean success = false;
- List<MTableColumnPrivilege> mTblColPrivilegeList = null;
+ Query query = null;
+ List<MTableColumnPrivilege> mTblColPrivilegeList = new ArrayList<MTableColumnPrivilege>();
tableName = HiveStringUtils.normalizeIdentifier(tableName);
dbName = HiveStringUtils.normalizeIdentifier(dbName);
-
try {
- openTransaction();
LOG.debug("Executing listTableAllColumnGrants");
+
+ openTransaction();
String queryStr = "table.tableName == t1 && table.database.name == t2";
- Query query = pm.newQuery(MTableColumnPrivilege.class, queryStr);
+ query = pm.newQuery(MTableColumnPrivilege.class, queryStr);
query.declareParameters("java.lang.String t1, java.lang.String t2");
- mTblColPrivilegeList = (List<MTableColumnPrivilege>) query
- .executeWithArray(tableName, dbName);
- LOG.debug("Done executing query for listTableAllColumnGrants");
- pm.retrieveAll(mTblColPrivilegeList);
+ List<MTableColumnPrivilege> mPrivs =
+ (List<MTableColumnPrivilege>) query.executeWithArray(tableName, dbName);
+ pm.retrieveAll(mPrivs);
success = commitTransaction();
+
+ mTblColPrivilegeList.addAll(mPrivs);
+
LOG.debug("Done retrieving all objects for listTableAllColumnGrants");
} finally {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return mTblColPrivilegeList;
}
@@ -4645,26 +4755,32 @@ public class ObjectStore implements RawStore, Configurable {
public List<MPartitionColumnPrivilege> listTableAllPartitionColumnGrants(String dbName,
String tableName) {
boolean success = false;
+ Query query = null;
tableName = HiveStringUtils.normalizeIdentifier(tableName);
dbName = HiveStringUtils.normalizeIdentifier(dbName);
-
- List<MPartitionColumnPrivilege> mSecurityColList = null;
+ List<MPartitionColumnPrivilege> mSecurityColList = new ArrayList<MPartitionColumnPrivilege>();
try {
- openTransaction();
LOG.debug("Executing listTableAllPartitionColumnGrants");
+
+ openTransaction();
String queryStr = "partition.table.tableName == t1 && partition.table.database.name == t2";
- Query query = pm.newQuery(MPartitionColumnPrivilege.class, queryStr);
+ query = pm.newQuery(MPartitionColumnPrivilege.class, queryStr);
query.declareParameters("java.lang.String t1, java.lang.String t2");
- mSecurityColList = (List<MPartitionColumnPrivilege>) query
- .executeWithArray(tableName, dbName);
- LOG.debug("Done executing query for listTableAllPartitionColumnGrants");
- pm.retrieveAll(mSecurityColList);
+ List<MPartitionColumnPrivilege> mPrivs =
+ (List<MPartitionColumnPrivilege>) query.executeWithArray(tableName, dbName);
+ pm.retrieveAll(mPrivs);
success = commitTransaction();
+
+ mSecurityColList.addAll(mPrivs);
+
LOG.debug("Done retrieving all objects for listTableAllPartitionColumnGrants");
} finally {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return mSecurityColList;
}
@@ -4704,19 +4820,17 @@ public class ObjectStore implements RawStore, Configurable {
}
@SuppressWarnings("unchecked")
- private List<MDBPrivilege> listDatabaseGrants(String dbName) {
+ private List<MDBPrivilege> listDatabaseGrants(String dbName, QueryWrapper queryWrapper) {
dbName = HiveStringUtils.normalizeIdentifier(dbName);
-
boolean success = false;
+
try {
- openTransaction();
LOG.debug("Executing listDatabaseGrants");
- Query query = pm.newQuery(MDBPrivilege.class,
- "database.name == t1");
+
+ openTransaction();
+ Query query = queryWrapper.query = pm.newQuery(MDBPrivilege.class, "database.name == t1");
query.declareParameters("java.lang.String t1");
- List<MDBPrivilege> mSecurityDBList = (List<MDBPrivilege>) query
- .executeWithArray(dbName);
- LOG.debug("Done executing query for listDatabaseGrants");
+ List<MDBPrivilege> mSecurityDBList = (List<MDBPrivilege>) query.executeWithArray(dbName);
pm.retrieveAll(mSecurityDBList);
success = commitTransaction();
LOG.debug("Done retrieving all objects for listDatabaseGrants");
@@ -4792,162 +4906,181 @@ public class ObjectStore implements RawStore, Configurable {
@Override
@SuppressWarnings("unchecked")
- public List<MTablePrivilege> listAllTableGrants(
- String principalName, PrincipalType principalType, String dbName,
- String tableName) {
+ public List<MTablePrivilege> listAllTableGrants(String principalName,
+ PrincipalType principalType, String dbName, String tableName) {
tableName = HiveStringUtils.normalizeIdentifier(tableName);
dbName = HiveStringUtils.normalizeIdentifier(dbName);
-
boolean success = false;
- List<MTablePrivilege> mSecurityTabPartList = null;
+ Query query = null;
+ List<MTablePrivilege> mSecurityTabPartList = new ArrayList<MTablePrivilege>();
try {
openTransaction();
LOG.debug("Executing listAllTableGrants");
- Query query = pm.newQuery(
- MTablePrivilege.class,
+ query =
+ pm.newQuery(MTablePrivilege.class,
"principalName == t1 && principalType == t2 && table.tableName == t3 && table.database.name == t4");
- query.declareParameters(
- "java.lang.String t1, java.lang.String t2, java.lang.String t3, java.lang.String t4");
- mSecurityTabPartList = (List<MTablePrivilege>) query
- .executeWithArray(principalName, principalType.toString(), tableName, dbName);
- LOG.debug("Done executing query for listAllTableGrants");
- pm.retrieveAll(mSecurityTabPartList);
+ query
+ .declareParameters("java.lang.String t1, java.lang.String t2, java.lang.String t3, java.lang.String t4");
+ List<MTablePrivilege> mPrivs =
+ (List<MTablePrivilege>) query.executeWithArray(principalName, principalType.toString(),
+ tableName, dbName);
+ pm.retrieveAll(mPrivs);
success = commitTransaction();
- LOG
- .debug("Done retrieving all objects for listAllTableGrants");
+
+ mSecurityTabPartList.addAll(mPrivs);
+
+ LOG.debug("Done retrieving all objects for listAllTableGrants");
} finally {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return mSecurityTabPartList;
}
@SuppressWarnings("unchecked")
@Override
- public List<MPartitionPrivilege> listPrincipalPartitionGrants(
- String principalName, PrincipalType principalType, String dbName,
- String tableName, String partName) {
+ public List<MPartitionPrivilege> listPrincipalPartitionGrants(String principalName,
+ PrincipalType principalType, String dbName, String tableName, String partName) {
boolean success = false;
+ Query query = null;
tableName = HiveStringUtils.normalizeIdentifier(tableName);
dbName = HiveStringUtils.normalizeIdentifier(dbName);
-
- List<MPartitionPrivilege> mSecurityTabPartList = null;
+ List<MPartitionPrivilege> mSecurityTabPartList = new ArrayList<MPartitionPrivilege>();
try {
- openTransaction();
- LOG.debug("Executing listMSecurityPrincipalPartitionGrant");
- Query query = pm.newQuery(
- MPartitionPrivilege.class,
- "principalName == t1 && principalType == t2 && partition.table.tableName == t3 " +
- "&& partition.table.database.name == t4 && partition.partitionName == t5");
- query.declareParameters(
- "java.lang.String t1, java.lang.String t2, java.lang.String t3, java.lang.String t4, " +
- "java.lang.String t5");
- mSecurityTabPartList = (List<MPartitionPrivilege>) query
- .executeWithArray(principalName, principalType.toString(), tableName, dbName, partName);
- LOG.debug("Done executing query for listMSecurityPrincipalPartitionGrant");
+ LOG.debug("Executing listPrincipalPartitionGrants");
- pm.retrieveAll(mSecurityTabPartList);
+ openTransaction();
+ query =
+ pm.newQuery(MPartitionPrivilege.class,
+ "principalName == t1 && principalType == t2 && partition.table.tableName == t3 "
+ + "&& partition.table.database.name == t4 && partition.partitionName == t5");
+ query
+ .declareParameters("java.lang.String t1, java.lang.String t2, java.lang.String t3, java.lang.String t4, "
+ + "java.lang.String t5");
+ List<MPartitionPrivilege> mPrivs =
+ (List<MPartitionPrivilege>) query.executeWithArray(principalName,
+ principalType.toString(), tableName, dbName, partName);
+ pm.retrieveAll(mPrivs);
success = commitTransaction();
- LOG.debug("Done retrieving all objects for listMSecurityPrincipalPartitionGrant");
+
+ mSecurityTabPartList.addAll(mPrivs);
+
+ LOG.debug("Done retrieving all objects for listPrincipalPartitionGrants");
} finally {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return mSecurityTabPartList;
}
@SuppressWarnings("unchecked")
@Override
- public List<MTableColumnPrivilege> listPrincipalTableColumnGrants(
- String principalName, PrincipalType principalType, String dbName,
- String tableName, String columnName) {
+ public List<MTableColumnPrivilege> listPrincipalTableColumnGrants(String principalName,
+ PrincipalType principalType, String dbName, String tableName, String columnName) {
boolean success = false;
+ Query query = null;
tableName = HiveStringUtils.normalizeIdentifier(tableName);
dbName = HiveStringUtils.normalizeIdentifier(dbName);
columnName = HiveStringUtils.normalizeIdentifier(columnName);
- List<MTableColumnPrivilege> mSecurityColList = null;
+ List<MTableColumnPrivilege> mSecurityColList = new ArrayList<MTableColumnPrivilege>();
try {
- openTransaction();
LOG.debug("Executing listPrincipalTableColumnGrants");
- String queryStr = "principalName == t1 && principalType == t2 && " +
- "table.tableName == t3 && table.database.name == t4 && columnName == t5 ";
- Query query = pm.newQuery(MTableColumnPrivilege.class, queryStr);
- query
- .declareParameters("java.lang.String t1, java.lang.String t2, java.lang.String t3, " +
- "java.lang.String t4, java.lang.String t5");
- mSecurityColList = (List<MTableColumnPrivilege>) query.executeWithArray(
- principalName, principalType.toString(), tableName, dbName, columnName);
- LOG.debug("Done executing query for listPrincipalTableColumnGrants");
- pm.retrieveAll(mSecurityColList);
+
+ openTransaction();
+ String queryStr =
+ "principalName == t1 && principalType == t2 && "
+ + "table.tableName == t3 && table.database.name == t4 && columnName == t5 ";
+ query = pm.newQuery(MTableColumnPrivilege.class, queryStr);
+ query.declareParameters("java.lang.String t1, java.lang.String t2, java.lang.String t3, "
+ + "java.lang.String t4, java.lang.String t5");
+ List<MTableColumnPrivilege> mPrivs =
+ (List<MTableColumnPrivilege>) query.executeWithArray(principalName,
+ principalType.toString(), tableName, dbName, columnName);
+ pm.retrieveAll(mPrivs);
success = commitTransaction();
- LOG
- .debug("Done retrieving all objects for listPrincipalTableColumnGrants");
+
+ mSecurityColList.addAll(mPrivs);
+
+ LOG.debug("Done retrieving all objects for listPrincipalTableColumnGrants");
} finally {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return mSecurityColList;
}
@Override
@SuppressWarnings("unchecked")
- public List<MPartitionColumnPrivilege> listPrincipalPartitionColumnGrants(
- String principalName, PrincipalType principalType, String dbName,
- String tableName, String partitionName, String columnName) {
+ public List<MPartitionColumnPrivilege> listPrincipalPartitionColumnGrants(String principalName,
+ PrincipalType principalType, String dbName, String tableName, String partitionName,
+ String columnName) {
boolean success = false;
+ Query query = null;
tableName = HiveStringUtils.normalizeIdentifier(tableName);
dbName = HiveStringUtils.normalizeIdentifier(dbName);
columnName = HiveStringUtils.normalizeIdentifier(columnName);
-
- List<MPartitionColumnPrivilege> mSecurityColList = null;
+ List<MPartitionColumnPrivilege> mSecurityColList = new ArrayList<MPartitionColumnPrivilege>();
try {
- openTransaction();
LOG.debug("Executing listPrincipalPartitionColumnGrants");
- Query query = pm
- .newQuery(
+
+ openTransaction();
+ query = pm.newQuery(
MPartitionColumnPrivilege.class,
- "principalName == t1 && principalType == t2 && partition.table.tableName == t3 " +
- "&& partition.table.database.name == t4 && partition.partitionName == t5 && columnName == t6");
- query
- .declareParameters("java.lang.String t1, java.lang.String t2, java.lang.String t3, " +
- "java.lang.String t4, java.lang.String t5, java.lang.String t6");
+ "principalName == t1 && principalType == t2 && partition.table.tableName == t3 "
+ + "&& partition.table.database.name == t4 && partition.partitionName == t5 && columnName == t6");
+ query.declareParameters("java.lang.String t1, java.lang.String t2, java.lang.String t3, "
+ + "java.lang.String t4, java.lang.String t5, java.lang.String t6");
+ List<MPartitionColumnPrivilege> mPrivs =
+ (List<MPartitionColumnPrivilege>) query.executeWithArray(principalName,
+ principalType.toString(), tableName, dbName, partitionName, columnName);
+ pm.retrieveAll(mPrivs);
+ success = commitTransaction();
- mSecurityColList = (List<MPartitionColumnPrivilege>) query
- .executeWithArray(principalName, principalType.toString(), tableName,
- dbName, partitionName, columnName);
- LOG.debug("Done executing query for listPrincipalPartitionColumnGrants");
- pm.retrieveAll(mSecurityColList);
+ mSecurityColList.addAll(mPrivs);
- success = commitTransaction();
- LOG
- .debug("Done retrieving all objects for listPrincipalPartitionColumnGrants");
+ LOG.debug("Done retrieving all objects for listPrincipalPartitionColumnGrants");
} finally {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
return mSecurityColList;
}
@Override
- public List<HiveObjectPrivilege> listPrincipalPartitionColumnGrantsAll(
- String principalName, PrincipalType principalType) {
+ public List<HiveObjectPrivilege> listPrincipalPartitionColumnGrantsAll(String principalName,
+ PrincipalType principalType) {
boolean success = false;
+ Query query = null;
try {
openTransaction();
LOG.debug("Executing listPrincipalPartitionColumnGrantsAll");
List<MPartitionColumnPrivilege> mSecurityTabPartList;
if (principalName != null && principalType != null) {
- Query query = pm.newQuery(MPartitionColumnPrivilege.class,
- "principalName == t1 && principalType == t2");
+ query =
+ pm.newQuery(MPartitionColumnPrivilege.class,
+ "principalName == t1 && principalType == t2");
query.declareParameters("java.lang.String t1, java.lang.String t2");
- mSecurityTabPartList = (List<MPartitionColumnPrivilege>)
- query.executeWithArray(principalName, principalType.toString());
+ mSecurityTabPartList =
+ (List<MPartitionColumnPrivilege>) query.executeWithArray(principalName,
+ principalType.toString());
} else {
- Query query = pm.newQuery(MPartitionColumnPrivilege.class);
+ query = pm.newQuery(MPartitionColumnPrivilege.class);
mSecurityTabPartList = (List<MPartitionColumnPrivilege>) query.execute();
}
LOG.debug("Done executing query for listPrincipalPartitionColumnGrantsAll");
@@ -4960,23 +5093,29 @@ public class ObjectStore implements RawStore, Configurable {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
}
@Override
- public List<HiveObjectPrivilege> listPartitionColumnGrantsAll(
- String dbName, String tableName, String partitionName, String columnName) {
+ public List<HiveObjectPrivilege> listPartitionColumnGrantsAll(String dbName, String tableName,
+ String partitionName, String columnName) {
boolean success = false;
+ Query query = null;
try {
openTransaction();
LOG.debug("Executing listPartitionColumnGrantsAll");
- Query query = pm.newQuery(MPartitionColumnPrivilege.class,
- "partition.table.tableName == t3 && partition.table.database.name == t4 && " +
- "partition.partitionName == t5 && columnName == t6");
- query.declareParameters(
- "java.lang.String t3, java.lang.String t4, java.lang.String t5, java.lang.String t6");
- List<MPartitionColumnPrivilege> mSecurityTabPartList = (List<MPartitionColumnPrivilege>)
- query.executeWithArray(tableName, dbName, partitionName, columnName);
+ query =
+ pm.newQuery(MPartitionColumnPrivilege.class,
+ "partition.table.tableName == t3 && partition.table.database.name == t4 && "
+ + "partition.partitionName == t5 && columnName == t6");
+ query
+ .declareParameters("java.lang.String t3, java.lang.String t4, java.lang.String t5, java.lang.String t6");
+ List<MPartitionColumnPrivilege> mSecurityTabPartList =
+ (List<MPartitionColumnPrivilege>) query.executeWithArray(tableName, dbName,
+ partitionName, columnName);
LOG.debug("Done executing query for listPartitionColumnGrantsAll");
pm.retrieveAll(mSecurityTabPartList);
List<HiveObjectPrivilege> result = convertPartCols(mSecurityTabPartList);
@@ -4987,6 +5126,9 @@ public class ObjectStore implements RawStore, Configurable {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
}
@@ -5012,23 +5154,22 @@ public class ObjectStore implements RawStore, Configurable {
@SuppressWarnings("unchecked")
private List<MTablePrivilege> listPrincipalAllTableGrants(
- String principalName, PrincipalType principalType) {
+ String principalName, PrincipalType principalType, QueryWrapper queryWrapper) {
boolean success = false;
List<MTablePrivilege> mSecurityTabPartList = null;
try {
- openTransaction();
LOG.debug("Executing listPrincipalAllTableGrants");
- Query query = pm.newQuery(MTablePrivilege.class,
+
+ openTransaction();
+ Query query = queryWrapper.query = pm.newQuery(MTablePrivilege.class,
"principalName == t1 && principalType == t2");
query.declareParameters("java.lang.String t1, java.lang.String t2");
mSecurityTabPartList = (List<MTablePrivilege>) query.execute(
principalName, principalType.toString());
- LOG
- .debug("Done executing query for listPrincipalAllTableGrants");
pm.retrieveAll(mSecurityTabPartList);
success = commitTransaction();
- LOG
- .debug("Done retrieving all objects for listPrincipalAllTableGrants");
+
+ LOG.debug("Done retrieving all objects for listPrincipalAllTableGrants");
} finally {
if (!success) {
rollbackTransaction();
@@ -5038,21 +5179,21 @@ public class ObjectStore implements RawStore, Configurable {
}
@Override
- public List<HiveObjectPrivilege> listPrincipalTableGrantsAll(
- String principalName, PrincipalType principalType) {
+ public List<HiveObjectPrivilege> listPrincipalTableGrantsAll(String principalName,
+ PrincipalType principalType) {
boolean success = false;
+ Query query = null;
try {
openTransaction();
LOG.debug("Executing listPrincipalAllTableGrants");
List<MTablePrivilege> mSecurityTabPartList;
if (principalName != null && principalType != null) {
- Query query = pm.newQuery(MTablePrivilege.class,
- "principalName == t1 && principalType == t2");
+ query = pm.newQuery(MTablePrivilege.class, "principalName == t1 && principalType == t2");
query.declareParameters("java.lang.String t1, java.lang.String t2");
- mSecurityTabPartList = (List<MTablePrivilege>) query.execute(
- principalName, principalType.toString());
+ mSecurityTabPartList =
+ (List<MTablePrivilege>) query.execute(principalName, principalType.toString());
} else {
- Query query = pm.newQuery(MTablePrivilege.class);
+ query = pm.newQuery(MTablePrivilege.class);
mSecurityTabPartList = (List<MTablePrivilege>) query.execute();
}
LOG.debug("Done executing query for listPrincipalAllTableGrants");
@@ -5065,20 +5206,24 @@ public class ObjectStore implements RawStore, Configurable {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
}
@Override
public List<HiveObjectPrivilege> listTableGrantsAll(String dbName, String tableName) {
boolean success = false;
+ Query query = null;
try {
openTransaction();
LOG.debug("Executing listTableGrantsAll");
- Query query = pm.newQuery(MTablePrivilege.class,
- "table.tableName == t1 && table.database.name == t2");
+ query =
+ pm.newQuery(MTablePrivilege.class, "table.tableName == t1 && table.database.name == t2");
query.declareParameters("java.lang.String t1, java.lang.String t2");
- List<MTablePrivilege> mSecurityTabPartList = (List<MTablePrivilege>)
- query.executeWithArray(tableName, dbName);
+ List<MTablePrivilege> mSecurityTabPartList =
+ (List<MTablePrivilege>) query.executeWithArray(tableName, dbName);
LOG.debug("Done executing query for listTableGrantsAll");
pm.retrieveAll(mSecurityTabPartList);
List<HiveObjectPrivilege> result = convertTable(mSecurityTabPartList);
@@ -5089,6 +5234,9 @@ public class ObjectStore implements RawStore, Configurable {
if (!success) {
rollbackTransaction();
}
+ if (query != null) {
+ query.closeAll();
+ }
}
}
@@ -5112,24 +5260,20 @@ public class ObjectStore implements RawStore, Configurable {
}
@SuppressWarnings("unchecked")
- private List<MPartitionPrivilege> listPrincipalAllPartitionGrants(
- String principalName, PrincipalType principalType) {
+ private List<MPartitionPrivilege> listPrincipalAllPartitionGrants(String principalName,
+ PrincipalType principalType, QueryWrapper queryWrapper) {
boolean success = false;
List<MPartitionPrivilege> mSecurityTabPartList = null;
try {
openTransaction();
LOG.debug("Executing listPrincipalAllPartitionGrants");
- Query query = pm.newQuery(MPartitionPrivilege.class,
- "principalName == t1 && principalType == t2");
+ Query query = queryWrapper.query = pm.newQuery(MPartitionPrivilege.class, "principalName == t1 && principalType == t2");
query.declareParameters("java.lang.String t1, java.lang.String t2");
- mSecurityTabPartList = (List<MPartitionPrivilege>) query.execute(
- principalName, principalType.toString());
- LOG
- .debug("Done executing query for listPrincipalAllPartitionGrants");
+ mSecurityTabPartList =
+ (List<MPartitionPrivilege>) query.execute(principalName, principalType.toString());
pm.retrieveAll(mSecurityTabPartList);
success = commitTransaction();
- LOG
- .debug("Done retrieving all objects for listPrincipalAllPartitionGrants");
+ LOG.debug("Done retrieving all objects for listPrincipalAllPartitionGrants");
} finally {
if (!success) {
rollbackTransaction();
@@ -5139,21 +5283,22 @@ public class ObjectStore implements RawStore, Configurable {
}
@Override
- public List<HiveObjectPrivilege> listPrincipalPartitionGrantsAll(
- String principalName, PrincipalType principalType) {
+ public List<HiveObjectPrivilege> listPrincipalPartitionGrantsAll(String principalName,
+ PrincipalType principalType) {
boolean success = false;
+ Query query = null;
try {
openTransaction();
LOG.deb
<TRUNCATED>