This is an automated email from the ASF dual-hosted git repository.
dkuzmenko 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 63868a94588 HIVE-28899: Make 'get_table_meta' query case-sensitive to
use index (#5793)
63868a94588 is described below
commit 63868a945881a577790813b004aab5c3a80be575
Author: Jihye Seo <[email protected]>
AuthorDate: Thu Aug 28 18:36:46 2025 +0900
HIVE-28899: Make 'get_table_meta' query case-sensitive to use index (#5793)
---
.../apache/hadoop/hive/metastore/ObjectStore.java | 20 ++++++--------------
1 file changed, 6 insertions(+), 14 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 7836ad0f0fb..688a1142efb 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
@@ -1003,11 +1003,10 @@ public List<String> getDatabases(String catName, String
pattern) throws MetaExce
openTransaction();
// Take the pattern and split it on the | to get all the composing
// patterns
- String[] subpatterns = pattern.trim().split("\\|");
StringBuilder filterBuilder = new StringBuilder();
- List<String> parameterVals = new ArrayList<>(subpatterns.length);
+ List<String> parameterVals = new ArrayList<>();
appendSimpleCondition(filterBuilder, "catalogName", new String[]
{catName}, parameterVals);
- appendPatternCondition(filterBuilder, "name", subpatterns,
parameterVals);
+ appendPatternCondition(filterBuilder, "name", pattern, parameterVals);
query = pm.newQuery(MDatabase.class, filterBuilder.toString());
query.setResult("name");
query.setOrdering("name ascending");
@@ -1055,8 +1054,7 @@ public List<Database> getDatabaseObjects(String catName,
String pattern) throws
List<String> parameterVals = new ArrayList<>();
appendSimpleCondition(filterBuilder, "catalogName", new
String[]{catName}, parameterVals);
if (!(pattern == null || pattern.equals("*"))) {
- String[] subpatterns = pattern.trim().split("\\|");
- appendPatternCondition(filterBuilder, "name", subpatterns,
parameterVals);
+ appendPatternCondition(filterBuilder, "name", pattern, parameterVals);
}
query = pm.newQuery(MDatabase.class, filterBuilder.toString());
query.setOrdering("name ascending");
@@ -1845,7 +1843,7 @@ private List<String> getTablesInternalViaJdo(String
catName, String dbName, Stri
appendPatternCondition(filterBuilder, "tableName", pattern,
parameterVals);
}
if(tableType != null) {
- appendPatternCondition(filterBuilder, "tableType", new String[]
{tableType.toString()}, parameterVals);
+ appendSimpleCondition(filterBuilder, "tableType", new String[]
{tableType.toString()}, parameterVals);
}
query = pm.newQuery(MTable.class, filterBuilder.toString());
@@ -2008,11 +2006,6 @@ public List<TableMeta> getTableMeta(String catName,
String dbNames, String table
return metas;
}
- private StringBuilder appendPatternCondition(StringBuilder filterBuilder,
String fieldName,
- String[] elements, List<String> parameterVals) {
- return appendCondition(filterBuilder, fieldName, elements, true,
parameterVals);
- }
-
protected StringBuilder appendPatternCondition(StringBuilder builder,
String fieldName, String elements, List<String> parameters) {
elements = normalizeIdentifier(elements);
@@ -2033,7 +2026,7 @@ private StringBuilder appendCondition(StringBuilder
builder,
int length = builder.length();
for (String element : elements) {
if (pattern) {
- element = "(?i)" + element.replaceAll("\\*", ".*");
+ element = element.replaceAll("\\*", ".*");
}
parameters.add(element);
if (builder.length() > length) {
@@ -2140,7 +2133,6 @@ public List<Table> getTableObjectsByName(String catName,
String db, List<String>
try {
openTransaction();
- db = normalizeIdentifier(db);
catName = normalizeIdentifier(catName);
List<String> lowered_tbl_names = new ArrayList<>();
@@ -2153,7 +2145,7 @@ public List<Table> getTableObjectsByName(String catName,
String db, List<String>
StringBuilder filterBuilder = new StringBuilder();
List<String> parameterVals = new ArrayList<>();
- appendPatternCondition(filterBuilder, "database.name", new String[]
{db}, parameterVals);
+ appendPatternCondition(filterBuilder, "database.name", db,
parameterVals);
appendSimpleCondition(filterBuilder, "database.catalogName", new
String[] {catName}, parameterVals);
if(tbl_names != null){
appendSimpleCondition(filterBuilder, "tableName",
lowered_tbl_names.toArray(new String[0]), parameterVals);