diff --git a/.palantir/revapi.yml b/.palantir/revapi.yml index f21466470610..781cf369dff9 100644 --- a/.palantir/revapi.yml +++ b/.palantir/revapi.yml @@ -67,6 +67,9 @@ acceptedBreaks: justification: "Removing deprecated method" "1.1.0": org.apache.iceberg:iceberg-core: + - code: "java.class.removed" + old: "class org.apache.iceberg.rest.HTTPClientFactory" + justification: "Removing deprecations for 1.2.0" - code: "java.method.exception.checkedAdded" old: "method T com.fasterxml.jackson.databind.JsonDeserializer::deserialize(com.fasterxml.jackson.core.JsonParser,\ \ com.fasterxml.jackson.databind.DeserializationContext, T) throws java.io.IOException\ @@ -258,6 +261,99 @@ acceptedBreaks: \ T) throws java.io.IOException, com.fasterxml.jackson.core.JacksonException\ \ @ org.apache.iceberg.rest.RESTSerializers.UpdateRequirementDeserializer" justification: "False positive - JacksonException is a subclass of IOException" + - code: "java.method.removed" + old: "method org.apache.iceberg.io.CloseableIterable org.apache.iceberg.deletes.Deletes::filterDeleted(org.apache.iceberg.io.CloseableIterable,\ + \ java.util.function.Predicate)" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method boolean org.apache.iceberg.BaseTableScan::colStats() @ org.apache.iceberg.AllDataFilesTable.AllDataFilesTableScan" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method boolean org.apache.iceberg.BaseTableScan::colStats() @ org.apache.iceberg.AllDeleteFilesTable.AllDeleteFilesTableScan" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method boolean org.apache.iceberg.BaseTableScan::colStats() @ org.apache.iceberg.AllFilesTable.AllFilesTableScan" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method boolean org.apache.iceberg.BaseTableScan::colStats() @ org.apache.iceberg.AllManifestsTable.AllManifestsTableScan" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method boolean org.apache.iceberg.BaseTableScan::colStats() @ org.apache.iceberg.DataFilesTable.DataFilesTableScan" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method boolean org.apache.iceberg.BaseTableScan::colStats() @ org.apache.iceberg.DataTableScan" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method boolean org.apache.iceberg.BaseTableScan::colStats() @ org.apache.iceberg.DeleteFilesTable.DeleteFilesTableScan" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method boolean org.apache.iceberg.BaseTableScan::colStats() @ org.apache.iceberg.FilesTable.FilesTableScan" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method java.lang.String[] org.apache.iceberg.hadoop.Util::blockLocations(org.apache.iceberg.io.FileIO,\ + \ org.apache.iceberg.CombinedScanTask)" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method java.util.List org.apache.iceberg.BaseReplacePartitions::apply(org.apache.iceberg.TableMetadata)" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method java.util.List org.apache.iceberg.BaseRewriteManifests::apply(org.apache.iceberg.TableMetadata)" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method java.util.List org.apache.iceberg.MergingSnapshotProducer::apply(org.apache.iceberg.TableMetadata)\ + \ @ org.apache.iceberg.BaseOverwriteFiles" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method java.util.List org.apache.iceberg.MergingSnapshotProducer::apply(org.apache.iceberg.TableMetadata)\ + \ @ org.apache.iceberg.StreamingDelete" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method java.util.Map org.apache.iceberg.util.PartitionUtil::constantsMap(org.apache.iceberg.FileScanTask)" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method java.util.Map org.apache.iceberg.util.PartitionUtil::constantsMap(org.apache.iceberg.FileScanTask,\ + \ java.util.function.BiFunction)" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method java.util.Map org.apache.iceberg.util.PartitionUtil::constantsMap(org.apache.iceberg.FileScanTask,\ + \ org.apache.iceberg.types.Types.StructType, java.util.function.BiFunction)" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method void org.apache.iceberg.BaseReplacePartitions::validate(org.apache.iceberg.TableMetadata)" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method void org.apache.iceberg.ManifestReader>>::(org.apache.iceberg.io.InputFile,\ + \ java.util.Map, org.apache.iceberg.InheritableMetadata,\ + \ org.apache.iceberg.ManifestReader.FileType)" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method void org.apache.iceberg.ManifestWriter>>::delete(F)" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method void org.apache.iceberg.ManifestWriter>>::existing(F, long, long)" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method void org.apache.iceberg.SnapshotProducer::validate(org.apache.iceberg.TableMetadata)\ + \ @ org.apache.iceberg.BaseOverwriteFiles" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method void org.apache.iceberg.SnapshotProducer::validate(org.apache.iceberg.TableMetadata)\ + \ @ org.apache.iceberg.BaseRewriteManifests" + justification: "Removing deprecations for 1.2.0" + - code: "java.method.removed" + old: "method void org.apache.iceberg.SnapshotProducer::validate(org.apache.iceberg.TableMetadata)\ + \ @ org.apache.iceberg.StreamingDelete" + justification: "Removing deprecations for 1.2.0" + org.apache.iceberg:iceberg-orc: + - code: "java.method.removed" + old: "method org.apache.iceberg.orc.ORC.WriteBuilder org.apache.iceberg.orc.ORC.WriteBuilder::config(java.lang.String,\ + \ java.lang.String)" + justification: "Removing deprecations for 1.2.0" apache-iceberg-0.14.0: org.apache.iceberg:iceberg-api: - code: "java.class.defaultSerializationChanged" diff --git a/core/src/main/java/org/apache/iceberg/BaseReplacePartitions.java b/core/src/main/java/org/apache/iceberg/BaseReplacePartitions.java index 053ced8d37b7..dd44505e9d39 100644 --- a/core/src/main/java/org/apache/iceberg/BaseReplacePartitions.java +++ b/core/src/main/java/org/apache/iceberg/BaseReplacePartitions.java @@ -79,20 +79,6 @@ public ReplacePartitions validateNoConflictingData() { return this; } - /** - * Validate the current metadata. - * - *

Child operations can override this to add custom validation. - * - * @param currentMetadata current table metadata to validate - * @deprecated Will be removed in 1.2.0, use {@link SnapshotProducer#validate(TableMetadata, - * Snapshot)}. - */ - @Deprecated - public void validate(TableMetadata currentMetadata) { - super.validate(currentMetadata); - } - @Override public void validate(TableMetadata currentMetadata, Snapshot snapshot) { if (validateConflictingData) { @@ -114,20 +100,6 @@ public void validate(TableMetadata currentMetadata, Snapshot snapshot) { } } - /** - * Apply the update's changes to the base table metadata and return the new manifest list. - * - * @param base the base table metadata to apply changes to - * @return a manifest list for the new snapshot. - * @deprecated Will be removed in 1.2.0, use {@link BaseReplacePartitions#apply(TableMetadata, - * Snapshot)}. - */ - @Deprecated - @Override - public List apply(TableMetadata base) { - return super.apply(base); - } - @Override public List apply(TableMetadata base, Snapshot snapshot) { if (dataSpec().fields().size() <= 0) { diff --git a/core/src/main/java/org/apache/iceberg/BaseRewriteManifests.java b/core/src/main/java/org/apache/iceberg/BaseRewriteManifests.java index 28c2c6588f28..54bf3c6e44c4 100644 --- a/core/src/main/java/org/apache/iceberg/BaseRewriteManifests.java +++ b/core/src/main/java/org/apache/iceberg/BaseRewriteManifests.java @@ -173,20 +173,6 @@ private ManifestFile copyManifest(ManifestFile manifest) { summaryBuilder); } - /** - * Apply the update's changes to the base table metadata and return the new manifest list. - * - * @param base the base table metadata to apply changes to - * @return a manifest list for the new snapshot. - * @deprecated Will be removed in 1.2.0, use {@link BaseRewriteManifests#apply(TableMetadata, - * Snapshot)}. - */ - @Deprecated - @Override - public List apply(TableMetadata base) { - return super.apply(base); - } - @Override public List apply(TableMetadata base, Snapshot snapshot) { List currentManifests = base.currentSnapshot().dataManifests(ops.io()); diff --git a/core/src/main/java/org/apache/iceberg/BaseTableScan.java b/core/src/main/java/org/apache/iceberg/BaseTableScan.java index ba25467f7890..428d20c05173 100644 --- a/core/src/main/java/org/apache/iceberg/BaseTableScan.java +++ b/core/src/main/java/org/apache/iceberg/BaseTableScan.java @@ -61,16 +61,6 @@ protected Long snapshotId() { return context().snapshotId(); } - /** - * @return whether column stats are returned. - * @deprecated Will be removed in 1.2.0, use {@link TableScanContext#returnColumnStats()} - * directly. - */ - @Deprecated - protected boolean colStats() { - return context().returnColumnStats(); - } - protected Map options() { return context().options(); } diff --git a/core/src/main/java/org/apache/iceberg/FastAppend.java b/core/src/main/java/org/apache/iceberg/FastAppend.java index 9e7a7e53e795..5e5e5128411a 100644 --- a/core/src/main/java/org/apache/iceberg/FastAppend.java +++ b/core/src/main/java/org/apache/iceberg/FastAppend.java @@ -141,19 +141,6 @@ private ManifestFile copyManifest(ManifestFile manifest) { summaryBuilder); } - /** - * Apply the update's changes to the base table metadata and return the new manifest list. - * - * @param base the base table metadata to apply changes to - * @return a manifest list for the new snapshot. - * @deprecated Will be removed in 1.2.0, use {@link FastAppend#apply(TableMetadata, Snapshot)}. - */ - @Deprecated - @Override - public List apply(TableMetadata base) { - return super.apply(base); - } - @Override public List apply(TableMetadata base, Snapshot snapshot) { List newManifests = Lists.newArrayList(); diff --git a/core/src/main/java/org/apache/iceberg/GenericManifestEntry.java b/core/src/main/java/org/apache/iceberg/GenericManifestEntry.java index 45457760d815..96a475881dab 100644 --- a/core/src/main/java/org/apache/iceberg/GenericManifestEntry.java +++ b/core/src/main/java/org/apache/iceberg/GenericManifestEntry.java @@ -30,7 +30,6 @@ class GenericManifestEntry> private Status status = Status.EXISTING; private Long snapshotId = null; private Long dataSequenceNumber = null; - private Long sequenceNumber = null; private Long fileSequenceNumber = null; private F file = null; @@ -47,7 +46,6 @@ private GenericManifestEntry(GenericManifestEntry toCopy, boolean fullCopy) { this.status = toCopy.status; this.snapshotId = toCopy.snapshotId; this.dataSequenceNumber = toCopy.dataSequenceNumber; - this.sequenceNumber = toCopy.sequenceNumber; this.fileSequenceNumber = toCopy.fileSequenceNumber; this.file = toCopy.file().copy(fullCopy); } @@ -62,7 +60,6 @@ ManifestEntry wrapExisting( this.status = Status.EXISTING; this.snapshotId = newSnapshotId; this.dataSequenceNumber = newDataSequenceNumber; - this.sequenceNumber = newDataSequenceNumber; this.fileSequenceNumber = newFileSequenceNumber; this.file = newFile; return this; @@ -76,7 +73,6 @@ ManifestEntry wrapAppend(Long newSnapshotId, Long newDataSequenceNumber, F ne this.status = Status.ADDED; this.snapshotId = newSnapshotId; this.dataSequenceNumber = newDataSequenceNumber; - this.sequenceNumber = newDataSequenceNumber; this.fileSequenceNumber = null; this.file = newFile; return this; @@ -92,7 +88,6 @@ ManifestEntry wrapDelete( this.status = Status.DELETED; this.snapshotId = newSnapshotId; this.dataSequenceNumber = newDataSequenceNumber; - this.sequenceNumber = null; this.fileSequenceNumber = newFileSequenceNumber; this.file = newFile; return this; @@ -115,15 +110,6 @@ public Long dataSequenceNumber() { return dataSequenceNumber; } - @Override - public Long sequenceNumber() { - if (sequenceNumber != null) { - return sequenceNumber; - } else { - return isLive() ? dataSequenceNumber : null; - } - } - @Override public Long fileSequenceNumber() { return fileSequenceNumber; @@ -152,14 +138,7 @@ public void setSnapshotId(long newSnapshotId) { @Override public void setDataSequenceNumber(long newDataSequenceNumber) { - // always reset sequenceNumber whenever dataSequenceNumber is changed this.dataSequenceNumber = newDataSequenceNumber; - this.sequenceNumber = null; - } - - @Override - public void setSequenceNumber(long newSequenceNumber) { - this.sequenceNumber = newSequenceNumber; } @Override @@ -178,9 +157,7 @@ public void put(int i, Object v) { this.snapshotId = (Long) v; return; case 2: - // always reset sequenceNumber whenever dataSequenceNumber is changed this.dataSequenceNumber = (Long) v; - this.sequenceNumber = null; return; case 3: this.fileSequenceNumber = (Long) v; diff --git a/core/src/main/java/org/apache/iceberg/InheritableMetadataFactory.java b/core/src/main/java/org/apache/iceberg/InheritableMetadataFactory.java index 789f325d8c08..82985f08ec0b 100644 --- a/core/src/main/java/org/apache/iceberg/InheritableMetadataFactory.java +++ b/core/src/main/java/org/apache/iceberg/InheritableMetadataFactory.java @@ -71,10 +71,6 @@ public > ManifestEntry apply(ManifestEntry manife manifestEntry.setDataSequenceNumber(sequenceNumber); } - if (manifestEntry.sequenceNumber() == null) { - manifestEntry.setSequenceNumber(sequenceNumber); - } - // in v1 tables, the file sequence number is not persisted and can be safely defaulted to 0 // in v2 tables, the file sequence number should be inherited iff the entry status is ADDED if (manifestEntry.fileSequenceNumber() == null diff --git a/core/src/main/java/org/apache/iceberg/ManifestEntry.java b/core/src/main/java/org/apache/iceberg/ManifestEntry.java index bf319d688fe1..3eeb5407ab20 100644 --- a/core/src/main/java/org/apache/iceberg/ManifestEntry.java +++ b/core/src/main/java/org/apache/iceberg/ManifestEntry.java @@ -103,27 +103,6 @@ default boolean isLive() { */ void setDataSequenceNumber(long dataSequenceNumber); - /** - * Returns the data sequence number of the file if the entry status is ADDED or EXISTING. - * Otherwise, returns the sequence number of the snapshot in which the file was removed. - * - *

Note that usage of this method should be avoided as it behaves inconsistently for different - * entry statutes. Use {@link #dataSequenceNumber()} instead. - * - * @deprecated since 1.0.0, will be removed in 1.1.0; use {@link #dataSequenceNumber()} instead. - */ - @Deprecated - Long sequenceNumber(); - - /** - * Set the sequence number for this manifest entry. - * - * @param sequenceNumber a sequence number - * @deprecated since 1.0.0, will be removed in 1.1.0; use the data sequence number instead. - */ - @Deprecated - void setSequenceNumber(long sequenceNumber); - /** * Returns the file sequence number. * diff --git a/core/src/main/java/org/apache/iceberg/ManifestReader.java b/core/src/main/java/org/apache/iceberg/ManifestReader.java index ef2549720a73..4ccf9451d108 100644 --- a/core/src/main/java/org/apache/iceberg/ManifestReader.java +++ b/core/src/main/java/org/apache/iceberg/ManifestReader.java @@ -98,38 +98,6 @@ private String fileClass() { private Evaluator lazyEvaluator = null; private InclusiveMetricsEvaluator lazyMetricsEvaluator = null; - /** - * @deprecated Will be removed in 1.2.0, use {@link ManifestReader#ManifestReader(InputFile, int, - * Map, InheritableMetadata, FileType)}. - */ - @Deprecated - protected ManifestReader( - InputFile file, - Map specsById, - InheritableMetadata inheritableMetadata, - FileType content) { - this.file = file; - this.inheritableMetadata = inheritableMetadata; - this.content = content; - - Map metadata = readMetadata(file); - int specId = TableMetadata.INITIAL_SPEC_ID; - String specProperty = metadata.get("partition-spec-id"); - if (specProperty != null) { - specId = Integer.parseInt(specProperty); - } - - if (specsById != null) { - this.spec = specsById.get(specId); - } else { - Schema schema = SchemaParser.fromJson(metadata.get("schema")); - this.spec = - PartitionSpecParser.fromJsonFields(schema, specId, metadata.get("partition-spec")); - } - - this.fileSchema = new Schema(DataFile.getType(spec.partitionType()).fields()); - } - protected ManifestReader( InputFile file, int specId, diff --git a/core/src/main/java/org/apache/iceberg/ManifestWriter.java b/core/src/main/java/org/apache/iceberg/ManifestWriter.java index 52cf1a626169..4865ccfc3b2d 100644 --- a/core/src/main/java/org/apache/iceberg/ManifestWriter.java +++ b/core/src/main/java/org/apache/iceberg/ManifestWriter.java @@ -132,23 +132,6 @@ void add(ManifestEntry entry) { } } - /** - * Add an existing entry for a file. - * - *

The original data sequence number and snapshot ID, which were assigned at commit, must be - * preserved when adding an existing entry. - * - * @param existingFile a file - * @param fileSnapshotId snapshot ID when the data file was added to the table - * @param dataSequenceNumber a data sequence number of the file (assigned when the file was added) - * @deprecated since 1.1.0, will be removed in 1.2.0; use {@link #existing(ContentFile, long, - * long, Long)}. - */ - @Deprecated - public void existing(F existingFile, long fileSnapshotId, long dataSequenceNumber) { - addEntry(reused.wrapExisting(fileSnapshotId, dataSequenceNumber, null, existingFile)); - } - /** * Add an existing entry for a file. * @@ -170,22 +153,6 @@ void existing(ManifestEntry entry) { addEntry(reused.wrapExisting(entry)); } - /** - * Add a delete entry for a file. - * - *

This method must not be used as the original data sequence number of the file must be - * preserved when the file is marked as deleted. - * - * @param deletedFile a file - * @deprecated since 1.1.0, will be removed in 1.2.0; use {@link #delete(ContentFile, long, - * Long)}. - */ - @Deprecated - public void delete(F deletedFile) { - throw new UnsupportedOperationException( - "Can't add a delete entry without a data sequence number"); - } - /** * Add a delete entry for a file. * diff --git a/core/src/main/java/org/apache/iceberg/MergingSnapshotProducer.java b/core/src/main/java/org/apache/iceberg/MergingSnapshotProducer.java index 0d47157dadba..e0452e0be239 100644 --- a/core/src/main/java/org/apache/iceberg/MergingSnapshotProducer.java +++ b/core/src/main/java/org/apache/iceberg/MergingSnapshotProducer.java @@ -758,20 +758,6 @@ protected Map summary() { return summaryBuilder.build(); } - /** - * Apply the update's changes to the base table metadata and return the new manifest list. - * - * @param base the base table metadata to apply changes to - * @return a manifest list for the new snapshot. - * @deprecated Will be removed in 1.2.0, use {@link MergingSnapshotProducer#apply(TableMetadata, - * Snapshot)}. - */ - @Deprecated - @Override - public List apply(TableMetadata base) { - return super.apply(base); - } - @Override public List apply(TableMetadata base, Snapshot snapshot) { // filter any existing manifests diff --git a/core/src/main/java/org/apache/iceberg/SnapshotProducer.java b/core/src/main/java/org/apache/iceberg/SnapshotProducer.java index 92ae95b377b9..0e8732ea63f9 100644 --- a/core/src/main/java/org/apache/iceberg/SnapshotProducer.java +++ b/core/src/main/java/org/apache/iceberg/SnapshotProducer.java @@ -157,20 +157,6 @@ public ThisT deleteWith(Consumer deleteCallback) { */ protected abstract String operation(); - /** - * Validate the current metadata. - * - *

Child operations can override this to add custom validation. - * - * @param currentMetadata current table metadata to validate - * @deprecated Will be removed in 1.2.0, use {@link SnapshotProducer#validate(TableMetadata, - * Snapshot)}. - */ - @Deprecated - protected void validate(TableMetadata currentMetadata) { - validate(currentMetadata, base.currentSnapshot()); - } - /** * Validate the current metadata. * @@ -181,19 +167,6 @@ protected void validate(TableMetadata currentMetadata) { */ protected void validate(TableMetadata currentMetadata, Snapshot snapshot) {} - /** - * Apply the update's changes to the base table metadata and return the new manifest list. - * - * @param metadataToUpdate the base table metadata to apply changes to - * @return a manifest list for the new snapshot. - * @deprecated Will be removed in 1.2.0, use {@link SnapshotProducer#apply(TableMetadata, - * Snapshot)}. - */ - @Deprecated - protected List apply(TableMetadata metadataToUpdate) { - return apply(metadataToUpdate, base.currentSnapshot()); - } - /** * Apply the update's changes to the given metadata and snapshot. Return the new manifest list. * diff --git a/core/src/main/java/org/apache/iceberg/TableProperties.java b/core/src/main/java/org/apache/iceberg/TableProperties.java index a0037271aadf..c94376817b76 100644 --- a/core/src/main/java/org/apache/iceberg/TableProperties.java +++ b/core/src/main/java/org/apache/iceberg/TableProperties.java @@ -343,15 +343,15 @@ private TableProperties() {} public static final String MERGE_MODE_DEFAULT = RowLevelOperationMode.COPY_ON_WRITE.modeName(); /** - * @deprecated will be removed in 0.14.0, the cardinality check is always performed starting from - * 0.13.0. + * @deprecated will be removed once Spark 3.1 support is dropped, the cardinality check is always + * performed starting from 0.13.0. */ @Deprecated public static final String MERGE_CARDINALITY_CHECK_ENABLED = "write.merge.cardinality-check.enabled"; /** - * @deprecated will be removed in 0.14.0, the cardinality check is always performed starting from - * 0.13.0. + * @deprecated will be removed once Spark 3.1 support is dropped, the cardinality check is always + * performed starting from 0.13.0. */ @Deprecated public static final boolean MERGE_CARDINALITY_CHECK_ENABLED_DEFAULT = true; diff --git a/core/src/main/java/org/apache/iceberg/V1Metadata.java b/core/src/main/java/org/apache/iceberg/V1Metadata.java index d45d7770fed4..532b0941cd3d 100644 --- a/core/src/main/java/org/apache/iceberg/V1Metadata.java +++ b/core/src/main/java/org/apache/iceberg/V1Metadata.java @@ -295,16 +295,6 @@ public void setDataSequenceNumber(long dataSequenceNumber) { wrapped.setDataSequenceNumber(dataSequenceNumber); } - @Override - public Long sequenceNumber() { - return wrapped.sequenceNumber(); - } - - @Override - public void setSequenceNumber(long sequenceNumber) { - wrapped.setSequenceNumber(sequenceNumber); - } - @Override public Long fileSequenceNumber() { return wrapped.fileSequenceNumber(); diff --git a/core/src/main/java/org/apache/iceberg/V2Metadata.java b/core/src/main/java/org/apache/iceberg/V2Metadata.java index 64ab0fe94bd1..810e888f50ba 100644 --- a/core/src/main/java/org/apache/iceberg/V2Metadata.java +++ b/core/src/main/java/org/apache/iceberg/V2Metadata.java @@ -363,16 +363,6 @@ public void setDataSequenceNumber(long dataSequenceNumber) { wrapped.setDataSequenceNumber(dataSequenceNumber); } - @Override - public Long sequenceNumber() { - return wrapped.sequenceNumber(); - } - - @Override - public void setSequenceNumber(long sequenceNumber) { - wrapped.setSequenceNumber(sequenceNumber); - } - @Override public Long fileSequenceNumber() { return wrapped.fileSequenceNumber(); diff --git a/core/src/main/java/org/apache/iceberg/deletes/Deletes.java b/core/src/main/java/org/apache/iceberg/deletes/Deletes.java index 7fc118d17a03..beec06e045d3 100644 --- a/core/src/main/java/org/apache/iceberg/deletes/Deletes.java +++ b/core/src/main/java/org/apache/iceberg/deletes/Deletes.java @@ -83,21 +83,6 @@ public static CloseableIterable markDeleted( }); } - /** - * Returns the remaining rows (the ones that are not deleted), while counting the deleted ones. - * - * @param rows the rows to process - * @param isDeleted a predicate that determines if a row is deleted - * @return the processed rows - * @deprecated Will be removed in 1.2.0, use {@link Deletes#filterDeleted(CloseableIterable, - * Predicate, DeleteCounter)}. - */ - @Deprecated - public static CloseableIterable filterDeleted( - CloseableIterable rows, Predicate isDeleted) { - return filterDeleted(rows, isDeleted, new DeleteCounter()); - } - /** * Returns the remaining rows (the ones that are not deleted), while counting the deleted ones. * diff --git a/core/src/main/java/org/apache/iceberg/hadoop/Util.java b/core/src/main/java/org/apache/iceberg/hadoop/Util.java index ebe862cfcdb0..8ff792920af4 100644 --- a/core/src/main/java/org/apache/iceberg/hadoop/Util.java +++ b/core/src/main/java/org/apache/iceberg/hadoop/Util.java @@ -72,14 +72,6 @@ public static String[] blockLocations(CombinedScanTask task, Configuration conf) return locationSets.toArray(new String[0]); } - /** - * @deprecated Will be removed in 1.2.0, use {@link Util#blockLocations(FileIO, ContentScanTask)}. - */ - @Deprecated - public static String[] blockLocations(FileIO io, CombinedScanTask task) { - return blockLocations(io, (ScanTaskGroup) task); - } - public static String[] blockLocations(FileIO io, ScanTaskGroup taskGroup) { Set locations = Sets.newHashSet(); diff --git a/core/src/main/java/org/apache/iceberg/rest/HTTPClientFactory.java b/core/src/main/java/org/apache/iceberg/rest/HTTPClientFactory.java deleted file mode 100644 index 34b3c5c0bea8..000000000000 --- a/core/src/main/java/org/apache/iceberg/rest/HTTPClientFactory.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.iceberg.rest; - -import java.util.Map; -import java.util.function.Function; -import org.apache.iceberg.CatalogProperties; -import org.apache.iceberg.IcebergBuild; -import org.apache.iceberg.relocated.com.google.common.annotations.VisibleForTesting; -import org.apache.iceberg.relocated.com.google.common.base.Preconditions; - -/** - * Takes in the full configuration for the {@link RESTSessionCatalog}, which should already have - * called the server's initial configuration route. Using the merged configuration, an instance of - * {@link RESTClient} is obtained that can be used with the RESTCatalog. - * - * @deprecated Will be removed in 1.2.0. Use {@link HTTPClient#builder()} directly. - */ -@Deprecated -public class HTTPClientFactory implements Function, RESTClient> { - - @VisibleForTesting static final String CLIENT_VERSION_HEADER = "X-Client-Version"; - - @VisibleForTesting - static final String CLIENT_GIT_COMMIT_SHORT_HEADER = "X-Client-Git-Commit-Short"; - - @Override - public RESTClient apply(Map properties) { - Preconditions.checkArgument(properties != null, "Invalid configuration: null"); - Preconditions.checkArgument( - properties.containsKey(CatalogProperties.URI), "REST Catalog server URI is required"); - - String baseURI = properties.get(CatalogProperties.URI).trim(); - String clientVersion = IcebergBuild.fullVersion(); - String gitCommitShortId = IcebergBuild.gitCommitShortId(); - - return HTTPClient.builder() - .withHeader(CLIENT_VERSION_HEADER, clientVersion) - .withHeader(CLIENT_GIT_COMMIT_SHORT_HEADER, gitCommitShortId) - .uri(baseURI) - .build(); - } -} diff --git a/core/src/main/java/org/apache/iceberg/util/PartitionUtil.java b/core/src/main/java/org/apache/iceberg/util/PartitionUtil.java index 3671bf9bf155..af2f79c3c6f9 100644 --- a/core/src/main/java/org/apache/iceberg/util/PartitionUtil.java +++ b/core/src/main/java/org/apache/iceberg/util/PartitionUtil.java @@ -22,8 +22,6 @@ import java.util.Map; import java.util.function.BiFunction; import org.apache.iceberg.ContentScanTask; -import org.apache.iceberg.DataFile; -import org.apache.iceberg.FileScanTask; import org.apache.iceberg.MetadataColumns; import org.apache.iceberg.PartitionField; import org.apache.iceberg.PartitionSpec; @@ -31,41 +29,10 @@ import org.apache.iceberg.relocated.com.google.common.collect.Maps; import org.apache.iceberg.types.Type; import org.apache.iceberg.types.Types; -import org.apache.iceberg.types.Types.StructType; public class PartitionUtil { private PartitionUtil() {} - /** - * @deprecated Will be removed in 1.2.0, use {@link PartitionUtil#constantsMap(ContentScanTask)}. - */ - @Deprecated - public static Map constantsMap(FileScanTask task) { - return constantsMap((ContentScanTask) task); - } - - /** - * @deprecated Will be removed in 1.2.0, use {@link PartitionUtil#constantsMap(ContentScanTask, - * BiFunction)}. - */ - @Deprecated - public static Map constantsMap( - FileScanTask task, BiFunction convertConstant) { - return constantsMap((ContentScanTask) task, convertConstant); - } - - /** - * @deprecated Will be removed in 1.2.0, use {@link PartitionUtil#constantsMap(ContentScanTask, - * StructType, BiFunction)}. - */ - @Deprecated - public static Map constantsMap( - FileScanTask task, - Types.StructType partitionType, - BiFunction convertConstant) { - return constantsMap((ContentScanTask) task, partitionType, convertConstant); - } - public static Map constantsMap(ContentScanTask task) { return constantsMap(task, null, (type, constant) -> constant); } diff --git a/core/src/test/java/org/apache/iceberg/TableTestBase.java b/core/src/test/java/org/apache/iceberg/TableTestBase.java index 4828c2c0c6f6..e118b4200041 100644 --- a/core/src/test/java/org/apache/iceberg/TableTestBase.java +++ b/core/src/test/java/org/apache/iceberg/TableTestBase.java @@ -427,22 +427,15 @@ void validateSnapshot(Snapshot old, Snapshot snap, Long sequenceNumber, DataFile if (sequenceNumber != null) { V1Assert.assertEquals( "Data sequence number should default to 0", 0, entry.dataSequenceNumber().longValue()); - V1Assert.assertEquals( - "Sequence number should default to 0", 0, entry.sequenceNumber().longValue()); V2Assert.assertEquals( "Data sequence number should match expected", sequenceNumber, entry.dataSequenceNumber()); - if (entry.isLive()) { - V2Assert.assertEquals( - "Sequence number should match expected", sequenceNumber, entry.sequenceNumber()); - } else { - V2Assert.assertEquals( - "Sequence number should match expected", - snap.sequenceNumber(), - entry.sequenceNumber().longValue()); - } + V2Assert.assertEquals( + "Sequence number should match expected", + snap.sequenceNumber(), + entry.dataSequenceNumber().longValue()); } Assert.assertEquals("Path should match expected", newPaths.next(), file.path().toString()); Assert.assertEquals("File's snapshot ID should match", id, (long) entry.snapshotId()); @@ -514,25 +507,16 @@ void validateManifest( if (dataSeqs != null) { V1Assert.assertEquals( "Data sequence number should default to 0", 0, entry.dataSequenceNumber().longValue()); - V1Assert.assertEquals( - "Sequence number should default to 0", 0, entry.sequenceNumber().longValue()); Long expectedSequenceNumber = dataSeqs.next(); V2Assert.assertEquals( "Data sequence number should match expected", expectedSequenceNumber, entry.dataSequenceNumber()); - if (entry.isLive()) { - V2Assert.assertEquals( - "Sequence number should match expected", - expectedSequenceNumber, - entry.sequenceNumber()); - } else { - V2Assert.assertEquals( - "Sequence number should match expected", - manifest.sequenceNumber(), - entry.sequenceNumber().longValue()); - } + V2Assert.assertEquals( + "Sequence number should match expected", + expectedSequenceNumber, + entry.dataSequenceNumber()); } if (fileSeqs != null) { V1Assert.assertEquals( @@ -565,25 +549,16 @@ void validateDeleteManifest( if (dataSeqs != null) { V1Assert.assertEquals( "Data sequence number should default to 0", 0, entry.dataSequenceNumber().longValue()); - V1Assert.assertEquals( - "Sequence number should default to 0", 0, entry.sequenceNumber().longValue()); Long expectedSequenceNumber = dataSeqs.next(); V2Assert.assertEquals( "Data sequence number should match expected", expectedSequenceNumber, entry.dataSequenceNumber()); - if (entry.isLive()) { - V2Assert.assertEquals( - "Sequence number should match expected", - expectedSequenceNumber, - entry.sequenceNumber()); - } else { - V2Assert.assertEquals( - "Sequence number should match expected", - manifest.sequenceNumber(), - entry.sequenceNumber().longValue()); - } + V2Assert.assertEquals( + "Sequence number should match expected", + expectedSequenceNumber, + entry.dataSequenceNumber()); } if (fileSeqs != null) { V1Assert.assertEquals( diff --git a/core/src/test/java/org/apache/iceberg/TestManifestWriter.java b/core/src/test/java/org/apache/iceberg/TestManifestWriter.java index ac5bc521b565..245ad1b8176c 100644 --- a/core/src/test/java/org/apache/iceberg/TestManifestWriter.java +++ b/core/src/test/java/org/apache/iceberg/TestManifestWriter.java @@ -115,10 +115,6 @@ public void testWriteManifestWithSequenceNumber() throws IOException { "Custom data sequence number should be used for all manifest entries", 1000L, (long) entry.dataSequenceNumber()); - Assert.assertEquals( - "Custom sequence number should be used for all manifest entries", - 1000L, - (long) entry.sequenceNumber()); Assert.assertEquals( "File sequence number must be unassigned", ManifestWriter.UNASSIGNED_SEQ, diff --git a/core/src/test/java/org/apache/iceberg/TestManifestWriterVersions.java b/core/src/test/java/org/apache/iceberg/TestManifestWriterVersions.java index 8f9cff01967b..dc0121859e38 100644 --- a/core/src/test/java/org/apache/iceberg/TestManifestWriterVersions.java +++ b/core/src/test/java/org/apache/iceberg/TestManifestWriterVersions.java @@ -218,7 +218,6 @@ void checkEntry( Assert.assertEquals("Snapshot ID", (Long) SNAPSHOT_ID, entry.snapshotId()); Assert.assertEquals( "Data sequence number", expectedDataSequenceNumber, entry.dataSequenceNumber()); - Assert.assertEquals("Sequence number", expectedDataSequenceNumber, entry.sequenceNumber()); Assert.assertEquals( "File sequence number", expectedFileSequenceNumber, entry.fileSequenceNumber()); checkDataFile(entry.file(), content); @@ -229,7 +228,6 @@ void checkRewrittenEntry( Assert.assertEquals("Status", ManifestEntry.Status.EXISTING, entry.status()); Assert.assertEquals("Snapshot ID", (Long) SNAPSHOT_ID, entry.snapshotId()); Assert.assertEquals("Data sequence number", expectedSequenceNumber, entry.dataSequenceNumber()); - Assert.assertEquals("Sequence number", expectedSequenceNumber, entry.sequenceNumber()); checkDataFile(entry.file(), content); } diff --git a/core/src/test/java/org/apache/iceberg/TestRewriteManifests.java b/core/src/test/java/org/apache/iceberg/TestRewriteManifests.java index e4ca284c1afb..f6717345ccb5 100644 --- a/core/src/test/java/org/apache/iceberg/TestRewriteManifests.java +++ b/core/src/test/java/org/apache/iceberg/TestRewriteManifests.java @@ -913,7 +913,7 @@ public void testManifestReplacementCombinedWithRewriteConcurrentDelete() throws ManifestEntry entry = manifestEntry(ManifestEntry.Status.EXISTING, firstSnapshot.snapshotId(), FILE_A); // update the entry's sequence number or else it will be rejected by the writer - entry.setSequenceNumber(firstSnapshot.sequenceNumber()); + entry.setDataSequenceNumber(firstSnapshot.sequenceNumber()); ManifestFile newManifest = writeManifest("manifest-file-1.avro", entry); RewriteManifests rewriteManifests = diff --git a/orc/src/main/java/org/apache/iceberg/orc/ORC.java b/orc/src/main/java/org/apache/iceberg/orc/ORC.java index 5b2b877a97d4..7233fe731f68 100644 --- a/orc/src/main/java/org/apache/iceberg/orc/ORC.java +++ b/orc/src/main/java/org/apache/iceberg/orc/ORC.java @@ -131,19 +131,6 @@ public WriteBuilder metadata(String property, String value) { return this; } - /** - * Setting a specific configuration value for the writer. - * - * @param property The property to set - * @param value The value to set - * @return The resulting builder for chaining purposes - * @deprecated Please use #set(String, String) instead - */ - @Deprecated - public WriteBuilder config(String property, String value) { - return set(property, value); - } - public WriteBuilder set(String property, String value) { config.put(property, value); return this; diff --git a/spark/v3.3/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java b/spark/v3.3/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java index ab434b051f8b..7dc697f9d1ef 100644 --- a/spark/v3.3/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java +++ b/spark/v3.3/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java @@ -43,7 +43,6 @@ import org.apache.iceberg.io.InputFile; import org.apache.iceberg.parquet.Parquet; import org.apache.iceberg.parquet.ParquetUtil; -import org.apache.iceberg.parquet.ParquetWriteAdapter; import org.apache.iceberg.relocated.com.google.common.collect.ImmutableMap; import org.apache.iceberg.relocated.com.google.common.collect.Lists; import org.apache.iceberg.relocated.com.google.common.collect.Maps; @@ -144,16 +143,16 @@ public void testInt96TimestampProducedBySparkIsReadCorrectly() throws IOExceptio }); List rows = Lists.newArrayList(RandomData.generateSpark(schema, 10, 0L)); - try (FileAppender writer = - new ParquetWriteAdapter<>( - new NativeSparkWriterBuilder(outputFile) - .set("org.apache.spark.sql.parquet.row.attributes", sparkSchema.json()) - .set("spark.sql.parquet.writeLegacyFormat", "false") - .set("spark.sql.parquet.outputTimestampType", "INT96") - .set("spark.sql.parquet.fieldId.write.enabled", "true") - .build(), - MetricsConfig.getDefault())) { - writer.addAll(rows); + try (ParquetWriter writer = + new NativeSparkWriterBuilder(outputFile) + .set("org.apache.spark.sql.parquet.row.attributes", sparkSchema.json()) + .set("spark.sql.parquet.writeLegacyFormat", "false") + .set("spark.sql.parquet.outputTimestampType", "INT96") + .set("spark.sql.parquet.fieldId.write.enabled", "true") + .build()) { + for (InternalRow row : rows) { + writer.write(row); + } } InputFile parquetInputFile = Files.localInput(outputFilePath);