diff --git a/mr/src/main/java/org/apache/iceberg/mr/Catalogs.java b/mr/src/main/java/org/apache/iceberg/mr/Catalogs.java index e02a07038f92..0bf04731124b 100644 --- a/mr/src/main/java/org/apache/iceberg/mr/Catalogs.java +++ b/mr/src/main/java/org/apache/iceberg/mr/Catalogs.java @@ -206,7 +206,11 @@ public static boolean hiveCatalog(Configuration conf, Properties props) { if (catalogType != null) { return CatalogUtil.ICEBERG_CATALOG_TYPE_HIVE.equalsIgnoreCase(catalogType); } - return CatalogUtil.ICEBERG_CATALOG_TYPE_HIVE.equalsIgnoreCase(getCatalogType(conf, ICEBERG_DEFAULT_CATALOG_NAME)); + catalogType = getCatalogType(conf, ICEBERG_DEFAULT_CATALOG_NAME); + if (catalogType != null) { + return CatalogUtil.ICEBERG_CATALOG_TYPE_HIVE.equalsIgnoreCase(catalogType); + } + return getCatalogProperties(conf, catalogName, catalogType).get(CatalogProperties.CATALOG_IMPL) == null; } @VisibleForTesting diff --git a/mr/src/test/java/org/apache/iceberg/mr/TestCatalogs.java b/mr/src/test/java/org/apache/iceberg/mr/TestCatalogs.java index 6ac9808e87f8..4d4a87f03c54 100644 --- a/mr/src/test/java/org/apache/iceberg/mr/TestCatalogs.java +++ b/mr/src/test/java/org/apache/iceberg/mr/TestCatalogs.java @@ -197,6 +197,7 @@ public void testLegacyLoadCatalogDefault() { Optional defaultCatalog = Catalogs.loadCatalog(conf, null); Assert.assertTrue(defaultCatalog.isPresent()); Assertions.assertThat(defaultCatalog.get()).isInstanceOf(HiveCatalog.class); + Assert.assertTrue(Catalogs.hiveCatalog(conf, new Properties())); } @Test @@ -205,6 +206,7 @@ public void testLegacyLoadCatalogHive() { Optional hiveCatalog = Catalogs.loadCatalog(conf, null); Assert.assertTrue(hiveCatalog.isPresent()); Assertions.assertThat(hiveCatalog.get()).isInstanceOf(HiveCatalog.class); + Assert.assertTrue(Catalogs.hiveCatalog(conf, new Properties())); } @Test @@ -214,6 +216,7 @@ public void testLegacyLoadCatalogHadoop() { Optional hadoopCatalog = Catalogs.loadCatalog(conf, null); Assert.assertTrue(hadoopCatalog.isPresent()); Assertions.assertThat(hadoopCatalog.get()).isInstanceOf(HadoopCatalog.class); + Assert.assertFalse(Catalogs.hiveCatalog(conf, new Properties())); } @Test @@ -223,12 +226,14 @@ public void testLegacyLoadCatalogCustom() { Optional customHadoopCatalog = Catalogs.loadCatalog(conf, null); Assert.assertTrue(customHadoopCatalog.isPresent()); Assertions.assertThat(customHadoopCatalog.get()).isInstanceOf(CustomHadoopCatalog.class); + Assert.assertFalse(Catalogs.hiveCatalog(conf, new Properties())); } @Test public void testLegacyLoadCatalogLocation() { conf.set(InputFormatConfig.CATALOG, Catalogs.LOCATION); Assert.assertFalse(Catalogs.loadCatalog(conf, null).isPresent()); + Assert.assertFalse(Catalogs.hiveCatalog(conf, new Properties())); } @Test @@ -241,9 +246,13 @@ public void testLegacyLoadCatalogUnknown() { @Test public void testLoadCatalogDefault() { - Optional defaultCatalog = Catalogs.loadCatalog(conf, "barCatalog"); + String catalogName = "barCatalog"; + Optional defaultCatalog = Catalogs.loadCatalog(conf, catalogName); Assert.assertTrue(defaultCatalog.isPresent()); Assertions.assertThat(defaultCatalog.get()).isInstanceOf(HiveCatalog.class); + Properties properties = new Properties(); + properties.put(InputFormatConfig.CATALOG_NAME, catalogName); + Assert.assertTrue(Catalogs.hiveCatalog(conf, properties)); } @Test @@ -254,6 +263,9 @@ public void testLoadCatalogHive() { Optional hiveCatalog = Catalogs.loadCatalog(conf, catalogName); Assert.assertTrue(hiveCatalog.isPresent()); Assertions.assertThat(hiveCatalog.get()).isInstanceOf(HiveCatalog.class); + Properties properties = new Properties(); + properties.put(InputFormatConfig.CATALOG_NAME, catalogName); + Assert.assertTrue(Catalogs.hiveCatalog(conf, properties)); } @Test @@ -278,6 +290,9 @@ public void testLoadCatalogHadoop() { Assert.assertTrue(hadoopCatalog.isPresent()); Assertions.assertThat(hadoopCatalog.get()).isInstanceOf(HadoopCatalog.class); Assert.assertEquals("HadoopCatalog{name=barCatalog, location=/tmp/mylocation}", hadoopCatalog.get().toString()); + Properties properties = new Properties(); + properties.put(InputFormatConfig.CATALOG_NAME, catalogName); + Assert.assertFalse(Catalogs.hiveCatalog(conf, properties)); } @Test @@ -290,6 +305,9 @@ public void testLoadCatalogHadoopWithLegacyWarehouseLocation() { Assert.assertTrue(hadoopCatalog.isPresent()); Assertions.assertThat(hadoopCatalog.get()).isInstanceOf(HadoopCatalog.class); Assert.assertEquals("HadoopCatalog{name=barCatalog, location=/tmp/mylocation}", hadoopCatalog.get().toString()); + Properties properties = new Properties(); + properties.put(InputFormatConfig.CATALOG_NAME, catalogName); + Assert.assertFalse(Catalogs.hiveCatalog(conf, properties)); } @Test @@ -302,6 +320,9 @@ public void testLoadCatalogCustom() { Optional customHadoopCatalog = Catalogs.loadCatalog(conf, catalogName); Assert.assertTrue(customHadoopCatalog.isPresent()); Assertions.assertThat(customHadoopCatalog.get()).isInstanceOf(CustomHadoopCatalog.class); + Properties properties = new Properties(); + properties.put(InputFormatConfig.CATALOG_NAME, catalogName); + Assert.assertFalse(Catalogs.hiveCatalog(conf, properties)); } @Test