Skip to content

Commit 5a6ff9e

Browse files
posullivebyhr
authored andcommitted
Throw better error message when replacing corrupted iceberg table
1 parent ff9b2a0 commit 5a6ff9e

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergMetadata.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,8 +1061,10 @@ public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, Con
10611061

10621062
String tableLocation = null;
10631063
if (replace) {
1064-
IcebergTableHandle table = (IcebergTableHandle) getTableHandle(session, tableMetadata.getTableSchema().getTable(), Optional.empty(), Optional.empty());
1065-
if (table != null) {
1064+
ConnectorTableHandle tableHandle = getTableHandle(session, tableMetadata.getTableSchema().getTable(), Optional.empty(), Optional.empty());
1065+
if (tableHandle != null) {
1066+
checkValidTableHandle(tableHandle);
1067+
IcebergTableHandle table = (IcebergTableHandle) tableHandle;
10661068
verifyTableVersionForUpdate(table);
10671069
Table icebergTable = catalog.loadTable(session, table.getSchemaTableName());
10681070
Optional<String> providedTableLocation = getTableLocation(tableMetadata.getProperties());

plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7629,6 +7629,8 @@ public void testCorruptedTableLocation()
76297629
assertQueryFails("SELECT 1 FROM " + tableName + " WHERE false", "Metadata not found in metadata location for table " + schemaTableName);
76307630
assertQueryFails("SHOW CREATE TABLE " + tableName, "Metadata not found in metadata location for table " + schemaTableName);
76317631
assertQueryFails("CREATE TABLE a_new_table (LIKE " + tableName + " EXCLUDING PROPERTIES)", "Metadata not found in metadata location for table " + schemaTableName);
7632+
assertQueryFails("CREATE OR REPLACE TABLE " + tableName + " (id INT, country VARCHAR, independence ROW(month VARCHAR, year INT))", "Metadata not found in metadata location for table " + schemaTableName);
7633+
assertQueryFails("CREATE OR REPLACE TABLE " + tableName + " AS SELECT 1 x, 'IRELAND' y", "Metadata not found in metadata location for table " + schemaTableName);
76327634
assertQueryFails("DESCRIBE " + tableName, "Metadata not found in metadata location for table " + schemaTableName);
76337635
assertQueryFails("SHOW COLUMNS FROM " + tableName, "Metadata not found in metadata location for table " + schemaTableName);
76347636
assertQueryFails("SHOW STATS FOR " + tableName, "Metadata not found in metadata location for table " + schemaTableName);

0 commit comments

Comments
 (0)