This is an automated email from the ASF dual-hosted git repository.
ayushsaxena pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 7bb378ba197 HIVE-23935. Fetching primaryKey through beeline fails with
NPE. (#4009). (Ayush Saxena reviewed by Laszlo Bodor)
7bb378ba197 is described below
commit 7bb378ba1975710d14fcf73e0ae0dfa03f7a8976
Author: Ayush Saxena <[email protected]>
AuthorDate: Fri Feb 3 15:54:37 2023 +0530
HIVE-23935. Fetching primaryKey through beeline fails with NPE. (#4009).
(Ayush Saxena reviewed by Laszlo Bodor)
---
.../apache/hadoop/hive/metastore/ObjectStore.java | 14 ++++-----
.../hadoop/hive/metastore/TestObjectStore.java | 35 ++++++++++++++++++++++
2 files changed, 42 insertions(+), 7 deletions(-)
diff --git
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
index 0e8caf785a7..e11677dfe34 100644
---
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
+++
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
@@ -12052,22 +12052,22 @@ public class ObjectStore implements RawStore,
Configurable {
}
private List<SQLPrimaryKey> getPrimaryKeysInternal(final String catName,
- final String
db_name_input,
- final String
tbl_name_input)
+ final String dbNameInput,
+ final String tblNameInput)
throws MetaException, NoSuchObjectException {
- final String db_name = normalizeIdentifier(db_name_input);
- final String tbl_name = normalizeIdentifier(tbl_name_input);
- return new GetListHelper<SQLPrimaryKey>(catName, db_name, tbl_name, true,
true) {
+ final String dbName = dbNameInput != null ?
normalizeIdentifier(dbNameInput) : null;
+ final String tblName = normalizeIdentifier(tblNameInput);
+ return new GetListHelper<SQLPrimaryKey>(catName, dbName, tblName, true,
true) {
@Override
protected List<SQLPrimaryKey>
getSqlResult(GetHelper<List<SQLPrimaryKey>> ctx) throws MetaException {
- return directSql.getPrimaryKeys(catName, db_name, tbl_name);
+ return directSql.getPrimaryKeys(catName, dbName, tblName);
}
@Override
protected List<SQLPrimaryKey> getJdoResult(
GetHelper<List<SQLPrimaryKey>> ctx) throws MetaException,
NoSuchObjectException {
- return getPrimaryKeysViaJdo(catName, db_name, tbl_name);
+ return getPrimaryKeysViaJdo(catName, dbName, tblName);
}
}.run(false);
}
diff --git
a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestObjectStore.java
b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestObjectStore.java
index 0bcbdeb9a10..79036c2c22c 100644
---
a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestObjectStore.java
+++
b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestObjectStore.java
@@ -125,6 +125,7 @@ import static org.hamcrest.CoreMatchers.hasItems;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.IsNot.not;
+import static org.junit.Assert.assertEquals;
@Category(MetastoreUnitTest.class)
public class TestObjectStore {
@@ -1261,6 +1262,40 @@ public class TestObjectStore {
setAndCheckSSLProperties(true, "", "", "jks");
}
+ /**
+ * Tests getPrimaryKeys() when db_name isn't specified.
+ */
+ @Test
+ public void testGetPrimaryKeys() throws Exception {
+ Database db1 =
+ new DatabaseBuilder().setName(DB1).setDescription("description")
+ .setLocation("locationurl").build(conf);
+ objectStore.createDatabase(db1);
+ StorageDescriptor sd1 = new StorageDescriptor(
+ ImmutableList.of(new FieldSchema("pk_col", "double", null)),
"location",
+ null, null, false, 0,
+ new SerDeInfo("SerDeName", "serializationLib", null), null, null,
null);
+ HashMap<String, String> params = new HashMap<>();
+ params.put("EXTERNAL", "false");
+ Table tbl1 =
+ new Table(TABLE1, DB1, "owner", 1, 2, 3, sd1, null, params, null, null,
+ "MANAGED_TABLE");
+ objectStore.createTable(tbl1);
+
+ SQLPrimaryKey pk =
+ new SQLPrimaryKey(DB1, TABLE1, "pk_col", 1, "pk_const_1", false, false,
+ false);
+ pk.setCatName(DEFAULT_CATALOG_NAME);
+ objectStore.addPrimaryKeys(ImmutableList.of(pk));
+
+ // Primary key retrieval should be success, even if db_name isn't
specified.
+ assertEquals("pk_col",
+ objectStore.getPrimaryKeys(DEFAULT_CATALOG_NAME, null, TABLE1).get(0)
+ .getColumn_name());
+ objectStore.dropTable(DEFAULT_CATALOG_NAME, DB1, TABLE1);
+ objectStore.dropDatabase(db1.getCatalogName(), DB1);
+ }
+
/**
* Helper method for setting and checking the SSL configuration parameters.
* @param useSSL whether or not SSL is enabled