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