IMPALA-6719: Reset metadata database name case sensitivity

Fix issue with database case name case sensitivity in reset metadata
statement.

Testing:
- Created end-to-end reset metadata tests.

Change-Id: Id880aa559cec0afe8fbb7d33ccce83f7b5e474cb
Reviewed-on: http://gerrit.cloudera.org:8080/9788
Reviewed-by: Alex Behm <alex.b...@cloudera.com>
Tested-by: Impala Public Jenkins


Project: http://git-wip-us.apache.org/repos/asf/impala/repo
Commit: http://git-wip-us.apache.org/repos/asf/impala/commit/6a7f07de
Tree: http://git-wip-us.apache.org/repos/asf/impala/tree/6a7f07de
Diff: http://git-wip-us.apache.org/repos/asf/impala/diff/6a7f07de

Branch: refs/heads/2.x
Commit: 6a7f07deaf8e641be5b23513c19d0696e49ca133
Parents: 851f622
Author: Fredy wijaya <fwij...@cloudera.com>
Authored: Fri Mar 23 11:23:21 2018 -0700
Committer: Impala Public Jenkins <impala-public-jenk...@gerrit.cloudera.org>
Committed: Wed Apr 11 22:55:59 2018 +0000

----------------------------------------------------------------------
 .../impala/catalog/CatalogServiceCatalog.java   |  2 +-
 tests/metadata/test_reset_metadata.py           | 34 ++++++++++++++++++++
 2 files changed, 35 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/impala/blob/6a7f07de/fe/src/main/java/org/apache/impala/catalog/CatalogServiceCatalog.java
----------------------------------------------------------------------
diff --git 
a/fe/src/main/java/org/apache/impala/catalog/CatalogServiceCatalog.java 
b/fe/src/main/java/org/apache/impala/catalog/CatalogServiceCatalog.java
index 5bef242..20a3e2f 100644
--- a/fe/src/main/java/org/apache/impala/catalog/CatalogServiceCatalog.java
+++ b/fe/src/main/java/org/apache/impala/catalog/CatalogServiceCatalog.java
@@ -977,7 +977,7 @@ public class CatalogServiceCatalog extends Catalog {
       // Load Java UDFs from HMS into the temporary db.
       loadJavaFunctions(tmpDb, javaFns);
 
-      Db db = dbCache_.get().get(dbName);
+      Db db = getDb(dbName);
       if (db == null) {
         throw new DatabaseNotFoundException("Database does not exist: " + 
dbName);
       }

http://git-wip-us.apache.org/repos/asf/impala/blob/6a7f07de/tests/metadata/test_reset_metadata.py
----------------------------------------------------------------------
diff --git a/tests/metadata/test_reset_metadata.py 
b/tests/metadata/test_reset_metadata.py
new file mode 100644
index 0000000..07ee7f1
--- /dev/null
+++ b/tests/metadata/test_reset_metadata.py
@@ -0,0 +1,34 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+from test_ddl_base import TestDdlBase
+
+class TestResetMetadata(TestDdlBase):
+  def test_reset_metadata_case_sensitivity(self, unique_database):
+    # IMPALA-6719: Issue with database name case sensitivity in reset metadata.
+    table = 'newtable'
+    self.client.execute('create table %s.%s (i int)' % (unique_database, 
table))
+
+    self.client.execute('refresh %s.%s' % (unique_database, table))
+    self.client.execute('refresh %s.%s' % (unique_database.upper(), 
table.upper()))
+
+    self.client.execute('invalidate metadata %s.%s' % (unique_database, table))
+    self.client.execute('invalidate metadata %s.%s' % (unique_database.upper(),
+                                                       table.upper()))
+
+    self.client.execute('refresh functions %s' % unique_database)
+    self.client.execute('refresh functions %s' % unique_database.upper())

Reply via email to