You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by xu...@apache.org on 2015/08/14 15:48:31 UTC
hive git commit: HIVE-11534: Improve validateTableCols error message
(Mohit via Xuefu)
Repository: hive
Updated Branches:
refs/heads/master b8f1ae110 -> a4849cb2c
HIVE-11534: Improve validateTableCols error message (Mohit via Xuefu)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/a4849cb2
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/a4849cb2
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/a4849cb2
Branch: refs/heads/master
Commit: a4849cb2c5b7d1c542881e12bf0e48f73917d96c
Parents: b8f1ae1
Author: Xuefu Zhang <xz...@Cloudera.com>
Authored: Fri Aug 14 06:48:19 2015 -0700
Committer: Xuefu Zhang <xz...@Cloudera.com>
Committed: Fri Aug 14 06:48:19 2015 -0700
----------------------------------------------------------------------
.../hive/metastore/TestHiveMetaStore.java | 66 ++++++++++++++++++++
.../hadoop/hive/metastore/ObjectStore.java | 7 ++-
2 files changed, 71 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/a4849cb2/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
----------------------------------------------------------------------
diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
index 5a344bb..160667d 100644
--- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
+++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
@@ -2966,4 +2966,70 @@ public abstract class TestHiveMetaStore extends TestCase {
};
return hookLoader;
}
+
+ public void testValidateTableCols() throws Throwable {
+
+ try {
+ String dbName = "compdb";
+ String tblName = "comptbl";
+
+ client.dropTable(dbName, tblName);
+ silentDropDatabase(dbName);
+ Database db = new Database();
+ db.setName(dbName);
+ db.setDescription("Validate Table Columns test");
+ client.createDatabase(db);
+
+ ArrayList<FieldSchema> cols = new ArrayList<FieldSchema>(2);
+ cols.add(new FieldSchema("name", serdeConstants.STRING_TYPE_NAME, ""));
+ cols.add(new FieldSchema("income", serdeConstants.INT_TYPE_NAME, ""));
+
+ Table tbl = new Table();
+ tbl.setDbName(dbName);
+ tbl.setTableName(tblName);
+ StorageDescriptor sd = new StorageDescriptor();
+ tbl.setSd(sd);
+ sd.setCols(cols);
+ sd.setCompressed(false);
+ sd.setSerdeInfo(new SerDeInfo());
+ sd.getSerdeInfo().setName(tbl.getTableName());
+ sd.getSerdeInfo().setParameters(new HashMap<String, String>());
+ sd.getSerdeInfo().getParameters()
+ .put(serdeConstants.SERIALIZATION_FORMAT, "1");
+ sd.getSerdeInfo().setSerializationLib(LazySimpleSerDe.class.getName());
+ sd.setInputFormat(HiveInputFormat.class.getName());
+ sd.setOutputFormat(HiveOutputFormat.class.getName());
+ sd.setSortCols(new ArrayList<Order>());
+
+ client.createTable(tbl);
+ if (isThriftClient) {
+ tbl = client.getTable(dbName, tblName);
+ }
+
+ List<String> expectedCols = Lists.newArrayList();
+ expectedCols.add("name");
+ ObjectStore objStore = new ObjectStore();
+ try {
+ objStore.validateTableCols(tbl, expectedCols);
+ } catch (MetaException ex) {
+ throw new RuntimeException(ex);
+ }
+
+ expectedCols.add("doesntExist");
+ boolean exceptionFound = false;
+ try {
+ objStore.validateTableCols(tbl, expectedCols);
+ } catch (MetaException ex) {
+ assertEquals(ex.getMessage(),
+ "Column doesntExist doesn't exist in table comptbl in database compdb");
+ exceptionFound = true;
+ }
+ assertTrue(exceptionFound);
+
+ } catch (Exception e) {
+ System.err.println(StringUtils.stringifyException(e));
+ System.err.println("testValidateTableCols() failed.");
+ throw e;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/hive/blob/a4849cb2/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 a37fbde..d165fc8 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
@@ -51,6 +51,7 @@ import javax.jdo.Transaction;
import javax.jdo.datastore.DataStoreCache;
import javax.jdo.identity.IntIdentity;
+import com.google.common.annotations.VisibleForTesting;
import org.antlr.runtime.CommonTokenStream;
import org.antlr.runtime.RecognitionException;
import org.apache.commons.logging.Log;
@@ -6261,7 +6262,8 @@ public class ObjectStore implements RawStore, Configurable {
}
}
- private void validateTableCols(Table table, List<String> colNames) throws MetaException {
+ @VisibleForTesting
+ public void validateTableCols(Table table, List<String> colNames) throws MetaException {
List<FieldSchema> colList = table.getSd().getCols();
for (String colName : colNames) {
boolean foundCol = false;
@@ -6272,7 +6274,8 @@ public class ObjectStore implements RawStore, Configurable {
}
}
if (!foundCol) {
- throw new MetaException("Column " + colName + " doesn't exist.");
+ throw new MetaException("Column " + colName + " doesn't exist in table "
+ + table.getTableName() + " in database " + table.getDbName());
}
}
}