Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@
import static io.trino.plugin.iceberg.IcebergSessionProperties.getExpireSnapshotMinRetention;
import static io.trino.plugin.iceberg.IcebergSessionProperties.getRemoveOrphanFilesMinRetention;
import static io.trino.plugin.iceberg.IcebergSessionProperties.isExtendedStatisticsEnabled;
import static io.trino.plugin.iceberg.IcebergSessionProperties.isMergeManifestsOnWrite;
import static io.trino.plugin.iceberg.IcebergSessionProperties.isProjectionPushdownEnabled;
import static io.trino.plugin.iceberg.IcebergSessionProperties.isStatisticsEnabled;
import static io.trino.plugin.iceberg.IcebergTableProperties.FILE_FORMAT_PROPERTY;
Expand Down Expand Up @@ -803,7 +804,7 @@ public Optional<ConnectorOutputMetadata> finishInsert(ConnectorSession session,
icebergTable.schema().findType(field.sourceId())))
.toArray(Type[]::new);

AppendFiles appendFiles = transaction.newAppend();
AppendFiles appendFiles = isMergeManifestsOnWrite(session) ? transaction.newAppend() : transaction.newFastAppend();
ImmutableSet.Builder<String> writtenFiles = ImmutableSet.builder();
for (CommitTaskData task : commitTasks) {
DataFiles.Builder builder = DataFiles.builder(icebergTable.spec())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ public final class IcebergSessionProperties
private static final String MINIMUM_ASSIGNED_SPLIT_WEIGHT = "minimum_assigned_split_weight";
public static final String EXPIRE_SNAPSHOTS_MIN_RETENTION = "expire_snapshots_min_retention";
public static final String REMOVE_ORPHAN_FILES_MIN_RETENTION = "remove_orphan_files_min_retention";
private static final String MERGE_MANIFESTS_ON_WRITE = "merge_manifests_on_write";

private final List<PropertyMetadata<?>> sessionProperties;

Expand Down Expand Up @@ -258,6 +259,11 @@ public IcebergSessionProperties(
"Minimal retention period for remove_orphan_files procedure",
icebergConfig.getRemoveOrphanFilesMinRetention(),
false))
.add(booleanProperty(
MERGE_MANIFESTS_ON_WRITE,
"Compact manifest files when performing write operations",
true,
false))
.build();
}

Expand Down Expand Up @@ -428,4 +434,9 @@ public static double getMinimumAssignedSplitWeight(ConnectorSession session)
{
return session.getProperty(MINIMUM_ASSIGNED_SPLIT_WEIGHT, Double.class);
}

public static boolean isMergeManifestsOnWrite(ConnectorSession session)
{
return session.getProperty(MERGE_MANIFESTS_ON_WRITE, Boolean.class);
}
}