Repository navigation
Conversation
b50410f to
718ae34
Compare
Add TrackedFileAdapters.asManifestFile to wrap a DATA_MANIFEST or DELETE_MANIFEST TrackedFile as a ManifestFile. Closes apache#16227
718ae34 to
93368cb
Compare
wombatu-kun
left a comment
There was a problem hiding this comment.
Code looks correct: field delegation, equals/hashCode (consistent with GenericManifestFile), constructor preconditions, and the test coverage are all solid.
Non-blocking discussion point: partitionSpecId() throws UnsupportedOperationException. That is defensible since a v4 manifest is not bound to a single spec. But @rdblue pushed back on #16100 against these adapters exposing an invalid or arbitrary spec ID, so it may be worth confirming with reviewers that a throw is the intended contract for any future caller that reads partitionSpecId().
| NO_PARTITION, | ||
| 8L, | ||
| 2048L); | ||
| file.set(MANIFEST_INFO_ORDINAL, manifestInfo); |
There was a problem hiding this comment.
we can use the builder from @gaborkaszab 's PR: #16769
There was a problem hiding this comment.
Sounds good. I can make the change if #16769 gets merged first or do this as a followup PR if this gets merged first.
There was a problem hiding this comment.
FYI, in the meantime the builder got merged
gaborkaszab
left a comment
There was a problem hiding this comment.
Thank you for the PR, @anoopj !
I took a Quick Look and left some minor comment.
|
|
||
| private TrackedManifestFile(TrackedFile file) { | ||
| Preconditions.checkArgument( | ||
| file.tracking() != null, "Cannot create manifest file: no tracking"); |
There was a problem hiding this comment.
nit: other adapters don't check if tracking is null. Not sure we have to here. It's a required field anyway
| private TrackedManifestFile(TrackedFile file) { | ||
| Preconditions.checkArgument( | ||
| file.tracking() != null, "Cannot create manifest file: no tracking"); | ||
| Preconditions.checkArgument( |
There was a problem hiding this comment.
As per the spec proposal data seq num is 'Optional for leaf manifests, required for root.'. I think it's valid to have it as null here. Seems also optional in ManifestFile
There was a problem hiding this comment.
This PR is for root-level manifest tracking where null is truly an invalid state. We can either validate or just have it fail with an NPE.
Seems also optional in ManifestFile
It is required for a manifest file: ManifestFile.sequenceNumber() returns a primitive
There was a problem hiding this comment.
just to add on top of what Anoop said. this is for leaf manifest file entry (TrackedFile) in the root manifest file. Hence dataSequenceNumber should be required
There was a problem hiding this comment.
Thanks for the explanation @anoopj and @stevenzwu !
| } | ||
|
|
||
| @Override | ||
| public boolean equals(Object other) { |
There was a problem hiding this comment.
The other adapters don't override equals and hashCode. Is there a particular reason it's needed here?
There was a problem hiding this comment.
I'm trying to be consistent with the semantics of GenericManifestFile.
There was a problem hiding this comment.
Do we actually use equals and hashCode? We try to avoid implementing those methods where there are different interpretations of what "equality" might mean.
There was a problem hiding this comment.
I didn't add any code that uses it. I was trying to be consistent with the behavior of the GenericManifestFile which defines equality with the location. I have removed it.
stevenzwu
left a comment
There was a problem hiding this comment.
LGTM.
I will merge Gabor's TrackedFileBuilder once CI passed. then let's rebase this one and use the builder as applicable.
| private TrackedManifestFile(TrackedFile file) { | ||
| Preconditions.checkArgument( | ||
| file.tracking() != null, "Cannot create manifest file: no tracking"); | ||
| Preconditions.checkArgument( |
There was a problem hiding this comment.
just to add on top of what Anoop said. this is for leaf manifest file entry (TrackedFile) in the root manifest file. Hence dataSequenceNumber should be required
| private TrackedManifestFile(TrackedFile file) { | ||
| Preconditions.checkArgument( | ||
| file.tracking().dataSequenceNumber() != null, | ||
| "Cannot create manifest file: no data sequence number"); |
There was a problem hiding this comment.
Nit: I think we prefer the slightly more specific "Invalid data sequence number: null" because "no X" doesn't necessarily mean "x is null".
Also, even though the attempt is to create a manifest file, that's not the actual problem. It's debatable whether to include what is being attempted, "Cannot create manifest file", but I would opt to leave it out because that's clear from other context (that the check is in asManifestFile and the TrackedManifestFile constructor).
| @Override | ||
| public int partitionSpecId() { | ||
| throw new UnsupportedOperationException( | ||
| "Tracked manifests are not bound to a single partition spec"); |
There was a problem hiding this comment.
I don't think that it is correct to say "Tracked manifests": what is a "tracked" manifest and why is one from a manifest list not "tracked"?
I think it is better to say "v4 manifests are not bound to a single partition spec".
There was a problem hiding this comment.
Fixed. I was trying to avoid having too many v4 references.
| public ManifestContent content() { | ||
| return file.contentType() == FileContent.DATA_MANIFEST | ||
| ? ManifestContent.DATA | ||
| : ManifestContent.DELETES; |
There was a problem hiding this comment.
Minor: I think it is safer to avoid a dependency between this and the constructor's verification. I would recommend using a switch statement:
switch (file.contentType()) {
case DATA_MANIFEST:
return ManifestContent.DATA;
case DELETE_MANIFEST:
return ManifestContent.DELETES;
default:
throw new UnsupportedOperationException("Unsupported content type for manifests: " + file.contentType());
}| public boolean equals(Object other) { | ||
| if (this == other) { | ||
| return true; | ||
| } else if (!(other instanceof TrackedManifestFile)) { |
There was a problem hiding this comment.
I don't think that the implementation of GenericManifestFile is very helpful. It considers two files equal if they have the same path (which I think is reasonable) but it also excludes any implementation other than GenericManifestFile, which means that they aren't actually interchangeable as the interface suggests.
In addition, this creates a situation where a.equals(b) may be true, but b.equals(a) can be false for reasonable implementations.
I'd prefer to remove this and fix places where it is assumed or used. Good catch, @gaborkaszab!
| "Cannot create manifest file: no data sequence number"); | ||
| Preconditions.checkArgument( | ||
| file.tracking().snapshotId() != null, "Cannot create manifest file: no snapshot ID"); | ||
| Preconditions.checkArgument( |
There was a problem hiding this comment.
This also seems an internal invariant for TrackedFile. The new TrackedFileBuilder guarantees that manifestInfo is set for manifest entries.
There was a problem hiding this comment.
That makes sense. Removed.
| NO_PARTITION, | ||
| 8L, | ||
| 2048L); | ||
| file.set(MANIFEST_INFO_ORDINAL, manifestInfo); |
There was a problem hiding this comment.
FYI, in the meantime the builder got merged
| private TrackedManifestFile(TrackedFile file) { | ||
| Preconditions.checkArgument( | ||
| file.tracking() != null, "Cannot create manifest file: no tracking"); | ||
| Preconditions.checkArgument( |
There was a problem hiding this comment.
Thanks for the explanation @anoopj and @stevenzwu !
| void testManifestFileAdapterDelegation() { | ||
| Tracking tracking = createTracking(); | ||
| ManifestInfo manifestInfo = createManifestInfo(); | ||
| TrackedFileStruct file = |
There was a problem hiding this comment.
nit: Can we hide the construction of the input TrackedFile into a separate function? Like dataManifestFile() it could get ManifestInfo, FileContent, and/or Tracking parameters if that matters for the test.
There was a problem hiding this comment.
Done. extracted manifestBuilder(FileContent) / manifestFile(FileContent, ManifestInfo) and now tests build through them.
| } | ||
|
|
||
| @Test | ||
| void testManifestFileAdapterDelegation() { |
There was a problem hiding this comment.
nit: maybe parameterize the test for data + delete manifest. The testDeleteManifestContentMapsToDeletes test could be dropped then
# Conflicts: # core/src/test/java/org/apache/iceberg/TestTrackedFileAdapters.java
gaborkaszab
left a comment
There was a problem hiding this comment.
just some minor comments. Other than them, LGTM!
| .manifestInfo(manifestInfo) | ||
| .keyMetadata(ByteBuffer.wrap(new byte[] {7, 8, 9})) | ||
| .build(); | ||
| populateTrackingFields(file); |
There was a problem hiding this comment.
Just FYI: in the follow-up for the TrackedFileBuilder PR, we decided to drop populateTrackingFields and went to call the constructor of TrackedFile instead using the createTracking (revived in the follow-up PR) method.
There was a problem hiding this comment.
Ack. I can rebase when the followup PR is merged.
| manifestBuilder(FileContent.DATA_MANIFEST).manifestInfo(createManifestInfo()).build(); | ||
| // Inheritance fills the data sequence number, which the adapter requires; first row ID and | ||
| // key metadata stay unset. | ||
| ((TrackingStruct) file.tracking()).set(DATA_SEQUENCE_NUMBER_ORDINAL, DATA_SEQUENCE_NUMBER); |
There was a problem hiding this comment.
instead of using the ordinal, we can use the inheritFrom(some_manifest) method to do that.
There was a problem hiding this comment.
Routing through inheritFrom() will require building a parent Tzracking with several nulls. I prefer to keep it since this is simpler.
| /** Adapts {@link TrackedFile} entries to the {@link DataFile} and {@link DeleteFile} APIs. */ | ||
| /** | ||
| * Adapts {@link TrackedFile} entries to the {@link DataFile}, {@link DeleteFile}, and {@link | ||
| * ManifestFile} APIs. |
There was a problem hiding this comment.
If comments require regular maintenance when touching the file, I prefer to rewrite them to minimize churn. This doesn't need to list everything that can be produced. Maybe edit this so that it say for example, {@link DataFile}?
| return new TrackedManifestFile(file); | ||
| } | ||
|
|
||
| /** Shared base for all tracked file adapters. */ |
There was a problem hiding this comment.
This is no longer true. How about "Shared base for data and delete file adapters"?
| tracking.set(MANIFEST_POS_ORDINAL, MANIFEST_POS); | ||
| } | ||
|
|
||
| private static ManifestInfo createManifestInfo() { |
There was a problem hiding this comment.
I think this should be a constant, not a method. We don't need to create a manifest info struct every time, and a method gives no guarantees about the values produced. It could create random values every time.
If we use a constant, then you can write assertions like assertThat(manifest.existingFilesCount()).isEqualTo(manifestInfo.existingFilesCount()).
|
|
||
| // Builder for a manifest entry with the required non-tracking fields set. Callers add the | ||
| // manifest info and any optional fields before building. | ||
| private static TrackedFileBuilder manifestBuilder(FileContent contentType) { |
There was a problem hiding this comment.
I don't think that the complexity here to use the builder is a good thing.
This creates indirection and makes tests harder to read, while gaining almost nothing. There is hardly any readability benefit to using the builder when you're already setting constants like FORMAT_VERSION_V4. All this does is move the initialization here, so people have to find this method to validate that the assertions above are correct, like assertThat(manifest.path()).isEqualTo(MANIFEST_FILE_LOCATION). I would rather see MANIFEST_FILE_LOCATION passed in and then validated.
I think this should be removed and the constructor should be used instead. All these tests need to verify is that these values are passed through correctly.
| .manifestInfo(manifestInfo) | ||
| .keyMetadata(ByteBuffer.wrap(new byte[] {7, 8, 9})) | ||
| .build(); | ||
| populateTrackingFields(file); |
There was a problem hiding this comment.
Please remove this and either use a Tracking constant or create one inline. This indirection makes the tests unreadable.
| file.tracking().snapshotId() != null, "Invalid snapshot ID: null"); | ||
| Preconditions.checkArgument( | ||
| file.manifestInfo().dv() == null, | ||
| "Cannot adapt manifest with a deletion vector to ManifestFile: %s", |
There was a problem hiding this comment.
This is correct and calls into question whether this adapter is going to be useful. We expect manifest DVs to be common and if we can't adapt a manifest with a DV back to ManifestFile, then what is the purpose of this adapter?
ManifestFile is mostly below the API level. It is exposed in some places (accessed primarily from Snapshot), but reading and writing for correctness (scan planning and commit operations) are all done within Table APIs and even snapshot change access is moving to SnapshotChanges. You can read manifests directly using utils in core, but I don't think that is very common.
I think we may want to avoid adding this for now, even though it seems like a reasonable addition. In order for this to be valuable, we would need to continue using ManifestFile and expose a DV through that interface. Since we don't know if that's going to be helpful, I think we should keep this as a draft for now.
There was a problem hiding this comment.
OK. I will convert this into a draft and we can revisit this if it's needed as we build the reader and writer. cc @stevenzwu
There was a problem hiding this comment.
In the write path, I also proposed new additions to the ManifestFile interface. I added 3 new methods in my next PR #16936 . We can add more (including manifest DV) as we go.
There was a problem hiding this comment.
If we add the DV, let me know and I can revive this PR.
Co-authored-by: Ryan Blue <blue@apache.org>
Co-authored-by: Ryan Blue <blue@apache.org>
|
This pull request has been marked as stale due to 30 days of inactivity. It will be closed in 1 week if no further activity occurs. If you think that’s incorrect or this pull request requires a review, please simply write any comment. If closed, you can revive the PR at any time and @mention a reviewer or discuss it on the dev@iceberg.apache.org list. Thank you for your contributions. |
|
This pull request has been closed due to lack of activity. This is not a judgement on the merit of the PR in any way. It is just a way of keeping the PR queue manageable. If you think that is incorrect, or the pull request requires review, you can revive the PR at any time. |
Reintroduces the ManifestFile adapter closed in #16867, which stalled because ManifestFile had no way to represent a manifest deletion vector. The V4 scan task planner (#17541) plans over manifests through the ManifestFile API, so this adds ManifestFile.manifestDeletionVector() and has the adapter expose the tracked file's manifest DV.
* Build: Bump actions/stale from 10.4.0 to 11.0.0 (#17576) Bumps [actions/stale](https://github.com/actions/stale) from 10.4.0 to 11.0.0. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/1e223db275d687790206a7acac4d1a11bd6fe629...4391f3da665fdf50b6810c1a66712fb9ba21aa93) --- updated-dependencies: - dependency-name: actions/stale dependency-version: 11.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump zizmorcore/zizmor-action from 0.6.1 to 0.6.2 (#17575) Bumps [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) from 0.6.1 to 0.6.2. - [Release notes](https://github.com/zizmorcore/zizmor-action/releases) - [Commits](https://github.com/zizmorcore/zizmor-action/compare/6fc4b006235f201fdab3722e17240ab420d580e5...3dc1ecc9bcb9e94e9b2c709687979e1298497054) --- updated-dependencies: - dependency-name: zizmorcore/zizmor-action dependency-version: 0.6.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump gradle/actions/setup-gradle from 6.2.0 to 6.3.0 (#17574) Bumps [gradle/actions/setup-gradle](https://github.com/gradle/actions) from 6.2.0 to 6.3.0. - [Release notes](https://github.com/gradle/actions/releases) - [Commits](https://github.com/gradle/actions/compare/3f131e8634966bd73d06cc69884922b02e6faf92...9c971963bec38e04b3d30dcc455b5382be2fdbfb) --- updated-dependencies: - dependency-name: gradle/actions/setup-gradle dependency-version: 6.3.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump actions/setup-java from 5.6.0 to 5.7.0 (#17573) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 5.6.0 to 5.7.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/03ad4de0992f5dab5e18fcb136590ce7c4a0ac95...b6effb05e454b25005698d916606bdc6ffcbf961) --- updated-dependencies: - dependency-name: actions/setup-java dependency-version: 5.7.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump com.diffplug.spotless:spotless-plugin-gradle from 8.8.0 to 8.9.0 (#17569) Build: Bump com.diffplug.spotless:spotless-plugin-gradle Bumps [com.diffplug.spotless:spotless-plugin-gradle](https://github.com/diffplug/spotless) from 8.8.0 to 8.9.0. - [Release notes](https://github.com/diffplug/spotless/releases) - [Changelog](https://github.com/diffplug/spotless/blob/main/CHANGES.md) - [Commits](https://github.com/diffplug/spotless/compare/gradle/8.8.0...gradle/8.9.0) --- updated-dependencies: - dependency-name: com.diffplug.spotless:spotless-plugin-gradle dependency-version: 8.9.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump the codeql-action group with 3 updates (#17572) Bumps the codeql-action group with 3 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action). Updates `github/codeql-action/init` from 4.37.3 to 4.37.4 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81...f205ea1c3313d32999d8d6a48b4f6530d4437b38) Updates `github/codeql-action/analyze` from 4.37.3 to 4.37.4 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81...f205ea1c3313d32999d8d6a48b4f6530d4437b38) Updates `github/codeql-action/upload-sarif` from 4.37.3 to 4.37.4 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81...f205ea1c3313d32999d8d6a48b4f6530d4437b38) --- updated-dependencies: - dependency-name: github/codeql-action/init dependency-version: 4.37.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/analyze dependency-version: 4.37.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/upload-sarif dependency-version: 4.37.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Data, Spark: Support byte[] binary values in InternalRowConverter (#17482) * Flink: Reuse the catalog in the dynamic sink serializer cache (#17437) * Flink: Fix read split table properties being ignored (#17445) * Flink: Remove unused logger in TestIcebergCommitter (#17587) * Flink: Backport dynamic sink serializer cache catalog reuse to 2.0 and 1.20 (#17437) (#17590) * Flink: Avoid per-row field getter allocation in RowDataWrapper (#16789) * Flink: Backport read split table properties fix to 2.0 and 1.20 (#17445) (#17591) * Flink: Backport avoid per-row field getter allocation in RowDataWrapper (#17606) Backports #16789 * Core, REST: Fix delete file references for DVs in the same Puffin file (#17497) Motivation: Scan planning responses index delete files by position in the delete-files array. The index map was keyed on the delete file location alone, but a single Puffin file can hold a deletion vector for each of several data files. Every DV in that file shares a location, so each new DV entry overwrote the previous one and every task referencing a DV in that Puffin file resolved to the same last index. Changes: Extract DeleteFileSet's private wrapper into a public DeleteFileWrapper, mirroring CharSequenceWrapper, and key the index map on it so serialization uses the same delete file identity that builds the delete-files array. Fail with a clear message when a task references a delete file that is not in that array. * Docs: Document missing read table properties in configuration (#17554) Add read.split.adaptive-size.enabled, read.data-planning-mode, and read.delete-planning-mode to the read properties table with their defaults and accepted values. * Core: Support metrics with nested field in AppendBenchmark and FileGenerationUtil (#17391) * Core: Add nested field traversal in AppendBenchmark and FileGenerationUtil * expand testBoundsForNestedTypes to cover all metricsMode * Core: Resolve metrics mode by field id in FileGenerationUtil Use MetricsConfig.columnMode(int) instead of manually resolving the column name via Schema.findColumnName. The int overload performs the same id-to-name lookup internally and correctly handles column aliases, removing duplicated logic across the generator and its test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix schema used in UT --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Core: Include CRC values in DV deserialization error message (#17393) * Site: Add blog post introducing the Variant type (#17537) * Core: Add max-file-group-input-files to valid rewrite options (#17544) max-file-group-input-files is read and validated by SizeBasedFileRewritePlanner but was missing from validOptions(), so RewriteDataFilesSparkAction rejected it with "Cannot use options [max-file-group-input-files]". Flink exposes the option through RewriteDataFiles.maxFileGroupInputFiles() where it works, while Spark rejected it. The option was added in #14837 without updating validOptions(). Add the option to validOptions() and cover it with a rewrite that sets it, which fails without this change, plus a planner test that it caps the number of input files per group. * API: Respect plaintext files in EncryptingFileIO bulkDecrypt (#17592) * Respect plaintext files in EncyptingFileIO bulkDecrypt * unit tests --------- Co-authored-by: Thomas Powell <tpowell@palantir.com> * Core: Fix AvroEncoderUtil header error printing literal %02X (#17125) AvroEncoderUtil.decode validated the magic bytes with Preconditions.checkState(cond, "Unrecognized header bytes: 0x%02X 0x%02X", header0, header1). Guava's Preconditions formats messages with Strings.lenientFormat, which only understands the %s placeholder, so the %02X specifiers were emitted verbatim and the two byte arguments were appended as decimal in a trailing bracket. A mismatched header therefore reported "Unrecognized header bytes: 0x%02X 0x%02X [16, 32]" instead of the intended hex, obscuring the actual bytes. * Flink: Remove deprecated RewriteDataFiles.Builder.filter(Expression) (#17624) * Core: Fix Z-order byte encoding for floating-point values (#17071) Thanks @eye-gu for the Fix! * Parquet: Fix notNaN for columns missing from files (#17633) * Spark: Remove deprecated and unused methods in SparkRead/WriteConf and SparkSchemaUtil (#17626) Spark: Remove deprecated methods scheduled for 1.12.0 removal - SparkSchemaUtil.convertWithFreshIds(Schema, StructType) and prune(Schema, StructType, List<Expression>) in Spark 4.0 and 4.1 - SparkReadConf/SparkWriteConf constructors taking an unused branch argument in Spark 4.1 Spark 3.5 is unaffected: these overloads were never deprecated there. * Site: Update the variant blog with Apache Arrow variant support (#17640) * Data: Add Variant Support for file format tck (#17617) * Core: Call close on iterables returned by ManifestReader.liveEntries() in ManifestFilterManager (#15713) * Parquet, Spark, Flink: Type uniformity for variant shredding (#17424) * API: Avoid intermediate collections in IN predicate metrics evaluation (#17659) * Core: Always track null count in content stats, add evaluator (#17413) * API: Avoid intermediate collections in NOT IN strict metrics evaluation (#17661) * Core: Use TrackedFile constants for partition and content_stats fields (#17649) Replace the duplicated field ID and name literals with the constants that TrackedFile already declares, which both files use elsewhere. * Kafka Connect: Remove deprecated TableReference and IcebergWriterResult members (#17623) Deprecated for removal in 1.12.0: - TableReference.of(String, TableIdentifier) and the TableReference(String, List<String>, String) constructor - IcebergWriterResult(TableIdentifier, List, List, StructType) and IcebergWriterResult.tableIdentifier() Callers now construct a TableReference with an explicit table UUID; the two tests pass null to preserve their previous behavior. * BigQuery: Remove deprecated catalog property constants (#17625) PROJECT_ID, GCP_LOCATION and LIST_ALL_TABLES on BigQueryMetastoreCatalog were deprecated for removal in 1.12.0 in favor of the equivalents on BigQueryProperties. No remaining callers. * API: Add Javadoc for the Metrics constructor parameters (#17608) * API: Add Javadoc for the Metrics constructor parameters Document each parameter of the canonical Metrics constructor, including that the maps and counts may be null when unknown. * Update api/src/main/java/org/apache/iceberg/Metrics.java Co-authored-by: Anoop Johnson <git@anoopjohnson.com> * Fix format * Followup changes --------- Co-authored-by: Anoop Johnson <git@anoopjohnson.com> * Build: Bump datamodel-code-generator from 0.71.0 to 0.72.2 (#17673) Bumps [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator) from 0.71.0 to 0.72.2. - [Release notes](https://github.com/koxudaxi/datamodel-code-generator/releases) - [Changelog](https://github.com/koxudaxi/datamodel-code-generator/blob/main/CHANGELOG.md) - [Commits](https://github.com/koxudaxi/datamodel-code-generator/compare/0.71.0...0.72.2) --- updated-dependencies: - dependency-name: datamodel-code-generator dependency-version: 0.72.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump org.apache.httpcomponents.client5:httpclient5 from 5.6.3 to 5.6.4 (#17674) Build: Bump org.apache.httpcomponents.client5:httpclient5 Bumps [org.apache.httpcomponents.client5:httpclient5](https://github.com/apache/httpcomponents-client) from 5.6.3 to 5.6.4. - [Changelog](https://github.com/apache/httpcomponents-client/blob/rel/v5.6.4/RELEASE_NOTES.txt) - [Commits](https://github.com/apache/httpcomponents-client/compare/rel/v5.6.3...rel/v5.6.4) --- updated-dependencies: - dependency-name: org.apache.httpcomponents.client5:httpclient5 dependency-version: 5.6.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump at.yawk.lz4:lz4-java from 1.11.1 to 1.11.2 (#17675) Bumps [at.yawk.lz4:lz4-java](https://github.com/yawkat/lz4-java) from 1.11.1 to 1.11.2. - [Release notes](https://github.com/yawkat/lz4-java/releases) - [Changelog](https://github.com/yawkat/lz4-java/blob/main/CHANGES.md) - [Commits](https://github.com/yawkat/lz4-java/compare/v1.11.1...v1.11.2) --- updated-dependencies: - dependency-name: at.yawk.lz4:lz4-java dependency-version: 1.11.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump org.roaringbitmap:RoaringBitmap from 1.6.18 to 1.6.20 (#17677) Bumps [org.roaringbitmap:RoaringBitmap](https://github.com/RoaringBitmap/RoaringBitmap) from 1.6.18 to 1.6.20. - [Release notes](https://github.com/RoaringBitmap/RoaringBitmap/releases) - [Commits](https://github.com/RoaringBitmap/RoaringBitmap/commits) --- updated-dependencies: - dependency-name: org.roaringbitmap:RoaringBitmap dependency-version: 1.6.20 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump jetty from 12.1.11 to 12.1.12 (#17678) Bumps `jetty` from 12.1.11 to 12.1.12. Updates `org.eclipse.jetty.compression:jetty-compression-server` from 12.1.11 to 12.1.12 Updates `org.eclipse.jetty.compression:jetty-compression-gzip` from 12.1.11 to 12.1.12 Updates `org.eclipse.jetty.ee10:jetty-ee10-servlet` from 12.1.11 to 12.1.12 --- updated-dependencies: - dependency-name: org.eclipse.jetty.compression:jetty-compression-server dependency-version: 12.1.12 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.eclipse.jetty.compression:jetty-compression-gzip dependency-version: 12.1.12 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.eclipse.jetty.ee10:jetty-ee10-servlet dependency-version: 12.1.12 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump io.netty:netty-buffer from 4.2.16.Final to 4.2.17.Final (#17679) Bumps [io.netty:netty-buffer](https://github.com/netty/netty) from 4.2.16.Final to 4.2.17.Final. - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.2.16.Final...netty-4.2.17.Final) --- updated-dependencies: - dependency-name: io.netty:netty-buffer dependency-version: 4.2.17.Final dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump the codeql-action group with 3 updates (#17681) Bumps the codeql-action group with 3 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action). Updates `github/codeql-action/init` from 4.37.4 to 4.37.6 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/f205ea1c3313d32999d8d6a48b4f6530d4437b38...5595ccaf912efad79be6eef63a5619ff05969be3) Updates `github/codeql-action/analyze` from 4.37.4 to 4.37.6 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/f205ea1c3313d32999d8d6a48b4f6530d4437b38...5595ccaf912efad79be6eef63a5619ff05969be3) Updates `github/codeql-action/upload-sarif` from 4.37.4 to 4.37.6 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/f205ea1c3313d32999d8d6a48b4f6530d4437b38...5595ccaf912efad79be6eef63a5619ff05969be3) --- updated-dependencies: - dependency-name: github/codeql-action/init dependency-version: 4.37.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/analyze dependency-version: 4.37.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/upload-sarif dependency-version: 4.37.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Docs: Update Apache Fluss documentation link to correct path (#17647) * Arrow: Fix direct memory leak in row lineage vectorized readers (#17296) Co-authored-by: Angel Conde <acmanjon@amazon.com> * Build: Bump software.amazon.awssdk:bom from 2.50.2 to 2.51.3 (#17686) Bumps software.amazon.awssdk:bom from 2.50.2 to 2.51.3. --- updated-dependencies: - dependency-name: software.amazon.awssdk:bom dependency-version: 2.51.3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump com.google.cloud.gcs.analytics:gcs-analytics-core from 1.4.0 to 1.5.0 (#17687) Build: Bump com.google.cloud.gcs.analytics:gcs-analytics-core Bumps [com.google.cloud.gcs.analytics:gcs-analytics-core](https://github.com/GoogleCloudPlatform/gcs-analytics-core) from 1.4.0 to 1.5.0. - [Release notes](https://github.com/GoogleCloudPlatform/gcs-analytics-core/releases) - [Changelog](https://github.com/GoogleCloudPlatform/gcs-analytics-core/blob/main/CHANGELOG.md) - [Commits](https://github.com/GoogleCloudPlatform/gcs-analytics-core/compare/v1.4.0...v1.5.0) --- updated-dependencies: - dependency-name: com.google.cloud.gcs.analytics:gcs-analytics-core dependency-version: 1.5.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Parquet: Fix notStartsWith skipping row groups with null values (#17656) The dictionary row group filter only sees non-null values, so a column whose dictionary entries all start with the prefix was reported as unmatchable even when the column contained nulls. Null values match notStartsWith, so those row groups were skipped and their rows dropped from scan results. * API: Extract superclass from StrictMetricsEvaluator (#17511) Extract the strict evaluation logic from StrictMetricsEvaluator into a new superclass, StrictEvalVisitor. StrictMetricsEvaluator now uses the visitor superclass and implements methods to access metrics by ID. This is in preparation for adding a strict stats visitor that consumes ContentStats directly. * Core: Preserve snapshot pruning when ignoring residuals in AllManifestsTable (#17522) * Core: Simplify PartitionData.hashCode to avoid per-call allocations (#17666) * Core: Simplify list handling in manifest read and write paths (#17581) * Spark: Remove deprecated SparkFilters (#17702) SparkFilters converted Spark DSv1 filters into Iceberg expressions and was deprecated as a class for removal in 1.12.0 in favor of SparkV2Filters, which converts DSv2 predicates. Nothing uses it. The only remaining references were its own test, TestSparkFilters, which is removed with it, and a TODO comment in TestRewriteDataFilesProcedure that named the class; that comment now points at SparkV2Filters. Applies to Spark 3.5, 4.0 and 4.1. * Docs: Align Flink docs with current engine (#17695) * Data: Remove deprecated GenericAppenderFactory and BaseFileWriterFactory (#17696) * Spark: Reduce TestRewriteDataFilesAction data volume to speed up CI (#16565) * Build: Remove unused Avro dependency from iceberg-orc (#17694) * Core: Treat path prefixes as literals in RewriteTablePathUtil.replacePaths (#17521) * Spark 4.0/4.1: Remove deprecated SparkTableUtil methods (#17703) * Docs: Fix "refer" grammar in maintenance, AWS, and Nessie docs (#17580) * Data, Kafka Connect: Enable Parquet variant shredding for Kafka Connect and generic Record writes (#17520) * Core: Remove deprecated methods and fields scheduled for 1.12.0 removal (#17700) * Core: Remove deprecated methods and fields scheduled for 1.12.0 removal Removes the remaining core API marked for removal in 1.12.0 that has no callers left: - SystemProperties (class) -> SystemConfigs - ThreadPools.newWorkerPool(String) and newWorkerPool(String, int) -> newExitingWorkerPool or newFixedThreadPool depending on pool lifetime - ContentCache.invalidateAll(), which was only best-effort and racy - TableProperties.MANIFEST_LISTS_ENABLED and MANIFEST_LISTS_ENABLED_DEFAULT; writing manifest lists is always enabled - AvroSchemaUtil.pruneColumns(Schema, Set, NameMapping) -> applyNameMapping plus pruneColumns(Schema, Set) - SnapshotUtil.newFiles and newFilesBetween -> SnapshotChanges with ancestorsBetween - TableScanUtil.hasDeletes(CombinedScanTask) and hasEqDeletes(CombinedScanTask) - StandardEncryptionManager(String, int, KeyManagementClient), wrapKey and unwrapKey - ManifestFiles.read(ManifestFile, FileIO), readPaths(ManifestFile, FileIO) and open(ManifestFile, FileIO) -> the overloads taking a specs map - BaseScan.io() -> table().io(); DataScan and BaseDistributedDataScan are migrated to call table().io() directly Generated-by: Claude Code * rename unit test in TestManifestReader * Docs: Align Spark docs with current engine (#17688) * AWS: Remove deprecated S3 signer classes and properties (#17627) AWS: Remove deprecated S3 signer request/response classes These five classes were deprecated for removal in 1.12.0 and are now orphaned: they reference only each other and have no remaining callers in main or test sources. S3V4RestSignerClient uses the RemoteSign* equivalents. - S3SignRequest, S3SignResponse - S3SignRequestParser, S3SignResponseParser - S3ObjectMapper * Build: Fix OpenAPI test fixtures runtime dependency (#17519) * Core: Remove deprecated DataReader in favor of PlannedDataReader (#17699) DataReader was deprecated for removal in 1.12.0; PlannedDataReader is the replacement. Also removes the deprecated RawDecoder constructor that took a read schema and reader function, superseded by RawDecoder.create(Schema, Function, Schema). No remaining references to either. TestDataReader is removed along with the class it covered; PlannedDataReader has its own coverage in TestPlannedDataReader. * API: Add tests for BinaryUtil (#17692) * API: Add tests for BinaryUtil Cover truncateBinary (partial, full, zero-length, and negative-length guard), the previously untested truncateBinaryUnsafe view, and truncateBinaryMax including the all-bytes-overflow case. * More changes * Arrow: Fix vectorized read of all-null DELTA-encoded Parquet pages (#17017) An all-null page decodes to a length stream with totalValueCount 0, so readValues wrote firstValue into a zero-length array. * Data: Split BaseFormatModelTests into read and read-write test classes (#17711) * AWS, Core: Implement RemoteSigningConfig (#17709) * Core, REST, AWS: Implement RemoteSigningConfig * Flink: Support variant for Avro readers and writers (#17737) * Docs: Fix duplicated word in Spark merge-schema description (#17746) * Core: Remove deprecated REST namespace encoding helpers (#17697) * Core: Remove deprecated REST namespace encoding helpers Removes REST API deprecated for removal in 1.12.0: - RESTUtil.NAMESPACE_JOINER / NAMESPACE_SPLITTER, superseded by namespaceToQueryParam(Namespace) / namespaceFromQueryParam(String) - RESTUtil.encodeNamespace(Namespace) / decodeNamespace(String), superseded by the two-arg overloads that take an explicit separator - RESTSessionCatalog.REST_PAGE_SIZE, superseded by RESTCatalogProperties.PAGE_SIZE - CatalogHandlers.loadTable(Catalog, TableIdentifier), superseded by the overload taking a SnapshotMode Javadoc on namespaceToQueryParam and encodeNamespace no longer cross-links the removed single-arg encodeNamespace; the wording now describes the raw versus percent-encoded separator directly. * Core: Remove deprecated public ResourcePaths(String) constructor The deprecation notice said this constructor would be made private in 1.12.0. It had no callers anywhere in the repo, so making it private would leave an unused private constructor; remove it instead. Removal and privatization are indistinguishable to external callers. * Core: Address review feedback on deprecated REST API removal Review feedback from nastra and singhpk234: - Keep the decode separator in encodeAsOldClientAndDecodeAsNewServer hardcoded as "%2E". The test only needs a separator that differs from the legacy one; it does not have to be the one RESTCatalogAdapter advertises. - Use "Removed deprecated functionality scheduled for removal in 1.12.0" as the revapi justification for all seven accepted breaks. The previous text claimed every break was part of the namespace encoding API, which was not true for REST_PAGE_SIZE, CatalogHandlers.loadTable and the ResourcePaths constructor. - Drop the javadoc note on namespaceToQueryParam(Namespace, String). The separator is an explicit argument there, so warning that it differs from encodeNamespace adds nothing. - Keep the note on the no-arg namespaceToQueryParam, which hides the separator, but point it at the surviving encodeNamespace(Namespace, String) overload. The distinction it warns about is real: namespaceToQueryParam joins raw levels, while encodeNamespace URL-encodes each level. * Core: Use transaction metadata for post-commit file cleanup (#17708) BaseTransaction resolved its newly committed snapshots through ops.current(), a catalog re-read that can be stale when the catalog caches table pointers. A missing snapshot made committedFiles return null, skipping clean-up of all uncommitted files and leaking one stale manifest list per commit retry attempt. The transaction's own committed metadata always contains the new snapshots, so resolve them there. * Core: Fail scans when position deletes/DVs don't match data file partition (#16957) * Build: Bump mkdocs-exclude-search from 0.6.6 to 0.6.7 (#17775) Bumps [mkdocs-exclude-search](https://github.com/chrieke/mkdocs-exclude-search) from 0.6.6 to 0.6.7. - [Release notes](https://github.com/chrieke/mkdocs-exclude-search/releases) - [Changelog](https://github.com/chrieke/mkdocs-exclude-search/blob/main/CHANGELOG.md) - [Commits](https://github.com/chrieke/mkdocs-exclude-search/compare/0.6.6...0.6.7) --- updated-dependencies: - dependency-name: mkdocs-exclude-search dependency-version: 0.6.7 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump datamodel-code-generator from 0.72.2 to 0.73.0 (#17776) Bumps [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator) from 0.72.2 to 0.73.0. - [Release notes](https://github.com/koxudaxi/datamodel-code-generator/releases) - [Changelog](https://github.com/koxudaxi/datamodel-code-generator/blob/main/CHANGELOG.md) - [Commits](https://github.com/koxudaxi/datamodel-code-generator/compare/0.72.2...0.73.0) --- updated-dependencies: - dependency-name: datamodel-code-generator dependency-version: 0.73.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump io.delta:delta-standalone_2.12 from 3.3.2 to 3.3.3 (#17779) Bumps [io.delta:delta-standalone_2.12](https://github.com/delta-io/delta) from 3.3.2 to 3.3.3. - [Release notes](https://github.com/delta-io/delta/releases) - [Commits](https://github.com/delta-io/delta/compare/v3.3.2...v3.3.3) --- updated-dependencies: - dependency-name: io.delta:delta-standalone_2.12 dependency-version: 3.3.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump astral-sh/setup-uv from 9.0.0 to 10.0.1 (#17782) Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 9.0.0 to 10.0.1. - [Release notes](https://github.com/astral-sh/setup-uv/releases) - [Commits](https://github.com/astral-sh/setup-uv/compare/c771a70e6277c0a99b617c7a806ffedaca235ff9...20cfd1bf945f4377ade1205e4dbc17946fc9a30d) --- updated-dependencies: - dependency-name: astral-sh/setup-uv dependency-version: 10.0.1 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump the codeql-action group with 3 updates (#17781) Bumps the codeql-action group with 3 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action). Updates `github/codeql-action/init` from 4.37.6 to 4.37.7 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd) Updates `github/codeql-action/analyze` from 4.37.6 to 4.37.7 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd) Updates `github/codeql-action/upload-sarif` from 4.37.6 to 4.37.7 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd) --- updated-dependencies: - dependency-name: github/codeql-action/init dependency-version: 4.37.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/analyze dependency-version: 4.37.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/upload-sarif dependency-version: 4.37.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump io.delta:delta-spark_2.12 from 3.3.2 to 3.3.3 (#17780) Bumps [io.delta:delta-spark_2.12](https://github.com/delta-io/delta) from 3.3.2 to 3.3.3. - [Release notes](https://github.com/delta-io/delta/releases) - [Commits](https://github.com/delta-io/delta/compare/v3.3.2...v3.3.3) --- updated-dependencies: - dependency-name: io.delta:delta-spark_2.12 dependency-version: 3.3.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Parquet: Make createStructReader with fieldId abstract (#17698) createStructReader(List, StructType) was deprecated for removal in 1.12.0 in favor of createStructReader(List, StructType, Integer). The 2-arg form threw UnsupportedOperationException and the 3-arg form defaulted to delegating to it, so neither was usable without an override. Remove the 2-arg method and make the 3-arg form abstract. Both subclasses (GenericParquetReaders, InternalReader) already override it, and BaseParquetReaders is package-private so no other subclass can exist. * Flink: Avoid per-record Set allocation in the dynamic sink forward check (#17618) * Core: Include valid range in BasePartitionStatistics position error (#17546) * Core: Include valid range in BasePartitionStatistics position error Add the expected position range to the "Unknown position" errors thrown by getByPos and internalSet so the message points to the cause. * Address review * Build: Bump software.amazon.awssdk:bom from 2.51.3 to 2.53.1 (#17787) Bumps software.amazon.awssdk:bom from 2.51.3 to 2.53.1. --- updated-dependencies: - dependency-name: software.amazon.awssdk:bom dependency-version: 2.53.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Docs: Add MinIO AIStor to vendors.md (#17760) * Add MinIO AIStor section to vendors documentation Added information about MinIO AIStor as a software-defined object store with Apache Iceberg support. * Docs: note OAuth2 and credential vending in MinIO AIStor entry * Docs: Add OptimaFlo to vendors.md (#17725) Signed-off-by: evro <evandanrosa@gmail.com> * Core: Remove deprecated HadoopFileIO(SerializableSupplier) constructor (#17704) The constructor taking a SerializableSupplier<Configuration> was deprecated for removal in 1.12.0 in favor of HadoopFileIO(Configuration), and has no remaining callers. Since it was the delegation target, its body is inlined into the Configuration constructor. Also drops @Deprecated from serializeConfWith. That method is declared by the HadoopConfigurable interface, which is not deprecated, and it has five live consumers: SerializationUtil, IcebergInputFormat (mr) and SerializableFileIOWithSize in Spark 3.5, 4.0 and 4.1. Marking an override of a supported interface method as deprecated is misleading, so the annotation is removed rather than the method. * Connect: Fix idColumns are not read correctly from table config (#17152) * Site: Expand Variant intro blog with Iceberg table-level details (#17705) * API, Core, Spark: Add Hilbert-curve clustering strategy for `rewrite_data_files` (#16827) * Core, Spark: Fix stale manifest_length in rewrite_table_path manifest lists (#16910) * Parquet: Fix misleading AlwaysFalse placeholder exception message (#17816) * Core: Add dv_count column to PartitionsTable metadata table (#16125) * ORC: Fix timestamp nano predicate pushdown (#17750) Co-authored-by: Vova Kolmakov <wombatukun@gmail.com> * Revert "Core: Add dv_count column to PartitionsTable metadata table" (#17825) Revert "Core: Add dv_count column to PartitionsTable metadata table (#16125)" This reverts commit 68a7f2767b8da025a2663e67fc5321febf3c8dd1. * Core: Reduce visibility on scan planning response builder for specsById and deleteFiles (#17638) * Core: Add geometry bounds builder (#17509) * API: Add a builder usage example to PartitionSpec Javadoc (#17747) * Build: Clean up shaded-jar LICENSE/NOTICE and add missing third-party notices (#16543) * Spark: Make the view stored-schema cast configurable (#17499) * Core, Data, Spark, Flink: Remove of position delete files with row data (#17706) * Spec: Clarify content file uniqueness within a snapshot (#17198) * Core: Preserve trailing slash on table location in V4 manifest reader (#17807) The V4 manifest reader stripped a trailing slash from the table location before resolving relative file locations against it. Remove the strip as it should be done by the catalog during table creation. It is not the reader's responsibility * Spark: Backport view schema binding mode to Spark 3.5 and 4.0 (#17838) * API, Core, Parquet: Carry avg value sizes for v4 content stats (#17451) * API, AWS, Azure, GCP: Track read metrics for positioned, vectored, and accelerated reads (#17236) * Docs: Flink DDL documentation correction (#17854) Flink DDL documentation correction: Expand `ALTER TABLE` section to include support for adding, dropping, renaming, and modifying columns, along with clarifications on partition changes. Update Flink overview table to reflect these capabilities. * Flink: Copy Flink v2.1 to v2.3 directory * Flink: Add v2.2 directory * Flink: Adjust build scripts for Flink 2.2 and 2.3 * Flink: Code changes for Flink 2.2 and 2.3 * Flink: Remove support for Flink 2.0 * Flink: Catalog type refactor in Test and add support for REST catalog in CatalogTestBase (#17861) * Build: Add descriptions to OpenAPI spec validation tasks (#17799) * Core: Read delete manifests correctly during snapshot expiration (#17763) * Spark: Fix map value decoding in test helpers (#17721) Generated-by: Codex * Docs: Update documentation Flink versions and Flink lifecycle maintenance. (#17869) * Flink: Backport CatalogType test refactor to 1.20 * Flink: Backport REST catalog support in CatalogTestBase to 1.20 * Flink: Forward-port CatalogType test refactor to 2.3 * Flink: Forward-port REST catalog support in CatalogTestBase to 2.3 * Flink: Forward-port CatalogType test refactor to 2.2 * Flink: Forward-port REST catalog support in CatalogTestBase to 2.2 * Flink: Fix deleted rows reappearing after a failed eq-delete conversion cycle (#17630) * Build: Bump Avro Version to Avro 1.12.2 (#17188) * Build: Bump Avro Version to Avro 1.12.2 This is a smoke test PR against the staging RC1 artifacts Change-Id: I1954fdf77da9cb6b48b8f6eae9ac8536d852366f * Remove Apache staging repository from repositories Removed Apache staging repository from build.gradle as there's a full release now (same artifact tested against before) * Docs: Fix Nessie Flink Python example (#17091) * Flink: Backport eq-delete conversion replan reindex fix to 1.20 and 2.2 (#17630) * Flink: Forward-port eq-delete conversion replan reindex fix to 2.3 (#17630) * Build: Bump software.amazon.awssdk:bom from 2.53.1 to 2.54.2 (#17887) Bumps software.amazon.awssdk:bom from 2.53.1 to 2.54.2. --- updated-dependencies: - dependency-name: software.amazon.awssdk:bom dependency-version: 2.54.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump docker/setup-buildx-action from 4.2.0 to 4.3.0 (#17886) Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 4.2.0 to 4.3.0. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/bb05f3f5519dd87d3ba754cc423b652a5edd6d2c...37fe631027851001ddb9b187196cc803df7f5f0e) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-version: 4.3.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump com.diffplug.spotless:spotless-plugin-gradle from 8.9.0 to 8.10.0 (#17883) Build: Bump com.diffplug.spotless:spotless-plugin-gradle Bumps [com.diffplug.spotless:spotless-plugin-gradle](https://github.com/diffplug/spotless) from 8.9.0 to 8.10.0. - [Release notes](https://github.com/diffplug/spotless/releases) - [Changelog](https://github.com/diffplug/spotless/blob/main/CHANGES.md) - [Commits](https://github.com/diffplug/spotless/compare/gradle/8.9.0...gradle/8.10.0) --- updated-dependencies: - dependency-name: com.diffplug.spotless:spotless-plugin-gradle dependency-version: 8.10.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump the codeql-action group with 3 updates (#17885) Bumps the codeql-action group with 3 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action). Updates `github/codeql-action/init` from 4.37.7 to 4.37.8 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd...db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28) Updates `github/codeql-action/analyze` from 4.37.7 to 4.37.8 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd...db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28) Updates `github/codeql-action/upload-sarif` from 4.37.7 to 4.37.8 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd...db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28) --- updated-dependencies: - dependency-name: github/codeql-action/init dependency-version: 4.37.8 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/analyze dependency-version: 4.37.8 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/upload-sarif dependency-version: 4.37.8 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump datamodel-code-generator from 0.73.0 to 0.74.0 (#17880) Bumps [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator) from 0.73.0 to 0.74.0. - [Release notes](https://github.com/koxudaxi/datamodel-code-generator/releases) - [Changelog](https://github.com/koxudaxi/datamodel-code-generator/blob/main/CHANGELOG.md) - [Commits](https://github.com/koxudaxi/datamodel-code-generator/compare/0.73.0...0.74.0) --- updated-dependencies: - dependency-name: datamodel-code-generator dependency-version: 0.74.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump jackson-bom from 2.22.1 to 2.22.2 (#17881) Bumps `jackson-bom` from 2.22.1 to 2.22.2. Updates `com.fasterxml.jackson:jackson-bom` from 2.22.1 to 2.22.2 - [Commits](https://github.com/FasterXML/jackson-bom/compare/jackson-bom-2.22.1...jackson-bom-2.22.2) Updates `com.fasterxml.jackson.core:jackson-core` from 2.22.1 to 2.22.2 - [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.22.1...jackson-core-2.22.2) Updates `com.fasterxml.jackson.core:jackson-databind` from 2.22.1 to 2.22.2 - [Commits](https://github.com/FasterXML/jackson-databind/compare/jackson-databind-2.22.1...jackson-databind-2.22.2) --- updated-dependencies: - dependency-name: com.fasterxml.jackson:jackson-bom dependency-version: 2.22.2 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: com.fasterxml.jackson.core:jackson-core dependency-version: 2.22.2 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-version: 2.22.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * API, Core: Fix typos in test comments (#17889) Fix a duplicated "the", "overriden" -> "overridden", and "doesnt" -> "doesn't" in test comments. Comment-only changes, no behavior change. * Docs, Core, AWS, BigQuery, Flink: Fix miscellaneous typos in comments and docs (#17898) * Docs: Run `generateRuntimeDeps` on all modules (#17323) Updated comments for clarity on Gradle commands. * Docs: Fix grammatical typo in Spark module description (#17897) 'submodules for each spark versions' -> 'submodules for each Spark version' (number agreement + capitalization, consistent with Flink/Hive naming nearby) * Core: Fix geo bounds in v4 legacy stat maps (#17493) * Spark 4.1: Mark overrides of deprecated Spark API as deprecated (#16028) * Core: Remove ThreadPools.WORKER_THREAD_POOL_SIZE_PROP update warning log message (#17812) * Core: Remove ThreadPools.WORKER_THREAD_POOL_SIZE_PROP and correct manifest spec fallback removal version Resolves the two remaining deprecation markers in iceberg-core that promised action "in 1.12.0" but were missed by the removal PRs. Remove ThreadPools.WORKER_THREAD_POOL_SIZE_PROP. The field was deprecated in #5659 in favor of SystemConfigs.WORKER_THREAD_POOL_SIZE and retargeted from 2.0.0 to 1.12.0 by #14392. It had no callers anywhere in the repository outside its own declaration and no references in the docs, and it was the only survivor of #14392's 13-file batch after #17700 removed the rest. The corresponding java.field.removed break is recorded in .palantir/revapi.yml under the 1.11.0 baseline. Correct the ManifestReader warning for the partition-spec-from-file- metadata fallback to say 2.0.0 rather than 1.12.0. The fallback cannot be honored in 1.12.0 because its only production caller is BaseSnapshot:276, which passes a null spec map while serving Snapshot.addedDeleteFiles(FileIO) and removedDeleteFiles(FileIO). Those accessors are themselves already marked "@deprecated will be removed in 2.0.0; use SnapshotChanges#builderFor(Table) instead", and because they receive only a FileIO they structurally cannot supply a spec map. The fallback must therefore outlive 1.12.0, and 2.0.0 aligns its removal with that of its last caller. * reword revapi change * Dell: Preserve known ECS input file lengths (#17870) * Dell: Preserve known ECS input file lengths Carry known lengths into ECS input files so scan planning avoids redundant object metadata requests. Generated-by: Codex * Dell: Verify known lengths avoid metadata requests Use a mock ECS client and assert that reading a supplied file length performs no client interaction. Generated-by: Codex * Core: Add Eager fetch to parquet read path (#17284) * Spark 4.1: Add rewrite option to enable executor cache for delete files (#17868) * Spark 4.0: Add rewrite option to enable executor cache for delete files (#17907) * Spark 3.5: Add rewrite option to enable executor cache for delete files (#17909) * Core: Clean up TestTrackingBuilder (#17145) * Core, API, Parquet: Collapse redundant nested if statements (#17905) * Docs: Add max-file-group-input-files to rewrite options tables in spark-procedures.md (#17707) * Docs: Bump site Flink version to 2.3 (#17936) * Docs: Fix wrong config keys in Flink maintenance docs (#17935) * Core, Open-API, Spark, Flink: Use String.replace for literal replacements (#17484) * API: Add Javadoc for Transforms.fromString (#17693) * Spec: Add finer grained read restrictions as part of loadTable (#13879) Add an optional read-restrictions field to LoadTableResult so a catalog can return the result of evaluating fine grained access policies for the calling user. The restrictions are enforced by the client, which requires a trust relationship between the engine and the catalog; how that trust is established is out of scope for this change. ReadRestrictions carries two optional fields: - required-column-projections: a list of Action objects, each naming a column by field-id along with the transformation to apply. Action uses a discriminator on the action property, with mask-alphanum, mask-to-fixed-value, replace-with-null, show-first-4, show-last-4, truncate-to-year, truncate-to-month, sha-256-global and sha-256-query-local defined. Each action produces a value of the same type as the input column. - required-row-filter: an Expression evaluated against original, untransformed column values. Projections are applied to the rows that survive the filter. Enforcement is fail-closed. A reader that supports read restrictions must fail any read it cannot satisfy in full, including unrecognized action or expression types and actions that cannot be loaded, parsed, or evaluated, and must not silently return raw, partial, or empty results. The restrictions apply to every read performed with a given response, including subsequent planTableScan and fetchScanTasks calls, and may differ between requests or between authentication scopes. A missing or empty ReadRestrictions object imposes no restrictions. Approved on the dev list with 8 binding +1 votes and no -1 votes: https://lists.apache.org/thread/0zloqhp8wkgyn04yg69j71cwcg5n7g74 * Build: Bump mkdocs-material from 9.7.5 to 9.7.7 in /site (#17942) Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.7.5 to 9.7.7. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.7.5...9.7.7) --- updated-dependencies: - dependency-name: mkdocs-material dependency-version: 9.7.7 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * API: Fix grammatical typos in UpdatePartitionSpec Javadoc (#17941) Correct "the a" / "the an" to "a" / "an" in the @throws documentation of addField and removeField. * Core, Hive, Spark: Auto close JsonGenerator using try-with-resources (#17931) * Core, Hive, Spark: Close JsonGenerator instead of only flushing it Ten sites created a JsonGenerator, called flush(), and left it unclosed. flush() pushes buffered content to the target and flushes the target itself, so the output was correct, but only close() returns the generator's char buffers to the thread's BufferRecycler (_releaseBuffers) and returns the recycler to the pool (IOContext.close). Without it, every serialization allocates a fresh char[4000] concat buffer instead of reusing one. Each generator now joins its enclosing try-with-resources so it closes before its target. The explicit flush() remains only where a value is read off the target inside the try: JsonUtil.generate and TableMetadataParser.toJson read StringWriter.toString(), and HMSTablePropertyHelper.hashOf reads HashWriter.getHash(). The last is ordering-sensitive, since AUTO_CLOSE_TARGET makes closing the generator close the HashWriter, and a closed HashWriter rejects getHash(). A JMH benchmark over TableMetadataParser measured a fixed 8,016 B/op allocation reduction independent of document size, which is one char[4000] plus its object header. For a ~1 KB document that is 10,616 -> 2,600 B/op and 0.860 -> 0.730 us/op; for ~41 KB it is 49,680 -> 41,664 B/op. On a failure mid-serialization, close() now auto-completes open contexts (AUTO_CLOSE_JSON_CONTENT) and flushes partial content, where the flush() was previously skipped. The resulting metadata file is orphaned either way because the commit fails. * Restore explicit generator.flush() calls Review feedback: relying on close() to flush is correct but implicit, and it contradicts JsonUtil.generate, which was cited as the pattern this change follows and which does call flush(). Restoring the calls keeps this change to a single concern: adding the generator to the enclosing try-with-resources so it is closed. The buffer-recycling win comes entirely from close() releasing the char buffer to the BufferRecycler, not from dropping the flush, so nothing measured is lost. The flush is now redundant with close() at these sites, which costs one extra flush() on the underlying stream per write. * Core, OpenAPI: Preserve avg value sizes in REST JSON (#17855) * Core, Flink, Spark, Build: Replace Guava Queues with plain JDK and bump guava from 33.6.0-jre to 33.7.1-jre (#17888) * Replace Guava Queues with plain JDK * Build: Bump guava from 33.6.0-jre to 33.7.1-jre Bumps `guava` from 33.6.0-jre to 33.7.1-jre. Updates `com.google.guava:guava` from 33.6.0-jre to 33.7.1-jre - [Release notes](https://github.com/google/guava/releases) - [Commits](https://github.com/google/guava/commits) Updates `com.google.guava:guava-testlib` from 33.6.0-jre to 33.7.1-jre - [Release notes](https://github.com/google/guava/releases) - [Commits](https://github.com/google/guava/commits) --- updated-dependencies: - dependency-name: com.google.guava:guava dependency-version: 33.7.1-jre dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: com.google.guava:guava-testlib dependency-version: 33.7.1-jre dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Core: Fix commit validation when a data file has multiple DVs across snapshots (#17764) * API, Core: Expose co-located deletion vector through DataFile (#17928) V4 co-locates a data file's deletion vector on the data entry. Add DataFile.deletionVector() returning the DV as a DeleteFile. Related discussion thread: https://github.com/apache/iceberg/pull/17541/changes#r3787760198 * API: Add contextual load apis (#15895) * API: Adds contextual load APIs and LoadContext Co-authored-by: Prashant Singh <prashant.singh@snowflake.com> * Spark: Add support for 4.2.0 (#14984) * Spark 4.2: Fix build failures from missed cleanups (#17952) * Docs: Note that REST catalog credentials should be redacted by engines (#17920) * Core: Avoid per-row path rehashing in toPositionIndexes (#17864) * Core: Avoid per-row path rehashing in toPositionIndexes Signed-off-by: Sergei Nikolaev <kinolaev@gmail.com> * Core: Compare paths by content when building pos delete indexes + tests Signed-off-by: Sergei Nikolaev <kinolaev@gmail.com> Co-authored-by: Anurag Mantripragada <amantripragada@apple.com> * Core: Fix Deletes.toPositionIndexes with interleaved paths test Signed-off-by: Sergei Nikolaev <kinolaev@gmail.com> * Core: Fix test names, improve assertion in TestDeletes Signed-off-by: Sergei Nikolaev <kinolaev@gmail.com> --------- Signed-off-by: Sergei Nikolaev <kinolaev@gmail.com> Co-authored-by: Anurag Mantripragada <amantripragada@apple.com> * API, Core: Add ManifestFile adapter for v4 tracked files (#17932) Reintroduces the ManifestFile adapter closed in #16867, which stalled because ManifestFile had no way to represent a manifest deletion vector. The V4 scan task planner (#17541) plans over manifests through the ManifestFile API, so this adds ManifestFile.manifestDeletionVector() and has the adapter expose the tracked file's manifest DV. * Build: Bump zizmorcore/zizmor-action from 0.6.2 to 0.6.3 (#17976) Bumps [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) from 0.6.2 to 0.6.3. - [Release notes](https://github.com/zizmorcore/zizmor-action/releases) - [Commits](https://github.com/zizmorcore/zizmor-action/compare/3dc1ecc9bcb9e94e9b2c709687979e1298497054...70fb788f84895a7701f5643d103d587e460b5c99) --- updated-dependencies: - dependency-name: zizmorcore/zizmor-action dependency-version: 0.6.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump actions/setup-java from 5.7.0 to 6.0.0 (#17975) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 5.7.0 to 6.0.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/b6effb05e454b25005698d916606bdc6ffcbf961...dd06d9cba3e5552c54d9f8ea23572deb30010f7c) --- updated-dependencies: - dependency-name: actions/setup-java dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump the codeql-action group with 3 updates (#17974) Bumps the codeql-action group with 3 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action). Updates `github/codeql-action/init` from 4.37.8 to 4.37.9 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938) Updates `github/codeql-action/analyze` from 4.37.8 to 4.37.9 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938) Updates `github/codeql-action/upload-sarif` from 4.37.8 to 4.37.9 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938) --- updated-dependencies: - dependency-name: github/codeql-action/init dependency-version: 4.37.9 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/analyze dependency-version: 4.37.9 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/upload-sarif dependency-version: 4.37.9 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump org.openapitools:openapi-generator-gradle-plugin from 7.24.0 to 7.25.0 (#17973) Build: Bump org.openapitools:openapi-generator-gradle-plugin Bumps [org.openapitools:openapi-generator-gradle-plugin](https://github.com/OpenAPITools/openapi-generator) from 7.24.0 to 7.25.0. - [Release notes](https://github.com/OpenAPITools/openapi-generator/releases) - [Changelog](https://github.com/OpenAPITools/openapi-generator/blob/master/docs/release-summary.md) - [Commits](https://github.com/OpenAPITools/openapi-generator/compare/v7.24.0...v7.25.0) --- updated-dependencies: - dependency-name: org.openapitools:openapi-generator-gradle-plugin dependency-version: 7.25.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump org.xerial:sqlite-jdbc from 3.53.2.1 to 3.53.4.0 (#17972) Bumps [org.xerial:sqlite-jdbc](https://github.com/xerial/sqlite-jdbc) from 3.53.2.1 to 3.53.4.0. - [Release notes](https://github.com/xerial/sqlite-jdbc/releases) - [Changelog](https://github.com/xerial/sqlite-jdbc/blob/master/CHANGELOG) - [Commits](https://github.com/xerial/sqlite-jdbc/compare/3.53.2.1...3.53.4.0) --- updated-dependencies: - dependency-name: org.xerial:sqlite-jdbc dependency-version: 3.53.4.0 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump com.diffplug.spotless:spotless-plugin-gradle from 8.10.0 to 8.10.1 (#17970) Build: Bump com.diffplug.spotless:spotless-plugin-gradle Bumps [com.diffplug.spotless:spotless-plugin-gradle](https://github.com/diffplug/spotless) from 8.10.0 to 8.10.1. - [Release notes](https://github.com/diffplug/spotless/releases) - [Changelog](https://github.com/diffplug/spotless/blob/main/CHANGES.md) - [Commits](https://github.com/diffplug/spotless/compare/gradle/8.10.0...gradle/8.10.1) --- updated-dependencies: - dependency-name: com.diffplug.spotless:spotless-plugin-gradle dependency-version: 8.10.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump software.amazon.awssdk:bom from 2.54.2 to 2.54.7 (#17969) Bumps software.amazon.awssdk:bom from 2.54.2 to 2.54.7. --- updated-dependencies: - dependency-name: software.amazon.awssdk:bom dependency-version: 2.54.7 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build: Bump datamodel-code-generator from 0.74.0 to 0.76.0 (#17968) Bumps [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator) from 0.74.0 to 0.76.0. - [Release notes](https://github.com/koxudaxi/datamodel-code-generator/releases) - [Changelog](https://github.com/koxudaxi/datamodel-code-generator/blob/main/CHANGELOG.md) - [Commits](https://github.com/koxudaxi/datamodel-code-generator/compare/0.74.0...0.76.0) --- updated-dependencies: - dependency-name: datamodel-code-generator dependency-version: 0.76.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] …
Add TrackedFileAdapters.asManifestFile to wrap a DATA_MANIFEST or DELETE_MANIFEST TrackedFile as a ManifestFile.
The ManifestFile adapter will only be used by tests. Note that ManifestFile doesn't support manifest DVs. So in the actual manifest read path, the reader resolves the MDV first and produces the resulting TrackedFiles, which are then adapted to data/delete files.
Closes #16227