This is an automated email from the ASF dual-hosted git repository.

zeroshade pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg-go.git


The following commit(s) were added to refs/heads/main by this push:
     new d3ae21a83 docs(release): add compatibility notes for pre-v1 renames 
(#2334)
d3ae21a83 is described below

commit d3ae21a83e73a31ddc309048fe8be85aae0019d4
Author: Matt Topol <[email protected]>
AuthorDate: Wed Oct 28 18:12:13 2026 +0000

    docs(release): add compatibility notes for pre-v1 renames (#2334)
    
    docs(release): add compatibility notes for pre-v1 renames and breaking 
changes
    
    Add release notes for the rename batch (#2308, #2314, #2315, #2316, #2317,
    #2319, #2322, #2323) and for #2067, #2290, #2294, #2307, #2310 and #2313.
    Remove stray blank lines inside the compatibility-notes list.
---
 website/src/releases.md | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/website/src/releases.md b/website/src/releases.md
index 5e74577c3..b9c043a0b 100644
--- a/website/src/releases.md
+++ b/website/src/releases.md
@@ -42,13 +42,25 @@ Per-release notes (highlights, breaking changes, 
contributors) are published on
 
 ### Unreleased compatibility notes
 
+- **Path-based data-file addition renamed.** Replace `Transaction.AddFiles` 
with `AddDataFilesByPath`, `AddFilesOption` with `AddDataFilesByPathOption`, 
and `WithAddFilesConcurrency` with `WithAddDataFilesByPathConcurrency`. 
Behavior is unchanged.
+- **Manifest builder constructor renamed.** Replace 
`iceberg.NewManifestFile(...)` with `iceberg.NewManifestBuilder(...)`. It still 
returns a `ManifestBuilder`.
+- **Manifest sequence APIs use explicit names.** `ManifestBuilder.SequenceNum` 
and `ManifestFile.SequenceNum` become `SequenceNumber`, and 
`ManifestFile.MinSequenceNum` becomes `MinSequenceNumber`. 
`ManifestEntryBuilder.SequenceNum` and `ManifestEntry.SequenceNum` become 
`DataSequenceNumber`. `FileSequenceNum` becomes `FileSequenceNumber` for 
entries and their builder. Avro and JSON field names are unchanged.
+- **View and UDF metadata builder constructors are infallible.** 
`view.NewMetadataBuilder` and `udf.NewMetadataBuilder` now return only a 
builder instead of `(builder, error)`; remove error handling at call sites.
+- **Table metadata getter renamed.** Replace `table.Metadata.Version()` with 
`table.Metadata.FormatVersion()`, consistent with Iceberg Java and Go view/UDF 
metadata. Metadata JSON is unchanged.
+- **Snapshot ref type field renamed.** Replace 
`table.SnapshotRef.SnapshotRefType` with `table.SnapshotRef.Type`. The JSON 
field is still `"type"`.
+- **As-of snapshot lookups now use inclusive timestamps.** Replace 
`tbl.SnapshotAsOf(timestampMs, true)` with `tbl.SnapshotAsOf(timestampMs)`. The 
method always selects the latest snapshot at or before the timestamp, matching 
Java Iceberg's `SnapshotUtil.nullableSnapshotIdAsOfTime`. For strict-before 
lookup, use `SnapshotLogEntryAsOf(tbl.Metadata().SnapshotLogs(), timestampMs, 
false)`.
+- **Snapshot timestamp property key corrected.** 
`PropertyCurrentSnapshotTimestamp` now uses `current-snapshot-timestamp-ms`. 
The old `current-snapshot-timestamp` spelling is no longer reserved and remains 
usable as a custom property.
+- **FileIO open and remove take a context.** `io.IO.Open` and `io.IO.Remove` 
now take a `context.Context` first argument, so custom `io.IO` implementations 
must add it. `maintenance.WithCleanupDeleteFunc` now takes 
`func(context.Context, string) error`.
+- **Hadoop catalog construction takes a context.** `hadoop.NewCatalog(name, 
warehouse, props)` becomes `hadoop.NewCatalog(ctx, name, warehouse, props)`. 
The context bounds filesystem setup; the catalog's filesystem keeps its values 
but not its cancellation.
+- **Config loading reports errors.** `config.LoadConfig` now returns `([]byte, 
error)`, and `config.LoadConfigFile` is removed; call `LoadConfig` instead. A 
missing default `~/.iceberg-go.yaml` still returns no data and no error.
+- **Branch transactions return initialization errors.** 
`Table.NewTransactionOnBranch(branch)` now returns `(*Transaction, error)`, and 
`Table.NewTransactionOnBranchWithError` is removed. Use 
`NewTransactionOnBranch` and handle its error.
+- **Schema JSON constructor uses the Go initialism.** Replace 
`iceberg.NewSchemaFromJsonFields` with `iceberg.NewSchemaFromJSONFields`.
+- **AWS identifiers use the Go initialism.** `glue.AwsProperties`, 
`glue.WithAwsConfig` and `glue.WithAwsProperties` become `glue.AWSProperties`, 
`glue.WithAWSConfig` and `glue.WithAWSProperties`; `sigv4.WithAwsConfig` 
becomes `sigv4.WithAWSConfig`; `utils.WithAwsConfig` and `utils.GetAwsConfig` 
become `utils.WithAWSConfig` and `utils.GetAWSConfig`; and 
`config.CatalogConfig.AwsProfile` becomes `AWSProfile`. The `aws-profile` YAML 
key is unchanged.
 - **KMS factory registration now takes a context.** Change 
`encryption.KMSFactory` implementations to accept `(context.Context, 
map[string]string)` instead of only properties, and call 
`encryption.LoadKeyManagementClient(ctx, props)` instead of 
`LoadKeyManagementClient(props)`. The existing global `RegisterKMS`, 
`UnregisterKMS`, and `GetRegisteredKMSNames` functions still use the default 
registry; `RegisterKMS` still panics for invalid registrations. Use 
`encryption.MustRegisterKMS` for  [...]
 - **Name-mapping child lookup renamed.** Replace `MappedField.GetField(name)` 
with `MappedField.FindFieldByName(name)`, which returns `(*MappedField, bool)`. 
The new method returns a pointer to the actual child field rather than a copy, 
and reports a missing name with `false`.
 - **Data file block size setter removed.** 
`iceberg.DataFileBuilder.BlockSizeInBytes` is removed. New v1 manifests use the 
Avro schema's 64 MiB default when the field is unset. V2/v3 omit this 
deprecated field, and legacy v1 values remain readable.
 - **View creation APIs take a named SQL representation.** 
`view.NewVersionFromSQL`, `view.CreateView`, `view.CreateViewWithIOProperties`, 
and `sql.Catalog.CreateView` now accept a `view.Representation{SQL: sql, 
Dialect: dialect}` instead of positional SQL/dialect strings. The dialect is 
required; Hive preserves the selected representation's dialect.
-
 - **View SQL representation construction uses named fields.** Replace 
`view.NewRepresentation(sql, dialect)` with 
`view.NewRepresentation(view.Representation{SQL: sql, Dialect: dialect})`. 
Serialized JSON is unchanged.
-
 - **Reserved table properties now use a read-only API.** Replace references to 
`table.ReservedProperties` with `table.ReservedProperties()`. The function 
returns a fresh slice, so callers cannot change metadata validation by 
modifying it.
 - **Fixed and decimal constructors return errors.** `iceberg.FixedTypeOf` and 
`iceberg.DecimalTypeOf` now return `(type, error)` instead of panicking for 
invalid inputs. Use `MustFixedTypeOf` or `MustDecimalTypeOf` only for 
known-valid values.
 - **SQL UDF representations now use struct literals.** The 
`udf.NewSQLRepresentation(dialect, sql)` function, available since v0.7.0, is 
removed. Use `udf.SQLRepresentation{Dialect: "trino", SQL: "x + 1"}` instead. 
Empty fields and duplicate dialects are checked during metadata validation; 
serialized JSON is unchanged.

Reply via email to