diff --git a/pom.xml b/pom.xml
index 9e05e0deb..3184a4be2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -281,6 +281,11 @@
${iceberg.version}
test
+
+ org.apache.iceberg
+ iceberg-hive-runtime
+ ${iceberg.version}
+
@@ -293,6 +298,11 @@
delta-standalone_${scala.binary.version}
${delta.standalone.version}
+
+ io.delta
+ delta-hive_${scala.binary.version}
+ ${delta.hive.version}
+
diff --git a/xtable-core/pom.xml b/xtable-core/pom.xml
index 84d4c03fc..68d7a176f 100644
--- a/xtable-core/pom.xml
+++ b/xtable-core/pom.xml
@@ -101,6 +101,7 @@
io.delta
delta-standalone_${scala.binary.version}
+ test
diff --git a/xtable-hive-metastore/pom.xml b/xtable-hive-metastore/pom.xml
index 7f66c679b..01037a1fc 100644
--- a/xtable-hive-metastore/pom.xml
+++ b/xtable-hive-metastore/pom.xml
@@ -46,14 +46,12 @@
org.apache.iceberg
iceberg-hive-runtime
- ${iceberg.version}
io.delta
delta-hive_${scala.binary.version}
- ${delta.hive.version}
diff --git a/xtable-hive-metastore/src/main/java/org/apache/xtable/hms/table/DeltaHMSCatalogTableBuilder.java b/xtable-hive-metastore/src/main/java/org/apache/xtable/hms/table/DeltaHMSCatalogTableBuilder.java
index f1f49f3e6..1f5ce4ccf 100644
--- a/xtable-hive-metastore/src/main/java/org/apache/xtable/hms/table/DeltaHMSCatalogTableBuilder.java
+++ b/xtable-hive-metastore/src/main/java/org/apache/xtable/hms/table/DeltaHMSCatalogTableBuilder.java
@@ -52,11 +52,6 @@ public DeltaHMSCatalogTableBuilder() {
this.schemaExtractor = HMSSchemaExtractor.getInstance();
}
- @VisibleForTesting
- DeltaHMSCatalogTableBuilder(HMSSchemaExtractor schemaExtractor) {
- this.schemaExtractor = schemaExtractor;
- }
-
@Override
public Table getCreateTableRequest(InternalTable table, CatalogTableIdentifier tableIdentifier) {
return newHmsTable(tableIdentifier, getStorageDescriptor(table), getTableParameters());
diff --git a/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/HMSCatalogSyncClientTestBase.java b/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/HMSCatalogSyncClientTestBase.java
index f99057724..cd76c6be9 100644
--- a/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/HMSCatalogSyncClientTestBase.java
+++ b/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/HMSCatalogSyncClientTestBase.java
@@ -18,13 +18,16 @@
package org.apache.xtable.hms;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.metastore.IMetaStoreClient;
import org.apache.hadoop.hive.metastore.api.Database;
+import org.apache.hadoop.hive.metastore.api.FieldSchema;
import org.apache.hadoop.hive.metastore.api.StorageDescriptor;
import org.apache.hadoop.hive.metastore.api.Table;
import org.mockito.Mock;
@@ -32,7 +35,11 @@
import org.apache.xtable.conversion.ExternalCatalogConfig;
import org.apache.xtable.model.InternalTable;
import org.apache.xtable.model.catalog.ThreePartHierarchicalTableIdentifier;
+import org.apache.xtable.model.schema.InternalField;
+import org.apache.xtable.model.schema.InternalPartitionField;
import org.apache.xtable.model.schema.InternalSchema;
+import org.apache.xtable.model.schema.InternalType;
+import org.apache.xtable.model.schema.PartitionTransformType;
import org.apache.xtable.model.storage.CatalogType;
import org.apache.xtable.model.storage.TableFormat;
@@ -57,23 +64,80 @@ public class HMSCatalogSyncClientTestBase {
protected static final String ICEBERG_METADATA_FILE_LOCATION = "base-path/metadata";
protected static final String ICEBERG_METADATA_FILE_LOCATION_V2 = "base-path/v2-metadata";
+ protected static final InternalPartitionField PARTITION_FIELD =
+ InternalPartitionField.builder()
+ .sourceField(
+ InternalField.builder()
+ .name("partitionField")
+ .schema(
+ InternalSchema.builder().name("string").dataType(InternalType.STRING).build())
+ .build())
+ .transformType(PartitionTransformType.VALUE)
+ .build();
+ protected static final InternalSchema INTERNAL_SCHEMA =
+ InternalSchema.builder()
+ .dataType(InternalType.RECORD)
+ .fields(
+ Arrays.asList(
+ getInternalField("intField", "int", InternalType.INT),
+ getInternalField("stringField", "string", InternalType.STRING),
+ getInternalField("partitionField", "string", InternalType.STRING)))
+ .build();
+ protected static final InternalSchema UPDATED_INTERNAL_SCHEMA =
+ InternalSchema.builder()
+ .dataType(InternalType.RECORD)
+ .fields(
+ Arrays.asList(
+ getInternalField("intField", "int", InternalType.INT),
+ getInternalField("stringField", "string", InternalType.STRING),
+ getInternalField("partitionField", "string", InternalType.STRING),
+ getInternalField("booleanField", "boolean", InternalType.BOOLEAN)))
+ .build();
+ protected static final List FIELD_SCHEMA =
+ Arrays.asList(
+ getFieldSchema("intField", "int"),
+ getFieldSchema("stringField", "string"),
+ getFieldSchema("partitionField", "string"));
+ protected static final List UPDATED_FIELD_SCHEMA =
+ Arrays.asList(
+ getFieldSchema("intField", "int"),
+ getFieldSchema("stringField", "string"),
+ getFieldSchema("partitionField", "string"),
+ getFieldSchema("booleanField", "boolean"));
protected static final InternalTable TEST_ICEBERG_INTERNAL_TABLE =
InternalTable.builder()
.basePath(TEST_BASE_PATH)
.tableFormat(TableFormat.ICEBERG)
- .readSchema(InternalSchema.builder().fields(Collections.emptyList()).build())
+ .readSchema(INTERNAL_SCHEMA)
+ .partitioningFields(Collections.singletonList(PARTITION_FIELD))
+ .build();
+ protected static final InternalTable TEST_UPDATED_ICEBERG_INTERNAL_TABLE =
+ InternalTable.builder()
+ .basePath(TEST_BASE_PATH)
+ .tableFormat(TableFormat.ICEBERG)
+ .readSchema(UPDATED_INTERNAL_SCHEMA)
+ .partitioningFields(Collections.singletonList(PARTITION_FIELD))
.build();
protected static final InternalTable TEST_DELTA_INTERNAL_TABLE =
InternalTable.builder()
.basePath(TEST_BASE_PATH)
.tableFormat(TableFormat.DELTA)
- .readSchema(InternalSchema.builder().fields(Collections.emptyList()).build())
+ .readSchema(INTERNAL_SCHEMA)
+ .partitioningFields(Collections.singletonList(PARTITION_FIELD))
+ .build();
+ protected static final InternalTable TEST_UPDATED_DELTA_INTERNAL_TABLE =
+ InternalTable.builder()
+ .basePath(TEST_BASE_PATH)
+ .tableFormat(TableFormat.DELTA)
+ .readSchema(UPDATED_INTERNAL_SCHEMA)
+ .partitioningFields(Collections.singletonList(PARTITION_FIELD))
.build();
protected static final InternalTable TEST_HUDI_INTERNAL_TABLE =
InternalTable.builder()
.basePath(TEST_BASE_PATH)
.tableFormat(TableFormat.HUDI)
- .readSchema(InternalSchema.builder().fields(Collections.emptyList()).build())
+ .readSchema(INTERNAL_SCHEMA)
+ .partitioningFields(Collections.singletonList(PARTITION_FIELD))
.build();
protected static final ThreePartHierarchicalTableIdentifier TEST_CATALOG_TABLE_IDENTIFIER =
new ThreePartHierarchicalTableIdentifier(TEST_HMS_DATABASE, TEST_HMS_TABLE);
@@ -101,4 +165,16 @@ protected Database newDatabase(String dbName) {
return new Database(
dbName, "Created by " + HMSCatalogSyncClient.class.getName(), null, Collections.emptyMap());
}
+
+ protected static FieldSchema getFieldSchema(String name, String type) {
+ return new FieldSchema(name, type, null);
+ }
+
+ protected static InternalField getInternalField(
+ String fieldName, String schemaName, InternalType dataType) {
+ return InternalField.builder()
+ .name(fieldName)
+ .schema(InternalSchema.builder().name(schemaName).dataType(dataType).build())
+ .build();
+ }
}
diff --git a/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/TestHMSCatalogTableBuilderFactory.java b/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/TestHMSCatalogTableBuilderFactory.java
index 6748b6883..45d45a2da 100644
--- a/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/TestHMSCatalogTableBuilderFactory.java
+++ b/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/TestHMSCatalogTableBuilderFactory.java
@@ -18,6 +18,7 @@
package org.apache.xtable.hms;
+import static org.apache.xtable.hms.HMSCatalogSyncClientTestBase.FIELD_SCHEMA;
import static org.apache.xtable.hms.HMSCatalogSyncClientTestBase.TEST_CATALOG_TABLE_IDENTIFIER;
import static org.apache.xtable.hms.HMSCatalogSyncClientTestBase.TEST_HMS_DATABASE;
import static org.apache.xtable.hms.HMSCatalogSyncClientTestBase.TEST_HMS_TABLE;
@@ -48,7 +49,7 @@ void testNewHmsTable() {
expected.setTableName(TEST_HMS_TABLE);
expected.setOwner(UserGroupInformation.getCurrentUser().getShortUserName());
expected.setCreateTime((int) createdTime.getEpochSecond());
- expected.setSd(getTestHmsTableStorageDescriptor());
+ expected.setSd(getTestHmsTableStorageDescriptor(FIELD_SCHEMA));
expected.setTableType("EXTERNAL_TABLE");
expected.setParameters(getTestHmsTableParameters());
@@ -56,7 +57,7 @@ void testNewHmsTable() {
expected,
HMSCatalogTableBuilderFactory.newHmsTable(
TEST_CATALOG_TABLE_IDENTIFIER,
- getTestHmsTableStorageDescriptor(),
+ getTestHmsTableStorageDescriptor(FIELD_SCHEMA),
getTestHmsTableParameters()));
}
}
diff --git a/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/table/TestDeltaHMSCatalogTableBuilder.java b/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/table/TestDeltaHMSCatalogTableBuilder.java
index 67983df7b..1a7d0cb4f 100644
--- a/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/table/TestDeltaHMSCatalogTableBuilder.java
+++ b/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/table/TestDeltaHMSCatalogTableBuilder.java
@@ -20,13 +20,10 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mockStatic;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
import java.time.Instant;
-import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import lombok.SneakyThrows;
@@ -50,20 +47,13 @@ public class TestDeltaHMSCatalogTableBuilder extends HMSCatalogSyncClientTestBas
private DeltaHMSCatalogTableBuilder mockDeltaHmsCatalogSyncRequestProvider;
private DeltaHMSCatalogTableBuilder createDeltaHMSCatalogTableBuilder() {
- return new DeltaHMSCatalogTableBuilder(mockHmsSchemaExtractor);
- }
-
- void setupCommonMocks() {
- mockDeltaHmsCatalogSyncRequestProvider = createDeltaHMSCatalogTableBuilder();
+ return new DeltaHMSCatalogTableBuilder();
}
@SneakyThrows
@Test
void testGetCreateTableRequest() {
mockDeltaHmsCatalogSyncRequestProvider = createDeltaHMSCatalogTableBuilder();
- when(mockHmsSchemaExtractor.toColumns(
- TableFormat.DELTA, TEST_DELTA_INTERNAL_TABLE.getReadSchema()))
- .thenReturn(Collections.emptyList());
Instant createdTime = Instant.now();
try (MockedStatic mockZonedDateTime = mockStatic(Instant.class)) {
@@ -73,7 +63,7 @@ void testGetCreateTableRequest() {
expected.setTableName(TEST_HMS_TABLE);
expected.setOwner(UserGroupInformation.getCurrentUser().getShortUserName());
expected.setCreateTime((int) createdTime.getEpochSecond());
- expected.setSd(getTestStorageDescriptor());
+ expected.setSd(getTestStorageDescriptor(FIELD_SCHEMA));
expected.setTableType("EXTERNAL_TABLE");
expected.setParameters(getTestParameters());
@@ -81,47 +71,36 @@ void testGetCreateTableRequest() {
expected,
mockDeltaHmsCatalogSyncRequestProvider.getCreateTableRequest(
TEST_DELTA_INTERNAL_TABLE, TEST_CATALOG_TABLE_IDENTIFIER));
- verify(mockHmsSchemaExtractor, times(1))
- .toColumns(TableFormat.DELTA, TEST_DELTA_INTERNAL_TABLE.getReadSchema());
}
}
@SneakyThrows
@Test
void testGetUpdateTableRequest() {
- setupCommonMocks();
+ mockDeltaHmsCatalogSyncRequestProvider = createDeltaHMSCatalogTableBuilder();
Table hmsTable =
newTable(
- TEST_HMS_DATABASE, TEST_HMS_TABLE, getTestParameters(), getTestStorageDescriptor());
- FieldSchema newColumn = new FieldSchema("new_column", "test", null);
- when(mockHmsSchemaExtractor.toColumns(
- TableFormat.DELTA, TEST_DELTA_INTERNAL_TABLE.getReadSchema()))
- .thenReturn(Collections.singletonList(newColumn));
+ TEST_HMS_DATABASE,
+ TEST_HMS_TABLE,
+ getTestParameters(),
+ getTestStorageDescriptor(FIELD_SCHEMA));
+ Table expected = new Table(hmsTable);
+ expected.getSd().setCols(UPDATED_FIELD_SCHEMA);
Table output =
mockDeltaHmsCatalogSyncRequestProvider.getUpdateTableRequest(
- TEST_DELTA_INTERNAL_TABLE, hmsTable, TEST_CATALOG_TABLE_IDENTIFIER);
- Table expected = new Table(hmsTable);
- expected.getSd().setCols(Collections.singletonList(newColumn));
-
+ TEST_UPDATED_DELTA_INTERNAL_TABLE, hmsTable, TEST_CATALOG_TABLE_IDENTIFIER);
assertEquals(expected, output);
- verify(mockHmsSchemaExtractor, times(1))
- .toColumns(TableFormat.DELTA, TEST_DELTA_INTERNAL_TABLE.getReadSchema());
}
@Test
void testGetStorageDescriptor() {
mockDeltaHmsCatalogSyncRequestProvider = createDeltaHMSCatalogTableBuilder();
- when(mockHmsSchemaExtractor.toColumns(
- TableFormat.DELTA, TEST_DELTA_INTERNAL_TABLE.getReadSchema()))
- .thenReturn(Collections.emptyList());
- StorageDescriptor expected = getTestStorageDescriptor();
+ StorageDescriptor expected = getTestStorageDescriptor(FIELD_SCHEMA);
assertEquals(
expected,
mockDeltaHmsCatalogSyncRequestProvider.getStorageDescriptor(TEST_DELTA_INTERNAL_TABLE));
- verify(mockHmsSchemaExtractor, times(1))
- .toColumns(TableFormat.DELTA, TEST_DELTA_INTERNAL_TABLE.getReadSchema());
}
@Test
@@ -131,13 +110,13 @@ void testGetTableParameters() {
assertEquals(expected, mockDeltaHmsCatalogSyncRequestProvider.getTableParameters());
}
- private StorageDescriptor getTestStorageDescriptor() {
+ private StorageDescriptor getTestStorageDescriptor(List columns) {
Map serDeParams = new HashMap<>();
serDeParams.put("serialization.format", "1");
serDeParams.put("path", TEST_BASE_PATH);
StorageDescriptor storageDescriptor = new StorageDescriptor();
- storageDescriptor.setCols(Collections.emptyList());
+ storageDescriptor.setCols(columns);
storageDescriptor.setLocation(TEST_BASE_PATH);
SerDeInfo serDeInfo = new SerDeInfo();
serDeInfo.setParameters(serDeParams);
diff --git a/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/table/TestIcebergHMSCatalogTableBuilder.java b/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/table/TestIcebergHMSCatalogTableBuilder.java
index b0c09a947..14d39c449 100644
--- a/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/table/TestIcebergHMSCatalogTableBuilder.java
+++ b/xtable-hive-metastore/src/test/java/org/apache/xtable/hms/table/TestIcebergHMSCatalogTableBuilder.java
@@ -31,10 +31,12 @@
import java.time.Instant;
import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import lombok.SneakyThrows;
+import org.apache.hadoop.hive.metastore.api.FieldSchema;
import org.apache.hadoop.hive.metastore.api.SerDeInfo;
import org.apache.hadoop.hive.metastore.api.StorageDescriptor;
import org.apache.hadoop.hive.metastore.api.Table;
@@ -51,7 +53,7 @@
import org.apache.iceberg.hadoop.HadoopTables;
import org.apache.xtable.hms.HMSCatalogSyncClientTestBase;
-import org.apache.xtable.model.storage.TableFormat;
+import org.apache.xtable.hms.HMSSchemaExtractor;
@ExtendWith(MockitoExtension.class)
public class TestIcebergHMSCatalogTableBuilder extends HMSCatalogSyncClientTestBase {
@@ -63,12 +65,9 @@ public class TestIcebergHMSCatalogTableBuilder extends HMSCatalogSyncClientTestB
private IcebergHMSCatalogTableBuilder mockIcebergHmsCatalogSyncRequestProvider;
- private IcebergHMSCatalogTableBuilder createIcebergHMSHelper() {
- return new IcebergHMSCatalogTableBuilder(mockHmsSchemaExtractor, mockIcebergHadoopTables);
- }
-
- void setupCommonMocks() {
- mockIcebergHmsCatalogSyncRequestProvider = createIcebergHMSHelper();
+ private IcebergHMSCatalogTableBuilder createIcebergHMSCatalogTableBuilder() {
+ return new IcebergHMSCatalogTableBuilder(
+ HMSSchemaExtractor.getInstance(), mockIcebergHadoopTables);
}
void mockHadoopTables() {
@@ -86,11 +85,9 @@ void mockMetadataFileLocation() {
@SneakyThrows
@Test
void testGetCreateTableRequest() {
- mockIcebergHmsCatalogSyncRequestProvider = createIcebergHMSHelper();
+ mockIcebergHmsCatalogSyncRequestProvider = createIcebergHMSCatalogTableBuilder();
mockHadoopTables();
- when(mockHmsSchemaExtractor.toColumns(
- TableFormat.ICEBERG, TEST_ICEBERG_INTERNAL_TABLE.getReadSchema()))
- .thenReturn(Collections.emptyList());
+
Instant createdTime = Instant.now();
try (MockedStatic mockZonedDateTime = mockStatic(Instant.class)) {
mockZonedDateTime.when(Instant::now).thenReturn(createdTime);
@@ -99,7 +96,7 @@ void testGetCreateTableRequest() {
expected.setTableName(TEST_HMS_TABLE);
expected.setOwner(UserGroupInformation.getCurrentUser().getShortUserName());
expected.setCreateTime((int) createdTime.getEpochSecond());
- expected.setSd(getTestHmsTableStorageDescriptor());
+ expected.setSd(getTestHmsTableStorageDescriptor(FIELD_SCHEMA));
expected.setTableType("EXTERNAL_TABLE");
expected.setParameters(getTestHmsTableParameters());
@@ -107,8 +104,6 @@ void testGetCreateTableRequest() {
expected,
mockIcebergHmsCatalogSyncRequestProvider.getCreateTableRequest(
TEST_ICEBERG_INTERNAL_TABLE, TEST_CATALOG_TABLE_IDENTIFIER));
- verify(mockHmsSchemaExtractor, times(1))
- .toColumns(TableFormat.ICEBERG, TEST_ICEBERG_INTERNAL_TABLE.getReadSchema());
verify(mockIcebergBaseTable, times(1)).properties();
verify(mockIcebergHadoopTables, times(1)).load(TEST_BASE_PATH);
}
@@ -117,52 +112,45 @@ void testGetCreateTableRequest() {
@SneakyThrows
@Test
void testGetUpdateTableRequest() {
- setupCommonMocks();
+ mockIcebergHmsCatalogSyncRequestProvider = createIcebergHMSCatalogTableBuilder();
mockHadoopTables();
- when(mockHmsSchemaExtractor.toColumns(
- TableFormat.ICEBERG, TEST_ICEBERG_INTERNAL_TABLE.getReadSchema()))
- .thenReturn(Collections.emptyList());
Map tableParams = new HashMap<>();
tableParams.put(METADATA_LOCATION_PROP, ICEBERG_METADATA_FILE_LOCATION);
Table hmsTable =
newTable(
- TEST_HMS_DATABASE, TEST_HMS_TABLE, tableParams, getTestHmsTableStorageDescriptor());
+ TEST_HMS_DATABASE,
+ TEST_HMS_TABLE,
+ tableParams,
+ getTestHmsTableStorageDescriptor(FIELD_SCHEMA));
when(mockIcebergTableMetadata.metadataFileLocation())
.thenReturn(ICEBERG_METADATA_FILE_LOCATION_V2);
when(mockIcebergBaseTable.properties()).thenReturn(Collections.emptyMap());
Table output =
mockIcebergHmsCatalogSyncRequestProvider.getUpdateTableRequest(
- TEST_ICEBERG_INTERNAL_TABLE, hmsTable, TEST_CATALOG_TABLE_IDENTIFIER);
+ TEST_UPDATED_ICEBERG_INTERNAL_TABLE, hmsTable, TEST_CATALOG_TABLE_IDENTIFIER);
tableParams.put(PREVIOUS_METADATA_LOCATION_PROP, ICEBERG_METADATA_FILE_LOCATION);
tableParams.put(METADATA_LOCATION_PROP, ICEBERG_METADATA_FILE_LOCATION_V2);
- Table expected =
- newTable(
- TEST_HMS_DATABASE, TEST_HMS_TABLE, tableParams, getTestHmsTableStorageDescriptor());
+ Table expected = new Table(hmsTable);
+ expected.getSd().setCols(UPDATED_FIELD_SCHEMA);
+
assertEquals(expected, output);
assertEquals(tableParams, hmsTable.getParameters());
- verify(mockHmsSchemaExtractor, times(1))
- .toColumns(TableFormat.ICEBERG, TEST_ICEBERG_INTERNAL_TABLE.getReadSchema());
}
@Test
void testGetStorageDescriptor() {
- mockIcebergHmsCatalogSyncRequestProvider = createIcebergHMSHelper();
- when(mockHmsSchemaExtractor.toColumns(
- TableFormat.ICEBERG, TEST_ICEBERG_INTERNAL_TABLE.getReadSchema()))
- .thenReturn(Collections.emptyList());
- StorageDescriptor expected = getTestHmsTableStorageDescriptor();
+ mockIcebergHmsCatalogSyncRequestProvider = createIcebergHMSCatalogTableBuilder();
+ StorageDescriptor expected = getTestHmsTableStorageDescriptor(FIELD_SCHEMA);
assertEquals(
expected,
mockIcebergHmsCatalogSyncRequestProvider.getStorageDescriptor(TEST_ICEBERG_INTERNAL_TABLE));
- verify(mockHmsSchemaExtractor, times(1))
- .toColumns(TableFormat.ICEBERG, TEST_ICEBERG_INTERNAL_TABLE.getReadSchema());
}
@Test
void testGetTableParameters() {
- mockIcebergHmsCatalogSyncRequestProvider = createIcebergHMSHelper();
+ mockIcebergHmsCatalogSyncRequestProvider = createIcebergHMSCatalogTableBuilder();
mockMetadataFileLocation();
when(mockIcebergBaseTable.properties()).thenReturn(Collections.emptyMap());
Map expected = getTestHmsTableParameters();
@@ -173,10 +161,10 @@ void testGetTableParameters() {
verify(mockIcebergHadoopTables, never()).load(any());
}
- public static StorageDescriptor getTestHmsTableStorageDescriptor() {
+ public static StorageDescriptor getTestHmsTableStorageDescriptor(List columns) {
StorageDescriptor storageDescriptor = new StorageDescriptor();
SerDeInfo serDeInfo = new SerDeInfo();
- storageDescriptor.setCols(Collections.emptyList());
+ storageDescriptor.setCols(columns);
storageDescriptor.setLocation(TEST_BASE_PATH);
storageDescriptor.setInputFormat("org.apache.iceberg.mr.hive.HiveIcebergInputFormat");
storageDescriptor.setOutputFormat("org.apache.iceberg.mr.hive.HiveIcebergOutputFormat");