Skip to content
15 changes: 14 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
<dep.testng.version>6.10</dep.testng.version>
<dep.assertj-core.version>3.8.0</dep.assertj-core.version>
<dep.logback.version>1.2.3</dep.logback.version>
<dep.parquet.version>1.10.0</dep.parquet.version>
<dep.parquet.version>1.11.0</dep.parquet.version>
<dep.nexus-staging-plugin.version>1.6.8</dep.nexus-staging-plugin.version>
<dep.asm.version>9.0</dep.asm.version>
<dep.gcs.version>1.9.17</dep.gcs.version>
Expand Down Expand Up @@ -106,6 +106,7 @@
<module>presto-hive-common</module>
<module>presto-hive-hadoop2</module>
<module>presto-hive-metastore</module>
<module>presto-iceberg</module>
<module>presto-i18n-functions</module>
<module>presto-teradata-functions</module>
<module>presto-example-http</module>
Expand Down Expand Up @@ -283,6 +284,18 @@
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>com.facebook.presto</groupId>
<artifactId>presto-iceberg</artifactId>
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>

<dependency>
<groupId>com.facebook.presto</groupId>
<artifactId>presto-example-http</artifactId>
Expand Down
4 changes: 4 additions & 0 deletions presto-geospatial/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,10 @@
<ignoredResourcePattern>parquet.thrift</ignoredResourcePattern>
<ignoredResourcePattern>about.html</ignoredResourcePattern>
</ignoredResourcePatterns>
<ignoredClassPatterns>
<ignoredClassPattern>shaded.parquet.it.unimi.dsi.fastutil.*</ignoredClassPattern>
<ignoredClassPattern>module-info</ignoredClassPattern>
</ignoredClassPatterns>
</configuration>
</plugin>
</plugins>
Expand Down
4 changes: 4 additions & 0 deletions presto-hive-hadoop2/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,10 @@
<ignoredResourcePattern>parquet.thrift</ignoredResourcePattern>
<ignoredResourcePattern>about.html</ignoredResourcePattern>
</ignoredResourcePatterns>
<ignoredClassPatterns>
<ignoredClassPattern>shaded.parquet.it.unimi.dsi.fastutil.*</ignoredClassPattern>
<ignoredClassPattern>module-info</ignoredClassPattern>
</ignoredClassPatterns>
</configuration>
</plugin>
</plugins>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ public class FileHiveMetastore
private static final String ADMIN_ROLE_NAME = "admin";
private static final String PRESTO_SCHEMA_FILE_NAME = ".prestoSchema";
private static final String PRESTO_PERMISSIONS_DIRECTORY_NAME = ".prestoPermissions";
private static final String ICEBERG_TABLE_TYPE_NAME = "table_type";
private static final String ICEBERG_TABLE_TYPE_VALUE = "iceberg";
// todo there should be a way to manage the admins list
private static final Set<String> ADMIN_USERS = ImmutableSet.of("admin", "hive", "hdfs");

Expand Down Expand Up @@ -249,7 +251,7 @@ else if (table.getTableType().equals(EXTERNAL_TABLE)) {
if (!externalFileSystem.isDirectory(externalLocation)) {
throw new PrestoException(HIVE_METASTORE_ERROR, "External table location does not exist");
}
if (isChildDirectory(catalogDirectory, externalLocation)) {
if (isChildDirectory(catalogDirectory, externalLocation) && !isIcebergTable(table.getParameters())) {
throw new PrestoException(HIVE_METASTORE_ERROR, "External table location can not be inside the system metadata directory");
}
}
Expand Down Expand Up @@ -459,8 +461,11 @@ public synchronized void renameTable(MetastoreContext metastoreContext, String d
requireNonNull(newDatabaseName, "newDatabaseName is null");
requireNonNull(newTableName, "newTableName is null");

getRequiredTable(metastoreContext, databaseName, tableName);
Table table = getRequiredTable(metastoreContext, databaseName, tableName);
getRequiredDatabase(metastoreContext, newDatabaseName);
if (isIcebergTable(table.getParameters())) {
throw new PrestoException(NOT_SUPPORTED, "Rename not supported for Iceberg tables");
}

// verify new table does not exist
verifyTableNotExists(metastoreContext, newDatabaseName, newTableName);
Expand All @@ -475,6 +480,11 @@ public synchronized void renameTable(MetastoreContext metastoreContext, String d
}
}

private static boolean isIcebergTable(Map<String, String> parameters)
{
return ICEBERG_TABLE_TYPE_VALUE.equalsIgnoreCase(parameters.get(ICEBERG_TABLE_TYPE_NAME));
}

@Override
public synchronized void addColumn(MetastoreContext metastoreContext, String databaseName, String tableName, String columnName, HiveType columnType, String columnComment)
{
Expand Down
4 changes: 4 additions & 0 deletions presto-hive/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,10 @@
<ignoredResourcePattern>parquet.thrift</ignoredResourcePattern>
<ignoredResourcePattern>about.html</ignoredResourcePattern>
</ignoredResourcePatterns>
<ignoredClassPatterns>
<ignoredClassPattern>shaded.parquet.it.unimi.dsi.fastutil.*</ignoredClassPattern>
<ignoredClassPattern>module-info</ignoredClassPattern>
</ignoredClassPatterns>
</configuration>
</plugin>

Expand Down
Loading