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);

Reply via email to