Skip to content

Commit 50beb17

Browse files
committed
HIVE-27193: Fix catalog parsing bug and verify all provided edge cases in parseDbName
1 parent 2a86770 commit 50beb17

2 files changed

Lines changed: 14 additions & 0 deletions

File tree

standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/utils/MetaStoreUtils.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1100,6 +1100,9 @@ public static String[] parseDbName(String dbName, Configuration conf) {
11001100
}
11011101
if (hasCatalogName(dbName)) {
11021102
String[] names = dbName.substring(1).split(CATALOG_DB_SEPARATOR, 2);
1103+
if (names.length == 1) {
1104+
return new String[] {names[0], null};
1105+
}
11031106
if (names[1].isEmpty()) {
11041107
names[1] = null;
11051108
} else if (names[1].equals(DB_EMPTY_MARKER)) {

standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/utils/TestMetastoreUtilsParseDbName.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,17 @@ public void testParseDbNameEdgeCases() {
3838
assertArrayEquals(new String[]{"hive", "@!"}, parseDbName("@!", conf));
3939
assertArrayEquals(new String[]{"", null}, parseDbName("@#", conf));
4040
assertArrayEquals(new String[]{"", "db1"}, parseDbName("@#db1", conf));
41+
assertArrayEquals(new String[]{"cat1", null}, parseDbName("@cat1", conf));
42+
assertArrayEquals(new String[]{"cat1", null}, parseDbName("@cat1#", conf));
43+
assertArrayEquals(new String[]{"cat1", ""}, parseDbName("@cat1#!", conf));
44+
assertArrayEquals(new String[]{"cat1", "@db1"}, parseDbName("@cat1#@db1", conf));
45+
assertArrayEquals(new String[]{"cat1", "#db1"}, parseDbName("@cat1##db1", conf));
46+
assertArrayEquals(new String[]{"cat1", "db1"}, parseDbName("@cat1#db1", conf));
47+
assertArrayEquals(new String[]{"cat1", "db1!"}, parseDbName("@cat1#db1!", conf));
48+
assertArrayEquals(new String[]{"cat1!", null}, parseDbName("@cat1!", conf));
49+
assertArrayEquals(new String[]{"hive", "#db1"}, parseDbName("#db1", conf));
50+
assertArrayEquals(new String[]{"hive", "#!"}, parseDbName("#!", conf));
51+
assertArrayEquals(new String[]{"hive", "#"}, parseDbName("#", conf));
4152
assertArrayEquals(new String[]{"hive", "@cat1"}, parseDbName("@cat1", conf));
4253
assertArrayEquals(new String[]{"cat1", null}, parseDbName("@cat1#", conf));
4354
assertArrayEquals(new String[]{"cat1", ""}, parseDbName("@cat1#!", conf));

0 commit comments

Comments
 (0)