diff --git a/spark/v3.0/spark/src/main/java/org/apache/iceberg/spark/source/SparkTable.java b/spark/v3.0/spark/src/main/java/org/apache/iceberg/spark/source/SparkTable.java index 4031b89218d0..2db252decbf0 100644 --- a/spark/v3.0/spark/src/main/java/org/apache/iceberg/spark/source/SparkTable.java +++ b/spark/v3.0/spark/src/main/java/org/apache/iceberg/spark/source/SparkTable.java @@ -244,6 +244,10 @@ private boolean requiresRewrite(Filter filter, Schema schema, Set ident @Override public void deleteWhere(Filter[] filters) { + Preconditions.checkArgument( + snapshotId == null, + "Cannot delete from table at a specific snapshot: %s", snapshotId); + Expression deleteExpr = SparkFilters.convert(filters); if (deleteExpr == Expressions.alwaysFalse()) { diff --git a/spark/v3.0/spark/src/test/java/org/apache/iceberg/spark/sql/TestDeleteFrom.java b/spark/v3.0/spark/src/test/java/org/apache/iceberg/spark/sql/TestDeleteFrom.java index cce987a781c0..75b7653fdb46 100644 --- a/spark/v3.0/spark/src/test/java/org/apache/iceberg/spark/sql/TestDeleteFrom.java +++ b/spark/v3.0/spark/src/test/java/org/apache/iceberg/spark/sql/TestDeleteFrom.java @@ -72,6 +72,7 @@ public void testDeleteFromUnpartitionedTable() throws NoSuchTableException { 0L, scalarSql("SELECT count(1) FROM %s", tableName)); } + @Test public void testDeleteFromTableAtSnapshot() throws NoSuchTableException { Assume.assumeFalse( "Spark session catalog does not support extended table names",