What's Changed
- feat(table): add DV planning validations to match Java's DeleteFileIndex (#1050) by @tanmayrauth in #1108
- fix: reject invalid transform widths by @fallintoplace in #1110
- build(deps): bump github.com/containerd/containerd/v2 from 2.2.2 to 2.2.4 by @dependabot[bot] in #1116
- feat(table): Adding geometry and geography type + schema plumbing by @happydave1 in #984
- feat(catalog): add PurgeTable as optional interface for physical file deletion by @mithilgirish in #1104
- feat(table): preserve row lineage through copy-on-write rewrites by @tanmayrauth in #1099
- build(deps): bump zizmorcore/zizmor-action from 0.5.3 to 0.5.6 by @dependabot[bot] in #1125
- build(deps): bump github/codeql-action from 4.35.4 to 4.35.5 by @dependabot[bot] in #1124
- build(deps): bump the gomod_updates group with 5 updates by @dependabot[bot] in #1123
- build(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 by @dependabot[bot] in #1122
- perf(table): dedupe shared manifest reads during snapshot expiration by @paveon in #1118
- fix(substrait): use bound field precision in toDecimalLiteral (#1028) by @mzzz-zzm in #1121
- feat(io): add ManagedIdentityCredential support for Azure by @alessandro-nori in #1062
- feat(table): scanner deletion-vector read path by @laskoviymishka in #1053
- feat(table): wire DVWriter into position-delete producer with property gating by @tanmayrauth in #1113
- feat(table): MoR equality-rewrite - insert/reinsert writer API by @tanmayrauth in #1120
- fix(substrait): emit decimal literals as 16-byte little-endian by @laskoviymishka in #1130
- test(table): end-to-end deletion-vector scan over a real Parquet file by @laskoviymishka in #1134
- feat(table/dv): accept partition spec and data on DVWriter.Add by @laskoviymishka in #1136
- docs: add Iceberg security model by @sungwy in #1137
- test(table): add cross-client DV format compliance tests by @tanmayrauth in #1131
- build(deps): bump the gomod_updates group with 5 updates by @dependabot[bot] in #1146
- fix(table): normalize timestamp units for partitioned writes by @fallintoplace in #1112
- build(deps): bump github/codeql-action from 4.35.5 to 4.36.0 by @dependabot[bot] in #1144
- build(deps): bump golangci/golangci-lint-action from 9.2.0 to 9.2.1 by @dependabot[bot] in #1145
- fix(manifest): Fix minsequencenumber handling zero value by @dttung2905 in #1147
- feat(io/s3): support connect timeout property by @Revanth14 in #1141
- feat(test): add Spark 4.0 integration test infrastructure by @nssalian in #1140
- refactor(table): clean up unused concurrentDataFileWriter in partitioned write paths by @xixipi-lining in #1150
- perf(manifest): lazy per-group init for dataFile maps and preallocate avroColMapToMap by @paveon in #1143
- Avoid carrying empty overwrite manifests by @rraulinio in #1154
- fix(table): reject time64[ns] in partition literal extraction (#1115) by @tanmayrauth in #1159
- fix(io/s3): preserve tuned transport options when configuring HTTP client by @Revanth14 in #1163
- fix(table): serialize name mapping as JSON in UpdateSchema build updates by @hdnpth in #1156
- fix(table): preserve InitialDefault and WriteDefault in AssignFreshSchemaIDs by @hdnpth in #1164
- fix: preserve nested field IDs when filling missing columns by @xixipi-lining in #1168
- feat(cli): support rollback by timestamp by @Revanth14 in #1170
- refactor(catalog/hadoop): Change Hadoop Catalog to Use IO Interface by @C-Loftus in #1158
- feat(cli): add branch and tag delete commands by @Revanth14 in #1169
- fix(table): propagate manifest evaluator errors during scan planning by @dttung2905 in #1172
- build(deps): bump the gomod_updates group with 8 updates by @dependabot[bot] in #1171
- refactor(catalog): unify metadata IO operations by passing Table instances directly by @xixipi-lining in #1167
- fix(table): preserve table props when building partition location provider (#1155) by @tanmayrauth in #1162
- feat(table): enforce sort order on write #833 by @tanmayrauth in #1157
- docs(website): document CLI maintenance commands by @tanmayrauth in #1161
- perf(table): dedupe shared manifest reads in orphan cleanup by @paveon in #1133
- feat(cli): expose REST catalog page size as --page-size flag by @tanmayrauth in #1173
- fix(manifest): allow NewManifestReader to read lower-version manifests by @twuebi in #1180
- deps: bump arrow-go to 88561cf (variant fixes arrow-go 840, 841) by @nssalian in #1177
- feat(table): write deletion vectors for partitioned v3 tables by @tanmayrauth in #1151
- docs(website): expand site with tutorial, API recipes, and V1/V2/V3 status by @nssalian in #1181
- fix(manifest): encode day-transform partition fields with Avro date logical type by @artbcf in #915
- Core: Handle nil logical partition values in manifests by @gerinsp in #1179
- fix(exprs): support nanosecond timestamp predicates by @fallintoplace in #1195
- fix(table): apply positional deletes with batch-local Take indices by @jeremybarner in #1183
- test(table): validate variant and unknown types against Spark 4 by @nssalian in #1182
- feat(catalog/rest): endpoint negotiation by @rambleraptor in #1174
- fix(transforms): support timestamp nanos in year and month by @fallintoplace in #1196
- feat(table): reject Variant in IdentityTransform and bound literal predicates by @nssalian in #1206
- fix: runtime.staticuint64s+42100384 is not 2-byte aligned on big-endian by @strophy in #1194
- build(deps): bump github/codeql-action from 4.36.0 to 4.36.2 by @dependabot[bot] in #1203
- build(deps): bump actions/checkout from 6.0.2 to 6.0.3 by @dependabot[bot] in #1202
- build(deps): bump the gomod_updates group with 10 updates by @dependabot[bot] in #1204
- fix(table): do not claim sort_order_id on files the writer did not fully sort by @twuebi in #1184
- fix: manifest pruning when partition source columns are dropped by @rraulinio in #1191
- fix(catalog/sql): use catalog name instead of hardcoded "sql" by @badalprasadsingh in #1211
- fix(table): Propagate snapshotbyID error in snapshot summaries by @dttung2905 in #1201
- fix(transforms): truncate strings by Unicode code points instead of UTF-8 bytes by @badalprasadsingh in #1223
- fix(manifest): expose day-transform partition values as Date by @tanmayrauth in #1218
- test(recipe): bump Spark 4 integration Iceberg runtime to 1.11.0 by @nssalian in #1224
- fix: incorrect pruning for NOT STARTS WITH over truncated string partitions by @rraulinio in #1193
- feat(table): WKB encoding + GeoArrow conversion for geometry/geography by @happydave1 in #1138
- fix(transforms): support timestamp nanos in bucket by @fallintoplace in #1197
- fix(transforms): preserve "+00:00" UTC offset for TimestampTz / TimestampTzNs in IdentityTransform.ToHumanStr by @badalprasadsingh in #1227
- docs: document concurrent writes and conflict resolution by @laskoviymishka in #1208
- fix(transforms): preserve UTF-8 in string truncate by @fallintoplace in #1198
- feat(table): add partition-match predicate for dynamic overwrite by @laskoviymishka in #1217
- docs: document ExpireSnapshots in the Maintenance API section by @laskoviymishka in #1209
- fix(dv): deletion vectors orphaned by data-file rewrite by @twuebi in #1221
- refactor(catalog): Minimize functions in interface for Hadoop catalog by @C-Loftus in #1185
- fix(table): return error instead of panicking on unsupported geo CRS by @laskoviymishka in #1234
- fix(v3): _row_id renumbering when rows are dropped in a scan by @twuebi in #1237
- build(deps): bump the gomod_updates group with 8 updates by @dependabot[bot] in #1240
- build(deps): bump github.com/containerd/containerd/v2 from 2.2.4 to 2.2.5 by @dependabot[bot] in #1243
- test: clean up geoarrow conversion coverage by @neu-hsc in #1235
- CI: Check ASF action allowlist on every PR by @ebyhr in #1254
- Custom namespace separator by @rambleraptor in #1253
- feat(transform): deprecate Transform.ToHumanStr(any) in favor of type-aware ToHumanStrType by @badalprasadsingh in #1252
- fix(table): abort parquet data file writes after batch write failure by @fallintoplace in #1241
- fix(catalog/hadoop): validate table identifiers by @fallintoplace in #1228
- fix: keep generated position deletes correct under row-group pruning by @twuebi in #1246
- Truncate projection counts UTF-8 string prefixes in bytes instead of characters by @rraulinio in #1249
- ci: key go and lint caches by version and gate saves to main by @abnobdoss in #1263
- feat(catalog/hadoop): Allow opt-in for arbitrary schemes for Hadoop Catalog by @C-Loftus in #1268
- fix(table): remove parquet files on abort by @fallintoplace in #1257
- ci: run lint-and-test on the real os matrix by @abnobdoss in #1264
- feat(table): variant shredded reader + bump arrow-go version by @nssalian in #1238
- fix(table): clean up partial positional deletes on error by @fallintoplace in #1245
- fix: drop redundant hadoop namespace stat by @Revanth14 in #1293
- fix(catalog): avoid mutating load properties by @fallintoplace in #1291
- fix(table): handle string file_path layouts in position deletes by @fallintoplace in #1229
- test: cover the case-insensitive branch of splitLineageMetadataFields by @AhmedDlshad007 in #1281
- Table race detector finds shared-state races in partition path and position-delete schema tests by @rraulinio in #1266
- fix(table): stop manifest iteration spin by @fallintoplace in #1258
- fix(v3): re-enable row-group pruning with correct row lineage tracking by @twuebi in #1250
- fix: keep ExpireSnapshots retention defaults at int64 on 32-bit builds by @nanookclaw in #1282
- feat(compaction): force compaction on file-scoped delete dead space by @twuebi in #1296
- feat(exprs): expression parsing for server-side planning by @rambleraptor in #1212
- fix(table): guard nil sequence number in matchDVToData by @laskoviymishka in #1270
- fix(manifest): inherit first_row_id for v1/v2-era manifests in v3 tables by @twuebi in #1295
- test: distinguish the managed-identity branch from the DefaultAzureCredential fallback by @AhmedDlshad007 in #1297
- fix(table): honor useLargeTypes when projecting list arrays by @twuebi in #1299
- fix(table): release empty scan batches by @fallintoplace in #1290
- fix(io): keep MemFS WalkDir within root by @fallintoplace in #1302
- fix(catalog/rest): close SigV4 signing body clone by @fallintoplace in #1304
- fix(table): return error when rolling writer is closed by @fallintoplace in #1305
- fix(manifest): commit writer state after encode by @fallintoplace in #1306
- fix: reject invalid parameterized transforms by @fallintoplace in #1308
- fix(table): write added manifests with file spec by @fallintoplace in #1301
- fix(table): reject empty equality delete keys by @fallintoplace in #1303
- fix(io): create parent dirs in LocalFS WriteFile by @fallintoplace in #1310
- test: cover Glue and Hive purge table by @Revanth14 in #1285
- refactor: require ListableIO for orphan cleanup walk by @Revanth14 in #1286
- fix(codec): validate primary data file spec id in EncodeFileScanTask by @laskoviymishka in #1287
- fix(table): recover panics in RollingDataWriter.stream by @laskoviymishka in #1279
- feat(table,rest): propose public API surface for REST scan planning by @Revanth14 in #1213
- fix(table): harden GeoArrow CRS read parsing by @Revanth14 in #1239
- test: pin geo type JSON wire format by @Revanth14 in #1284
- fix(catalog/glue): case-insensitive type match in convertGlueToIceberg by @prafulla-kiran in #1269
- fix(table): reject read-only file io in write paths by @fallintoplace in #1256
- fix(literals): incorrect comparison result for (false, false) in BoolLiteral.Comparator by @badalprasadsingh in #1317
- fix(literals): handle non-int64 big-int correctly when casting DecimalLiteral to Int32 by @badalprasadsingh in #1323
- fix(table): track actual metadata removals by @fallintoplace in #1311
- fix(table): detect concurrently-removed data files in row-level deletes by @laskoviymishka in #1298
- feat(cmd/config): add aws-profile support for Glue catalog by @rasta-rocket in #1320
- fix(table): equality delete null key encoding by @fallintoplace in #1242
- fix(catalog/hadoop): publish metadata without replacement by @fallintoplace in #1300
- fix(table): return ([]string, error) from writePositionDeletesForFiles by @laskoviymishka in #1342
- fix(catalog/hadoop): Load arbitrary filesystems dynamically for hadoop catalog by @C-Loftus in #1280
- fix(table): return scanner memoization errors by @fallintoplace in #1333
- fix(manifest): preserve 64-bit list metadata ids by @fallintoplace in #1334
- fix(table): dedupe transaction requirements by semantics by @fallintoplace in #1328
- fix(table): preserve version hint URIs in orphan cleanup by @fallintoplace in #1331
- fix(partitions): align paths with compacted partition fields by @fallintoplace in #1332
- docs(catalog): fix tabulario image name by @fallintoplace in #1335
- fix(table): validate pos delete position chunks by @fallintoplace in #1337
- fix(glue): revalidate source table during rename by @fallintoplace in #1338
- fix(rest): reject malformed authorization URLs by @fallintoplace in #1336
- feat: let WriteManifest set and return v3 first_row_id by @the-onewho-knocks in #1321
- fix: use transform equality for partition compatibility by @fallintoplace in #1314
- Add explicit next-row-id monotonic increase check (#589) by @hectar-glitches in #1054
- fix(table): reject float equality delete fields by @fallintoplace in #1347
- fix(rest): honor token property in catalog config by @fallintoplace in #1330
- fix(table): reject nil uuid assignment updates by @fallintoplace in #1329
- fix(rest): require absolute auth URL by @fallintoplace in #1345
- fix: validate schema field IDs during unmarshal by @fallintoplace in #1315
- fix(table): validate sort field source IDs by @fallintoplace in #1313
- build(deps): bump the gomod_updates group with 6 updates by @dependabot[bot] in #1341
- build(deps): bump actions/checkout from 6.0.3 to 7.0.0 by @dependabot[bot] in #1340
- fix(table): bound manifest merge concurrency by @fallintoplace in #1361
- Clone metadata builder properties by @fallintoplace in #1353
- fix(catalog/hadoop): load discovered metadata files by @fallintoplace in #1292
- Preserve reserved Glue and Hive table parameters by @fallintoplace in #1352
- fix(puffin): guard ClearProperties after Finish by @fallintoplace in #1373
- fix(table): reject nil table in PositionDeltaWriter by @fallintoplace in #1374
- fix(partitions): copy partition fields in NewPartitionSpecID by @fallintoplace in #1376
- fix(gocloud): parse gcs.usejsonapi as boolean by @fallintoplace in #1377
- fix(table): return errors for invalid writer file schemas by @fallintoplace in #1375
- fix(requirements): validate missing last partition spec id by @fallintoplace in #1380
- fix(types): safe compare defaults in NestedField.Equals by @fallintoplace in #1383
- fix(table): clone scan options map in WithOptions by @fallintoplace in #1385
- fix(transforms): validate BucketTransform NumBuckets by @fallintoplace in #1365
- fix(table): clarify v3 next-row-id overflow guard, harden tests by @laskoviymishka in #1348
- fix(rest): validate table and view identifiers by @fallintoplace in #1354
- fix(view): join view metadata location by @fallintoplace in #1356
- fix(metadata): replace updates on unmarshal by @fallintoplace in #1357
- fix(scan): use snapshot schema for pruning by @fallintoplace in #1358
- fix(sql): return error for unsupported dialect by @fallintoplace in #1362
- fix(dv): reject negative deletion-vector positions in DVWriter.Add by @fallintoplace in #1364
- fix(literals): return BinaryLiteral for FixedLiteral→binary cast by @fallintoplace in #1366
- fix(sort): validate sort source IDs during unmarshal by @fallintoplace in #1367
- fix(io): validate cloud object URI buckets by @fallintoplace in #1259
- fix(table): separate rolling data writer close/abort paths by @fallintoplace in #1368
- fix(table): clone selected fields in scan options by @fallintoplace in #1390
- fix(codec): validate FileScanTask scan ranges on decode by @fallintoplace in #1395
- fix(io): return not-exist error for missing MemFS removals by @fallintoplace in #1396
- fix(table): dedupe repeated ref assertions by ref name by @tanmayrauth in #1370
- feat(metrics): add Reporter contract and built-in reporters (#1236) by @tanmayrauth in #1343
- fix(table): apply optionality updates to list elements and map values in UpdateSchema by @badalprasadsingh in #1425
- fix(table): merge deletion vectors on repeated merge-on-read deletes by @tanmayrauth in #1419
- fix(types): validate fixed type length by @fallintoplace in #1404
- fix(hadoop): return invalid identifier errors from CheckTableExists by @fallintoplace in #1389
- fix(types): validate decimal parsing by @fallintoplace in #1405
- docs(table): clarify mixed-group lineage-drop behavior by @fallintoplace in #1392
- fix: validate format-version in metadata constructors by @fallintoplace in #1387
- fix(config): seed --catalog-name from default-catalog in config file by @rasta-rocket in #1319
- fix(table): clone row delta snapshot properties by @fallintoplace in #1403
- feat(metrics): add report and wire types (#1236) by @tanmayrauth in #1421
- Add SQL UDF metadata model package by @rraulinio in #1418
- fix(table): match partition-scoped pos-deletes in rewrite conflict validation by @twuebi in #1428
- build(deps): bump actions/cache/restore from 5.0.5 to 6.1.0 by @dependabot[bot] in #1407
- build(deps): bump the gomod_updates group with 3 updates by @dependabot[bot] in #1409
- build(deps): bump actions/setup-go from 6.4.0 to 6.5.0 by @dependabot[bot] in #1408
- build(deps): bump actions/cache/save from 5.0.5 to 6.1.0 by @dependabot[bot] in #1410
- fix(transforms): guard bucket transformer unsupported source types by @fallintoplace in #1363
- feat(catalog/hadoop): Add support for hadoop catalog fs interface methods to blob filesystem by @C-Loftus in #1350
- fix(catalog/sql): migrate legacy V0 iceberg_tables schema and tolerate null iceberg_type by @badalprasadsingh in #1244
- fix(hadoop): use codec-aware metadata filenames by @fallintoplace in #1326
- feat(table): emit geo bounds in manifest DataFile by @tanmayrauth in #1371
- feat(table): public helper to build datafile from in-heap parquet metadata by @badalprasadsingh in #1214
- fix(rest): accept oauth2-server-uri for the OAuth token endpoint by @tanmayrauth in #1369
- fix(ci): give Trino healthcheck startup grace time by @fallintoplace in #1429
- fix(table): make transaction apply atomic by @fallintoplace in #1416
- fix(table): fix occ rewrite resurrection by @twuebi in #1427
- fix(table): validate write defaults under old schema versions by @fallintoplace in #1417
- fix(conflict_validation): reject invalid isolation-level values by @fallintoplace in #1398
- fix(table): close parquet input file on reader init failure by @fallintoplace in #1378
- fix(cli): resolve partition spec fields by schema name by @fallintoplace in #1379
- fix(table): surface transaction initialization errors by @fallintoplace in #1388
- fix(metadata): validate v3 snapshot sequence numbers by @fallintoplace in #1394
- fix(table): validate parquet file writer properties by @fallintoplace in #1400
- fix(manifest): protect FileSequenceNum from aliasing by @fallintoplace in #1401
- fix(cli): validate branch and tag retention inputs by @fallintoplace in #1399
- feat(cli): RewriteManifests Maintenance Task by @rambleraptor in #1283
- Infra: Group github/codeql-action bumps into a single dependabot PR by @ebyhr in #1446
- build(deps): bump golangci/golangci-lint-action from 9.2.1 to 9.3.0 by @dependabot[bot] in #1456
- build(deps): bump the codeql-action group with 2 updates by @dependabot[bot] in #1460
- fix(table): include statistics in metadata equality by @fallintoplace in #1448
- fix(hive): keep catalog properties out of view metadata by @fallintoplace in #1450
- fix: separate snapshot and reference expiration ages by @fallintoplace in #1453
- Unify as-of scan snapshot resolution by @fallintoplace in #1455
- build(deps): bump github.com/sigstore/sigstore-go from 1.1.4 to 1.2.0 by @dependabot[bot] in #1445
- build(deps): bump the gomod_updates group across 1 directory with 9 updates by @dependabot[bot] in #1459
- fix(catalog): validate requirements when creating tables by @fallintoplace in #1451
- fix(table): include orphan file sizes in cleanup results by @fallintoplace in #1412
- fix(view): validate SQL representations in NewVersion by @fallintoplace in #1384
- feat(table): variant shredded writer by @nssalian in #1351
- feat(udf): add SQL UDF REST catalog read support by @rraulinio in #1432
- feat(table): add history metadata table by @laskoviymishka in #1465
- fix(hive): lock table drops and renames by @fallintoplace in #1442
- test(table): guard MetadataBuilder.clone against field drift by @laskoviymishka in #1435
- fix(hadoop): purge table root after metadata cleanup by @fallintoplace in #1449
- fix(manifest): preserve empty partition list on rewrite by @Revanth14 in #1464
- fix: validate retention durations by @fallintoplace in #1443
- feat(rest): implement scan planning client methods by @Revanth14 in #1324
- fix(table): protect identifier from external mutation by @fallintoplace in #1382
- fix(hive): clean up pending locks after cancellation by @fallintoplace in #1468
- feat(rest): implement WaitForPlan poller for scan planning by @Revanth14 in #1469
- fix(table): avoid mutating binary upper bounds by @fallintoplace in #1470
- fix(puffin): clone blob metadata inputs by @fallintoplace in #1471
- fix(io): preprocess names consistently for removal by @fallintoplace in #1472
- fix(cli): fail closed on explicit config errors by @fallintoplace in #1473
- fix(cli): resolve sort fields by schema name by @fallintoplace in #1474
- test(rest): fix flaky TestWaitForPlanBoundsSlowServerSideCancel by @zeroshade in #1475
- feat(rest): Add support for Rename View endpoint by @rambleraptor in #1461
- WitMaxConcurrency rewrite by @rambleraptor in #1462
- feat(compaction): add CollectDeadPositionDeletes for leader-side expunge by @twuebi in #1434
- fix(table): avoid panic pruning an empty snapshot log by @fallintoplace in #1482
- fix(io): avoid deadlock in MemFS WalkDir callbacks by @fallintoplace in #1485
- fix(rest): stop pagination on repeated page tokens by @fallintoplace in #1484
- fix(hadoop): recognize UUID metadata versions above 99999 by @fallintoplace in #1483
- fix(catalog): compare multi-table identifiers by component by @fallintoplace in #1481
- refactor(table): centralize transaction metadata checks by @Revanth14 in #1479
- fix(glue): fence commits during table rename by @fallintoplace in #1467
- fix(promotion): Require equal scale in decimal type promotion by @rambleraptor in #1480
- fix(sql): distinguish dotted namespace components by @fallintoplace in #1439
- feat(encryption): add EncryptionManager, KeyManagementClient interfaces + in-memory KMS by @hectar-glitches in #1447
- fix(table): guard malformed parquet UUID stats by @fallintoplace in #1414
- fix(rest): reject nil view versions by @fallintoplace in #1488
- feat(table): add snapshots metadata table by @laskoviymishka in #1476
- fix(table): honor URI prefix mismatch modes in orphan cleanup by @fallintoplace in #1437
- fix(catalog): reject empty table identifiers by @fallintoplace in #1441
- fix(manifest): clone partition and key metadata inputs by @fallintoplace in #1402
- fix(glue): accept empty root namespace identifiers by @fallintoplace in #1490
- fix(rest): apply server config to HTTP session by @fallintoplace in #1440
- fix(table): validate encryption-key metadata fields by @fallintoplace in #1406
- build(deps): bump the codeql-action group with 2 updates by @dependabot[bot] in #1495
- build(deps): bump the gomod_updates group with 6 updates by @dependabot[bot] in #1497
- build(deps): bump actions/labeler from 6.1.0 to 6.2.0 by @dependabot[bot] in #1496
- test(rest): add fake server for REST scan planning by @Revanth14 in #1494
- feat(metrics): wire reporter selection through catalog, table, and scan (#1236) by @tanmayrauth in #1430
- build(deps): bump zizmorcore/zizmor-action from 0.5.6 to 0.5.7 by @dependabot[bot] in #1339
- chore(deps): bump arrow-go to v18.7.0 by @nssalian in #1504
- fix(glue): apply catalog properties when loading metadata by @fallintoplace in #1487
- feat(table): bounds for shredded variant fields by @nssalian in #1478
- fix(glue): map fixed types to binary by @fallintoplace in #1519
- fix(hive): derive namespace location from the warehouse by @iremcaginyurtturk in #1507
- fix(io): S3 compatibility with GCS HMAC endpoints by @badalprasadsingh in #1423
- fix(table): validate snapshot references by @fallintoplace in #1512
- fix(table): tolerate missing snapshot summary operation by @fallintoplace in #1513
- fix(table): avoid mutating sort fields during marshaling by @fallintoplace in #1515
- fix(table): make summary equality nil-safe by @fallintoplace in #1516
- fix(table): honor parquet row group byte target by @fallintoplace in #1517
- fix(table): cross-check deletion vector cardinality against manifest record_count by @tanmayrauth in #1510
- fix(hadoop): validate metadata before dropping tables by @fallintoplace in #1491
- fix(glue): reject dropping non-empty namespaces by @fallintoplace in #1520
- feat(table): union schema evolution by @badalprasadsingh in #1359
- feat(rest): decode REST scan-task payloads into FileScanTasks by @Revanth14 in #1492
- fix(schema): prevent AsStruct aliasing by @fallintoplace in #1415
- fix(partitions): reject negative PartitionSpec IDs by @fallintoplace in #1413
- fix(glue): use canonical comment property for descriptions by @fallintoplace in #1521
- fix(table): validate retry duration properties by @fallintoplace in #1454
- fix(manifest): encode decimal partitions with declared width by @fallintoplace in #1355
- fix(table): return defensive metadata getter copies by @fallintoplace in #1444
- fix(cli): execute confirmed orphan cleanup plans by @fallintoplace in #1452
- fix(sql): keep namespace drops atomic by @fallintoplace in #1466
- fix(hive): synchronize HMS table metadata on commit by @fallintoplace in #1486
- fix(table): reject null position deletes by @fallintoplace in #1518
- fix(sql): reject table-view name collisions by @fallintoplace in #1489
- feat(metrics): instrument scan planning and emit ScanReport (#1236) by @tanmayrauth in #1501
- fix(io/gcs): authenticate the GCS client with supplied credentials by @iremcaginyurtturk in #1503
- fix(io/s3): let explicit s3.* credentials override the context AWS config by @iremcaginyurtturk in #1506
- fix(transforms): validate parameterized transform values by @fallintoplace in #1508
- fix(partitions): assign missing partition field IDs by @fallintoplace in #1514
- feat(table): aggregate geo bounds across data files at manifest level by @tanmayrauth in #1511
- fix(catalog/rest): ScanPlan requests + responses by @rambleraptor in #1477
- feat(encryption): add KMS catalog-property registry by @hectar-glitches in #1493
- feat(table): projjson read/write support by @C-Loftus in #1426
- fix(glue): preserve existing column comments by @fallintoplace in #1522
- fix(hadoop): return fully qualified child namespaces by @fallintoplace in #1524
- fix(table): safely match binary equality-delete partitions by @fallintoplace in #1528
- fix(table): return defensive sort field copies by @fallintoplace in #1538
- fix(hive): cap lock backoff without overflow by @fallintoplace in #1539
- fix(manifest): return defensive metadata copies by @fallintoplace in #1544
- fix(view): reject null and duplicate metadata entries by @fallintoplace in #1525
- fix(udf): protect metadata and identifiers from mutation by @fallintoplace in #1526
- fix(view): return defensive metadata copies by @fallintoplace in #1541
- fix(view): report metadata writer close errors by @fallintoplace in #1542
- fix(partitions): retain dropped-source partition fields by @fallintoplace in #1527
- fix(table): reject invalid schema entries by @fallintoplace in #1531
- fix(partitions): return defensive field copies by @fallintoplace in #1540
- fix(transforms): bucket timestamp nanos at microsecond precision by @fallintoplace in #1529
- fix(transforms): avoid hour string overflow by @fallintoplace in #1530
- fix(literals): reject timestamp nanos overflow by @fallintoplace in #1533
- fix(puffin): return defensive metadata copies by @fallintoplace in #1532
- fix(io): reject invalid MemFS offsets by @fallintoplace in #1545
- fix(table): emit Last sentinel for scan tasks with no record batches by @hankivstmb in #1537
- fix(table): reject reserved metadata field IDs before reassignment by @tanmayrauth in #1548
- fix(table): invalidate shredded variant bounds only on the field's own residual by @nssalian in #1555
- build(deps): bump the codeql-action group with 2 updates by @dependabot[bot] in #1549
- build(deps): bump zizmorcore/zizmor-action from 0.5.7 to 0.6.0 by @dependabot[bot] in #1550
- build(deps): bump actions/checkout from 7.0.0 to 7.0.1 by @dependabot[bot] in #1551
- build(deps): bump actions/setup-go from 6.5.0 to 7.0.0 by @dependabot[bot] in #1552
- build(deps): bump actions/labeler from 6.2.0 to 7.0.0 by @dependabot[bot] in #1553
- build(deps): bump the gomod_updates group with 8 updates by @dependabot[bot] in #1554
- fix(io): strip GCS-incompatible SDK headers on reads too by @iremcaginyurtturk in #1559
- fix(sql): hide namespace exists sentinel property by @fallintoplace in #1411
- fix(table): repair broken build from stray internal.Enumerated reference by @iremcaginyurtturk in #1564
- fix(ci): make labeler config parse under actions/labeler v7 by @iremcaginyurtturk in #1565
- fix(cli): report successful drop operation in cli by @jx2lee in #1566
- feat(expr): bbox predicate evaluation for geo pruning by @tanmayrauth in #1597
- fix(view): protect identifiers from mutation by @fallintoplace in #1543
- fix(table): cancel record writes on iterator stop by @fallintoplace in #1595
- fix(dv): validate metadata before writing Puffin files by @fallintoplace in #1589
- fix(table): reject duplicate snapshot IDs by @fallintoplace in #1592
- fix(types): floor negative nanosecond timestamps by @fallintoplace in #1586
- fix(table): calculate snapshot summary totals as int64 by @fallintoplace in #1582
- fix(substrait): preserve nested reference paths by @fallintoplace in #1588
- fix(puffin): constrain DV cardinality to int64 by @fallintoplace in #1587
- fix(table): preserve branch/tag rentention settings on snapshot ref updates by @badalprasadsingh in #1601
- test(table): use SerializeDV for scanner DV fixture by @jx2lee in #1608
- fix(table): mark transaction committed only after successful commit by @badalprasadsingh in #1603
- fix(name_mapping): isolate updated mappings by @fallintoplace in #1547
- fix(partitions): validate decoded partition specs by @fallintoplace in #1593
- fix(schema): match Java column name sanitization by @fallintoplace in #1576
- fix(literals): reject oversized fixed-width values by @fallintoplace in #1585
- fix(table): validate last-updated-ms presence by @fallintoplace in #1591
- fix(table): canonicalize partition values used as map keys by @fallintoplace in #1581
- fix(io): make MemFS WalkDir emit directory entries by @fallintoplace in #1604
- fix(table): validate position-delete columns before access by @fallintoplace in #1583
- fix(puffin): poison writers after write failures by @fallintoplace in #1594
- fix(hive): release acquired locks with a cleanup context by @fallintoplace in #1605
- fix(table): rewrap extension arrays instead of casting when projecting by @twuebi in #1599
- fix(table): accept EWKB-encoded geometry values when computing geo bounds by @twuebi in #1598
- fix(aws): reject incomplete static credential configuration by @fallintoplace in #1574
- chore(ci): Update ASF allowlist check action dependency to track versioned releases by @kevinjqliu in #1623
- fix(cli): report correct entity type for missing property by @jx2lee in #1621
- fix(table): reject ambiguous row-id columns in position deltas by @fallintoplace in #1616
- fix(expr): reject trailing data after boolean expressions by @fallintoplace in #1609
- fix(table): keep generated snapshot IDs non-negative by @fallintoplace in #1619
- fix(manifest): reject unsupported format versions by @fallintoplace in #1612
- fix(udf): replace state during JSON decoding by @fallintoplace in #1626
- fix(dv): reject trailing bitmap data by @fallintoplace in #1625
- fix(hive): preserve RegisterTable creation errors by @fallintoplace in #1573
- fix(io): wrap blob Open failures as path errors by @fallintoplace in #1577
- test(table): geometry write path populates manifest bounds end-to-end by @tanmayrauth in #1632
- fix(cli): use standard property keys when creating a namespace by @jx2lee in #1633
- INFRA: Use PR titles for squash commits by @kevinjqliu in #1649
- fix(table): default absent geoarrow CRS metadata to OGC:CRS84 by @twuebi in #1634
- feat(metrics): Instrument commits and emit CommitReport ( #1236) by @tanmayrauth in #1596
- fix(hive): propagate object-loading failures during listing by @fallintoplace in #1572
- fix(puffin): reject trailing data in footer payloads by @fallintoplace in #1580
- fix(rest): surface failures refreshing expired credentials by @fallintoplace in #1579
- fix(io): parse local file URIs consistently by @fallintoplace in #1578
- fix(schema): replace state during JSON decoding by @fallintoplace in #1628
- fix(manifest): reject row ID allocation overflow by @fallintoplace in #1627
- fix(table): guard DV filtering against stale row counts by @fallintoplace in #1624
- fix(table): enable Parquet dictionary encoding by default by @twuebi in #931
- build(deps): bump github.com/sigstore/sigstore-go from 1.2.0 to 1.2.1 by @dependabot[bot] in #1622
- build(deps): bump the codeql-action group with 2 updates by @dependabot[bot] in #1629
- build(deps): bump zizmorcore/zizmor-action from 0.6.0 to 0.6.1 by @dependabot[bot] in #1630
- test(table): strengthen same-snapshot equality delete coverage by @fallintoplace in #1653
- fix(rest): accept legacy content enum values by @fallintoplace in #1660
- fix(manifest): make empty writer close terminal by @fallintoplace in #1610
- fix(dv): validate deletion-vector blob identity by @fallintoplace in #1615
- fix(io/gcs): propagate application-default credential errors by @fallintoplace in #1584
- fix(substrait): convert nanosecond timestamp literals by @fallintoplace in #1590
- fix(rest): close internally owned transports by @fallintoplace in #1606
- fix(codec): reject nil data files in scan tasks by @fallintoplace in #1611
- fix(table): make time-travel lookup order independent by @fallintoplace in #1656
- fix(table): defer SetIdentifierField to preserve UpdateSchema chain ordering by @badalprasadsingh in #1690
- fix(view): snapshot property update inputs by @fallintoplace in #1643
- fix(table): preserve unknown statistics blob types by @fallintoplace in #1663
- fix(table): close manifest lists before staging snapshots by @fallintoplace in #1673
- fix(table): require fields in update decoders by @fallintoplace in #1667
- fix(schema): validate schema JSON shape by @fallintoplace in #1661
- fix(table): use data file metrics in conflict checks by @fallintoplace in #1671
- fix(table): bound AllManifests concurrency by @fallintoplace in #1668
- fix(table): advance string upper bounds across surrogate gap by @fallintoplace in #1645
- build(deps): bump google.golang.org/grpc from 1.82.0 to 1.82.1 by @dependabot[bot] in #1523
- Fix stale commit-retry doc comment by @alessandro-nori in #1652
- fix(rest): reject NUL in namespace identifiers by @fallintoplace in #1614
- fix(codec): validate scan ranges against file size by @fallintoplace in #1618
- fix(schema): protect field getters from mutation by @fallintoplace in #1534
- fix(table): validate numeric Parquet writer properties by @fallintoplace in #1672
- fix(partitions): require fields in partition spec JSON by @fallintoplace in #1662
- fix(table): reject tags as transaction targets by @fallintoplace in #1657
- fix(table): reject refreshes with changed table UUID by @fallintoplace in #1659
- test(table): run TableWritingTestSuite against format version 3 by @rambleraptor in #1693
- feat(transforms): read unknown partition and sort transforms (v3) by @rambleraptor in #1463
- build(deps): bump the gomod_updates group with 10 updates by @dependabot[bot] in #1631
- Catalog conformance tests by @rambleraptor in #1694
- fix(cli): accept case-insentive catalog types in cli by @jx2lee in #1650
- Add more conformance tests by @rambleraptor in #1705
- fix(view): replace metadata state during JSON decoding by @fallintoplace in #1646
- fix(hive): jitter lock-retry waits to decorrelate contending clients by @1991santhu in #1640
- fix(hive): tighten the lock-jitter docs and tests from post-merge review by @1991santhu in #1714
- fix(table): read legacy property update field names by @fallintoplace in #1725
- test(table): expand geometry write-path coverage by @tanmayrauth in #1706
- fix(table): reject ambiguous equality-delete columns by @fallintoplace in #1617
- build(deps): bump the codeql-action group with 2 updates by @dependabot[bot] in #1732
- build(deps): bump zizmorcore/zizmor-action from 0.6.1 to 0.6.2 by @dependabot[bot] in #1733
- build(deps): bump the gomod_updates group with 8 updates by @dependabot[bot] in #1734
- fix(exprs): protect bound literal sets from mutation by @fallintoplace in #1546
- fix(catalog): add five-minute prefetch buffer for vended credentials by @badalprasadsingh in #1561
- fix: preserve current logical schema column order in schemasToGlueColumns by @badalprasadsingh in #1563
- feat(metrics): add REST metrics reporter (#1236) by @tanmayrauth in #1655
- fix(table): keep scan ref selectors exclusive by @fallintoplace in #1658
- fix(table): require fields in requirement decoders by @fallintoplace in #1669
- fix(partitions): reject redundant fields in the spec builder by @laskoviymishka in #1674
- fix(catalog/sql): preserve close errors by @fallintoplace in #1684
- feat(table): add metadata log entries table by @fallintoplace in #1696
- fix(table): compare sort order IDs by value by @fallintoplace in #1722
- fix(literals): return independent bool marshal bytes by @fallintoplace in #1723
- fix(table): preserve unknown snapshot operation values by @fallintoplace in #1726
- fix(table): align snapshot expiration retention semantics by @fallintoplace in #1736
- Add Transaction.RemoveProperties by @alessandro-nori in #1751
- fix(types): reject decimal scales above precision by @fallintoplace in #1708
- fix(types): reject malformed fixed type names by @fallintoplace in #1709
- fix(types): require list element type during JSON decoding by @fallintoplace in #1710
- fix(types): require map key type during JSON decoding by @fallintoplace in #1711
- fix(literals): correct below-min marshal error by @fallintoplace in #1713
- fix(types): require map value type during JSON decoding by @fallintoplace in #1712
- fix(table): honor initial defaults in read filters by @mattfaltyn in #1558
- fix(sql): validate view identifiers at API boundaries by @fallintoplace in #1571
- fix(table): apply per-task residual filters in ReadTasks by @fallintoplace in #1676
- fix(table): close stale scan plan IO by @fallintoplace in #1683
- fix(hive): use 1.5 lock-check backoff scale to match Java by @dgvj-work in #1756
- feat(dv): add SetRange and RunLengthEncode to RoaringPositionBitmap by @dimakuz in #1758
- fix(cli): validate refs type before loading table by @jx2lee in #1759
- test(catalog): add namespace lifecycle conformance tests by @laskoviymishka in #1761
- fix(manifest): infer manifest list version from the embedded writer schema by @ryanworl in #1762
- feat(metrics): add OpenTelemetry reporter (#1236) by @tanmayrauth in #1767
- fix(table): sort identifier field IDs for deterministic schema updates by @badalprasadsingh in #1777
- fix(table): delete column should check the column's own pending update by @badalprasadsingh in #1779
- fix(table): skip DELETED manifest entries in Snapshot.dataFiles by @ryanworl in #1783
- fix(table): fail commits with delete-file removals instead of replaying by @ryanworl in #1784
- hotfix: fix golangci-lint errors by @badalprasadsingh in #1789
- fix(table): validate write default type in update column by @badalprasadsingh in #1788
- feat(rest): support snapshot-loading-mode catalog property in loadTable by @technicolorbeat in #1749
- perf(table): index equality deletes by partition and sequence by @fallintoplace in #1752
- fix(hive): align lock-check config keys and defaults with Java by @dgvj-work in #1763
- feat(table): add Transaction.AssertRefSnapshotID (Java UpdateRequirements parity) by @ryanworl in #1786
- feat(table): RowDelta.RemoveDeletes for deletion-vector supersession by @ryanworl in #1785
- fix(partitions): preserve source-less void tombstones by @mattfaltyn in #1794
- feat(metrics): include environment context in commit reports by @fallintoplace in #1680
- fix(table): replace metadata state during JSON decoding by @fallintoplace in #1648
- fix(table): preserve field state on failed JSON decoding by @fallintoplace in https://github.com/apache/iceberg-go/pull/1647
- fix(table): reuse historical partition field IDs on v2+ tables when re-adding a removed field by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1641
- feat(table): add manifests metadata table by @fallintoplace in https://github.com/apache/iceberg-go/pull/1697
- fix(cli): support SQL catalog and validate DynamoDB type by @dgvj-work in https://github.com/apache/iceberg-go/pull/1707
- feat(table): add data files metadata table by @fallintoplace in https://github.com/apache/iceberg-go/pull/1698
- fix(manifest): protect DataFile metadata from external mutation by @fallintoplace in https://github.com/apache/iceberg-go/pull/1575
- fix(table): resolve write parent snapshot from target branch head instead of main by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1637
- fix(table): update spec reading stale metadata in chained transactions by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1651
- feat(table): add refs metadata table by @fallintoplace in https://github.com/apache/iceberg-go/pull/1695
- feat(table): add incremental append scan by @fallintoplace in https://github.com/apache/iceberg-go/pull/1702
- fix(table): preserve embedded v1 snapshot manifests by @fallintoplace in https://github.com/apache/iceberg-go/pull/1727
- perf(table): reuse equality-delete key sets across scan tasks by @fallintoplace in https://github.com/apache/iceberg-go/pull/1754
- perf(table): batch concurrent manifest entry collection by @fallintoplace in https://github.com/apache/iceberg-go/pull/1755
- perf(table): reuse partition extraction plans by @fallintoplace in https://github.com/apache/iceberg-go/pull/1765
- fix(partitions): reject redundant time transforms on the same source column by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1797
- fix(table): guard nil base in snapshot timestamp check by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1799
- perf(expr): short-circuit boolean evaluator traversal by @fallintoplace in https://github.com/apache/iceberg-go/pull/1800
- perf(puffin): reuse prefetched footer payload by @fallintoplace in https://github.com/apache/iceberg-go/pull/1809
- perf(io): delete GoCloud files concurrently by @fallintoplace in https://github.com/apache/iceberg-go/pull/1811
- perf(expr): pre-size literal sets by @fallintoplace in https://github.com/apache/iceberg-go/pull/1812
- fix(table): look up removed-file partition specs by ID by @codeAnqiang-ma in https://github.com/apache/iceberg-go/pull/1816
- feat(table): allow added data files to target any registered partition spec by @ryanworl in https://github.com/apache/iceberg-go/pull/1818
- fix(table): release owned nested element refs in list / map projection by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1826
- fix(table): scope RollbackToSnapshot to the transaction's target branch by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1828
- fix(table): skip reserved lineage columns missing from the metrics plan by @ryanworl in https://github.com/apache/iceberg-go/pull/1830
- fix(table): do not emit add-sort-order for an existing sort order id by @ryanworl in https://github.com/apache/iceberg-go/pull/1831
- fix(catalog/rest): keep status override when error body is malformed by @ryanworl in https://github.com/apache/iceberg-go/pull/1832
- feat(table): add Transaction.ReplaceSortOrder (Java Table.replaceSortOrder parity) by @ryanworl in https://github.com/apache/iceberg-go/pull/1833
- feat(table): add CommitEqualityDeletes convenience API by @tanmayrauth in https://github.com/apache/iceberg-go/pull/1835
- Namespace properties conformance tests by @rambleraptor in https://github.com/apache/iceberg-go/pull/1795
- perf(table): prebind metadata partition builders by @fallintoplace in https://github.com/apache/iceberg-go/pull/1821
- build(deps): bump the codeql-action group with 2 updates by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/1840
- fix(catalog): normalize registered catalog types by @fallintoplace in https://github.com/apache/iceberg-go/pull/1717
- fix(catalog): reject trailing junk in metadata filenames by @fallintoplace in https://github.com/apache/iceberg-go/pull/1718
- fix(hive): reject metastore URIs without a host by @fallintoplace in https://github.com/apache/iceberg-go/pull/1720
- fix(hive): validate metastore port range by @fallintoplace in https://github.com/apache/iceberg-go/pull/1721
- chore: use modernize to improve code by @zeroshade in https://github.com/apache/iceberg-go/pull/1836
- perf(table): index positional deletes by path and partition by @fallintoplace in https://github.com/apache/iceberg-go/pull/1753
- build(deps): bump the gomod_updates group with 14 updates by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/1841
- fix(table): wrap RollbackToSnapshot input rejections in ErrInvalidArgument by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1837
- fix(partitions): addresses #1797 review follow-ups on comments, docs and time-transform test by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1838
- perf(schema): index name-mapping lookups by @fallintoplace in https://github.com/apache/iceberg-go/pull/1805
- feat(table): add delete files metadata table by @fallintoplace in https://github.com/apache/iceberg-go/pull/1699
- fix(table): resolve write planning snapshots from the target branch head (#1638) by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1839
- fix(table): retain ref head snapshots in expire snapshots (#1829) by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1842
- hotfix: remove redundant loop variable copy in test by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1845
- perf(table): group positional deletes by file path in one pass by @fallintoplace in https://github.com/apache/iceberg-go/pull/1724
- fix(catalog): reject invalid current metadata version before staging by @fallintoplace in https://github.com/apache/iceberg-go/pull/1719
- perf(table): avoid quadratic snapshot-log pruning by @fallintoplace in https://github.com/apache/iceberg-go/pull/1801
- perf(manifest): update partition summaries incrementally by @fallintoplace in https://github.com/apache/iceberg-go/pull/1770
- fix(deps): bump twmb/avro to v1.8.0 and adapt to its API changes by @twmb in https://github.com/apache/iceberg-go/pull/1843
- feat(table): add entries metadata table by @fallintoplace in https://github.com/apache/iceberg-go/pull/1700
- perf(table): format object-store hashes with a fixed buffer by @fallintoplace in https://github.com/apache/iceberg-go/pull/1814
- fix(table): normalize EWKB geometry values on write by @fallintoplace in https://github.com/apache/iceberg-go/pull/1670
- perf(table): index snapshot removals with a set by @fallintoplace in https://github.com/apache/iceberg-go/pull/1802
- feat(table): add partitions metadata table by @fallintoplace in https://github.com/apache/iceberg-go/pull/1701
- perf(table): flatten orphan URI equivalences by @fallintoplace in https://github.com/apache/iceberg-go/pull/1810
- perf(table): prune row groups during row-lineage rewrites by @fallintoplace in https://github.com/apache/iceberg-go/pull/1681
- perf(transform): hash decimal buckets without allocating by @fallintoplace in https://github.com/apache/iceberg-go/pull/1817
- feat(table): allow RewriteFiles to add delete files by @fallintoplace in https://github.com/apache/iceberg-go/pull/1677
- perf(table): precompute data writer invariants by @fallintoplace in https://github.com/apache/iceberg-go/pull/1813
- perf(compaction): compute survivor minimum once by @fallintoplace in https://github.com/apache/iceberg-go/pull/1820
- perf(table): group positional deletes by file path by @fallintoplace in https://github.com/apache/iceberg-go/pull/1773
- perf(table): pre-resolve Parquet stats columns by @fallintoplace in https://github.com/apache/iceberg-go/pull/1775
- perf(table): decode metadata updates in one pass by @fallintoplace in https://github.com/apache/iceberg-go/pull/1822
- build(deps): bump github.com/moby/go-archive from 0.2.0 to 0.3.0 by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/1848
- feat(table): add files metadata tables by @fallintoplace in https://github.com/apache/iceberg-go/pull/1744
- fix(table): retain equality fields for delete scans by @mattfaltyn in https://github.com/apache/iceberg-go/pull/1850
- feat(table): type uniformity for variant shredding inference by @nssalian in https://github.com/apache/iceberg-go/pull/1846
- feat(table): add all manifests metadata table by @fallintoplace in https://github.com/apache/iceberg-go/pull/1745
- build(deps): bump github.com/moby/buildkit from 0.31.0 to 0.31.1 by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/1852
- feat(table): add all entries metadata table by @fallintoplace in https://github.com/apache/iceberg-go/pull/1746
- fix(manifest): inherit writer content when creating manifest files (#1853) by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1854
- perf(table): reuse scan invariants across Arrow reads by @fallintoplace in https://github.com/apache/iceberg-go/pull/1780
- perf(table): group deletion vector reads by Puffin file by @fallintoplace in https://github.com/apache/iceberg-go/pull/1764
- perf(table): size partition row indices adaptively by @fallintoplace in https://github.com/apache/iceberg-go/pull/1769
- fix(partitions,sort): accept ordinal source IDs when decoding by @twuebi in https://github.com/apache/iceberg-go/pull/1665
- improve(rest): add load table response json decoding benchmark by @alexandre-normand in https://github.com/apache/iceberg-go/pull/1654
- fix(table): normalize orphan paths independently of host OS by @fallintoplace in https://github.com/apache/iceberg-go/pull/1644
- hotfix(rest): golangci-lint by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1863
- test(rest): add Java scan planning integration suite by @Revanth14 in https://github.com/apache/iceberg-go/pull/1505
- perf(table): avoid copying contiguous partition batches by @fallintoplace in https://github.com/apache/iceberg-go/pull/1766
- feat(table): add position deletes metadata table by @fallintoplace in https://github.com/apache/iceberg-go/pull/1747
- perf(table): skip clean positional delete batches by @fallintoplace in https://github.com/apache/iceberg-go/pull/1772
- build(deps): bump the gomod_updates group with 9 updates by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/1866
- build(deps): bump the codeql-action group with 2 updates by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/1865
- perf(table): index snapshots by ID by @fallintoplace in https://github.com/apache/iceberg-go/pull/1806
- perf(table): avoid writer-factory lock on cache hits by @fallintoplace in https://github.com/apache/iceberg-go/pull/1782
- perf(table): stream projected equality deletes by @fallintoplace in https://github.com/apache/iceberg-go/pull/1774
- perf(table): decode partition and sort fields once by @fallintoplace in https://github.com/apache/iceberg-go/pull/1823
- fix(manifest): reject inherited row ID overflow by @fallintoplace in https://github.com/apache/iceberg-go/pull/1742
- fix(manifest): keep writer content consistent by @fallintoplace in https://github.com/apache/iceberg-go/pull/1739
- fix(table): respect gc.enabled during snapshot expiration by @fallintoplace in https://github.com/apache/iceberg-go/pull/1737
- fix(table): preserve AllManifests read errors by @fallintoplace in https://github.com/apache/iceberg-go/pull/1730
- fix(table): require order-id and fields in sort order JSON by @fallintoplace in https://github.com/apache/iceberg-go/pull/1729
- fix(schema): reject missing requiredness flags by @fallintoplace in https://github.com/apache/iceberg-go/pull/1728
- feat(table): commit partial rewrites per group by @fallintoplace in https://github.com/apache/iceberg-go/pull/1682
- fix(rest): reject trailing JSON responses by @fallintoplace in https://github.com/apache/iceberg-go/pull/1743
- perf(dv): avoid dense expansion for sparse masks by @fallintoplace in https://github.com/apache/iceberg-go/pull/1824
- fix(manifest): reject invalid manifest entries by @fallintoplace in https://github.com/apache/iceberg-go/pull/1741
- fix(transforms): handle truncate projection bounds by @fallintoplace in https://github.com/apache/iceberg-go/pull/1740
- fix(expr): drop out-of-range set literals by @mattfaltyn in https://github.com/apache/iceberg-go/pull/1872
- fix(literals): reject out-of-range int64-date conversion by @ferhatelmas in https://github.com/apache/iceberg-go/pull/1877
- refactor: shared deep clone helper for initial and write defaults by @ferhatelmas in https://github.com/apache/iceberg-go/pull/1879
- test(rest): harden Java scan planning integration coverage by @Revanth14 in https://github.com/apache/iceberg-go/pull/1878
- fix(table): validate required metadata identity fields by @Revanth14 in https://github.com/apache/iceberg-go/pull/1867
- docs(metrics): add metrics reporting guide and feature-status entry (#1236) by @tanmayrauth in https://github.com/apache/iceberg-go/pull/1862
- fix(manifest): handle foreign time/timestamp partition logical types by @tanmayrauth in https://github.com/apache/iceberg-go/pull/1861
- fix(table): validate required snapshot fields by @Revanth14 in https://github.com/apache/iceberg-go/pull/1871
- fix(table): drain RollingDataWriter's recordCh on mid-stream write errors by @deepak-2605 in https://github.com/apache/iceberg-go/pull/1851
- perf(compaction): reuse survivor partition tuple by @fallintoplace in https://github.com/apache/iceberg-go/pull/1885
- Symlink CLAUDE.md to AGENTS.md by @rambleraptor in https://github.com/apache/iceberg-go/pull/1887
- chore: align makefile & ci for race test by @ferhatelmas in https://github.com/apache/iceberg-go/pull/1881
- build(dev): upgrade RAT to 0.17 in check-license by @rambleraptor in https://github.com/apache/iceberg-go/pull/1888
- feat(expr): bind predicates over transform terms by @fallintoplace in https://github.com/apache/iceberg-go/pull/1679
- docs(readme): correct inaccuracies by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1859
- fix(table): fence multi-table commits with the target branch requirement (#1844) by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1858
- fix(manifest): reject unknown legacy row counts by @fallintoplace in https://github.com/apache/iceberg-go/pull/1735
- perf(table): skip metrics after partition rejection by @fallintoplace in https://github.com/apache/iceberg-go/pull/1771
- fix(puffin): read LZ4-compressed footer payloads by @fallintoplace in https://github.com/apache/iceberg-go/pull/1678
- fix(table): fail closed when a partition spec id is not registered (#1855) by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1856
- feat(table,rest): complete server-side scan delegation (Phase 5) by @fallintoplace in https://github.com/apache/iceberg-go/pull/1857
- fix(table): assert default spec id when the default partition spec changes by @ryanworl in https://github.com/apache/iceberg-go/pull/1834
- perf(table): bind partition transforms once by @fallintoplace in https://github.com/apache/iceberg-go/pull/1768
- perf(table): reuse position-delete file metadata by @fallintoplace in https://github.com/apache/iceberg-go/pull/1890
- feat(table): add explicit default spec/sort-order commit fence (Transaction.AssertDefaultShape) by @ryanworl in https://github.com/apache/iceberg-go/pull/1891
- perf(table): avoid re-extracting filter field IDs per task by @fallintoplace in https://github.com/apache/iceberg-go/pull/1901
- refactor(compaction): remove duplicate position delete collector by @ferhatelmas in https://github.com/apache/iceberg-go/pull/1893
- perf(table): borrow partition records during scan planning by @fallintoplace in https://github.com/apache/iceberg-go/pull/1894
- perf(table): borrow DataFile stats in metadata tables by @fallintoplace in https://github.com/apache/iceberg-go/pull/1896
- perf(table): borrow equality-delete partitions by @fallintoplace in https://github.com/apache/iceberg-go/pull/1907
- perf(table): specialize position-delete file path pruning by @fallintoplace in https://github.com/apache/iceberg-go/pull/1892
- fix(table): align float partition equality by @fallintoplace in https://github.com/apache/iceberg-go/pull/1731
- perf(table): skip inactive parquet stats columns by @fallintoplace in https://github.com/apache/iceberg-go/pull/1918
- fix(transforms): avoid panic in truncateNumber in error path by @ferhatelmas in https://github.com/apache/iceberg-go/pull/1926
- perf(table): borrow remaining DataFile metadata in files tables by @fallintoplace in https://github.com/apache/iceberg-go/pull/1924
- perf(rest): reuse referenced deletion vectors during scan task decode by @fallintoplace in https://github.com/apache/iceberg-go/pull/1922
- perf(table): avoid heap scratch in canonical partition keys by @fallintoplace in https://github.com/apache/iceberg-go/pull/1921
- perf(table): deduplicate equality-delete conflict partitions by @fallintoplace in https://github.com/apache/iceberg-go/pull/1917
- perf(table): avoid cloning schema history for snapshot scans by @fallintoplace in https://github.com/apache/iceberg-go/pull/1916
- fix(table): reject deleted schema move targets by @mattfaltyn in https://github.com/apache/iceberg-go/pull/1905
- perf(table): classify manifest entries outside merge lock by @fallintoplace in https://github.com/apache/iceberg-go/pull/1913
- fix(updates): decode add-spec and add-sort-order unbound by @twuebi in https://github.com/apache/iceberg-go/pull/1873
- perf(dv): serialize deletion vectors in one buffer by @fallintoplace in https://github.com/apache/iceberg-go/pull/1909
- perf(manifest): remove reflection from partition summary updates by @fallintoplace in https://github.com/apache/iceberg-go/pull/1895
- perf(table): bypass no-op writer schema projection by @fallintoplace in https://github.com/apache/iceberg-go/pull/1912
- perf(table): cache equality delete field groups by @fallintoplace in https://github.com/apache/iceberg-go/pull/1902
- perf(table): precompute IN predicate extrema by @fallintoplace in https://github.com/apache/iceberg-go/pull/1911
- perf(table): reuse row-group metrics maps by @fallintoplace in https://github.com/apache/iceberg-go/pull/1899
- perf(table): reuse field ID scratch in files metadata by @fallintoplace in https://github.com/apache/iceberg-go/pull/1919
- perf(table): borrow partitions in positional delete index by @fallintoplace in https://github.com/apache/iceberg-go/pull/1915
- perf(table): reuse schema fields when resolving sort keys by @fallintoplace in https://github.com/apache/iceberg-go/pull/1947
- perf(table): borrow source fields during DataFile finalization by @fallintoplace in https://github.com/apache/iceberg-go/pull/1945
- perf(table): collect fanout partitions into one slice by @fallintoplace in https://github.com/apache/iceberg-go/pull/1948
- perf(table): reuse Parquet schema metadata across file writers by @fallintoplace in https://github.com/apache/iceberg-go/pull/1949
- perf(table): lazily materialize dictionary columns by @fallintoplace in https://github.com/apache/iceberg-go/pull/1950
- perf(table): avoid schema clones in remote wildcard projection by @fallintoplace in https://github.com/apache/iceberg-go/pull/1944
- perf(manifest): fuse partition conversion with Avro remapping by @fallintoplace in https://github.com/apache/iceberg-go/pull/1942
- perf(table): reuse staged schema in UpdateSpec by @fallintoplace in https://github.com/apache/iceberg-go/pull/1941
- perf(table): cache compiled filter and pruning plans by @fallintoplace in https://github.com/apache/iceberg-go/pull/1936
- perf(table): honor row limits during local planning by @fallintoplace in https://github.com/apache/iceberg-go/pull/1935
- perf(table): avoid full rune allocation for truncated bounds by @fallintoplace in https://github.com/apache/iceberg-go/pull/1934
- perf(table): avoid redundant MetadataBuilderFromBase copies by @fallintoplace in https://github.com/apache/iceberg-go/pull/1932
- perf(dv): coalesce shared Puffin range reads by @fallintoplace in https://github.com/apache/iceberg-go/pull/1906
- perf(table): deduplicate conflict-validation manifest reads by @fallintoplace in https://github.com/apache/iceberg-go/pull/1904
- fix(table): trim carried binary upper bounds by @ferhatelmas in https://github.com/apache/iceberg-go/pull/1928
- perf(table): borrow manifest partition summaries by @fallintoplace in https://github.com/apache/iceberg-go/pull/1908
- perf(dv): add single-position append fast path by @fallintoplace in https://github.com/apache/iceberg-go/pull/1889
- perf(table): avoid per-file partition materialization in partitions metadata by @fallintoplace in https://github.com/apache/iceberg-go/pull/1914
- perf(transforms): avoid regexp matching in ParseTransform by @fallintoplace in https://github.com/apache/iceberg-go/pull/1931
- perf(table): skip equality-delete filtering for untouched batches by @fallintoplace in https://github.com/apache/iceberg-go/pull/1900
- test(table): fix TruncateUpperBoundBinary guard for negative width by @laskoviymishka in https://github.com/apache/iceberg-go/pull/1980
- feat(io): split io/gocloud into per-cloud backend packages by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/1961
- perf(table): speed up bulk schema and partition spec removals by @fallintoplace in https://github.com/apache/iceberg-go/pull/1930
- feat(table): add delete-file-backed changelog task types by @dgvj-work in https://github.com/apache/iceberg-go/pull/1897
- perf(table): stream projected position-delete reads by @fallintoplace in https://github.com/apache/iceberg-go/pull/1898
- perf(table): resolve only requested equality-delete field paths by @fallintoplace in https://github.com/apache/iceberg-go/pull/1957
- perf(internal): pack from end without cloning input by @fallintoplace in https://github.com/apache/iceberg-go/pull/1953
- perf(manifest): clone binary partition stats only for new extrema by @fallintoplace in https://github.com/apache/iceberg-go/pull/1954
- perf(rest): cache partition decode plans by @fallintoplace in https://github.com/apache/iceberg-go/pull/1803
- perf(table): avoid cloning schema history for position_deletes partition IDs by @fallintoplace in https://github.com/apache/iceberg-go/pull/1920
- perf(table): pre-size positional delete positions by @fallintoplace in https://github.com/apache/iceberg-go/pull/1923
- perf(table): collapse metadata JSON preflight passes by @fallintoplace in https://github.com/apache/iceberg-go/pull/1933
- perf(table): split parquet scan tasks by byte range by @fallintoplace in https://github.com/apache/iceberg-go/pull/1939
- perf(table): prune equality deletes by data-file metrics by @fallintoplace in https://github.com/apache/iceberg-go/pull/1960
- perf(codec): precompute DataFile Avro field indexes by @fallintoplace in https://github.com/apache/iceberg-go/pull/1962
- perf(table): load equality deletes lazily per scan task by @fallintoplace in https://github.com/apache/iceberg-go/pull/1963
- perf(table): skip manifests with no live entries by @fallintoplace in https://github.com/apache/iceberg-go/pull/1964
- perf(table): index schemas by ID by @fallintoplace in https://github.com/apache/iceberg-go/pull/1967
- perf(table): fetch orphan-cleanup manifest lists concurrently by @fallintoplace in https://github.com/apache/iceberg-go/pull/1969
- perf(table): compute partition residuals for local scan tasks by @fallintoplace in https://github.com/apache/iceberg-go/pull/1971
- perf(table): reuse FileIO during local scan planning by @fallintoplace in https://github.com/apache/iceberg-go/pull/1781
- build(deps): bump the codeql-action group with 2 updates by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/1977
- build(deps): bump the gomod_updates group with 11 updates by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/1978
- perf(table): reuse partition projections across planning phases by @fallintoplace in https://github.com/apache/iceberg-go/pull/1965
- perf(table): flatten manifest entries after parallel reads by @fallintoplace in https://github.com/apache/iceberg-go/pull/1976
- perf(table): stream data manifest entries into tasks by @fallintoplace in https://github.com/apache/iceberg-go/pull/1974
- fix(table): resolve dropped equality fields from schema history by @mattfaltyn in https://github.com/apache/iceberg-go/pull/1952
- build(deps): bump google.golang.org/grpc from 1.83.0 to 1.83.1 by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/1985
- perf(table): skip metadata builds when Transaction.apply has no new requirements by @fallintoplace in https://github.com/apache/iceberg-go/pull/1955
- perf(rest): lazy-decode snapshots in commitTableResponse when snapshot-loading-mode=refs by @technicolorbeat in https://github.com/apache/iceberg-go/pull/1956
- feat(table): add RewriteManifests clustering by @fallintoplace in https://github.com/apache/iceberg-go/pull/1940
- feat(table): variant predicate pushdown and reject variant partition source by @nssalian in https://github.com/apache/iceberg-go/pull/1607
- perf(table): load position deletes lazily per scan task by @fallintoplace in https://github.com/apache/iceberg-go/pull/1938
- perf(table): reuse partition validation plans across file additions by @fallintoplace in https://github.com/apache/iceberg-go/pull/1992
- build(deps): bump the codeql-action group with 2 updates by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/1994
- build(deps): bump zizmorcore/zizmor-action from 0.6.2 to 0.6.3 by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/1995
- build(deps): bump the gomod_updates group with 14 updates by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/1996
- fix(glue): report destination table on rename create failure by @jx2lee in https://github.com/apache/iceberg-go/pull/1997
- chore: dedup floorDiv by @ferhatelmas in https://github.com/apache/iceberg-go/pull/1998
- perf(manifest): project scan columns during reads by @fallintoplace in https://github.com/apache/iceberg-go/pull/1972
- perf(rest): fetch remote scan plan tasks concurrently by @fallintoplace in https://github.com/apache/iceberg-go/pull/1959
- perf(table): index partition specs by ID by @fallintoplace in https://github.com/apache/iceberg-go/pull/1910
- perf(table): compile metrics modes once by @fallintoplace in https://github.com/apache/iceberg-go/pull/1991
- feat(table): add incremental changelog scan by @fallintoplace in https://github.com/apache/iceberg-go/pull/1883
- fix(table): allocate partition IDs from history by @mattfaltyn in https://github.com/apache/iceberg-go/pull/1988
- ci: pull MinIO images from Quay by @smaheshwar-pltr in https://github.com/apache/iceberg-go/pull/2008
- fix(catalog/sql): return ErrNamespaceAlreadyExists on a concurrent create by @iremcaginyurtturk in https://github.com/apache/iceberg-go/pull/1635
- fix(table): convert int-backed decimal row group bounds by @ajiteshsingh in https://github.com/apache/iceberg-go/pull/2009
- fix(table): reject dvs added to tables below v3 by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/2004
- test(rest): widen the cancel grace in the stalled cancel tests by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/2017
- fix(glue): return ErrNamespaceAlreadyExists for duplicate namespaces by @jx2lee in https://github.com/apache/iceberg-go/pull/2012
- fix: ensure REST scan planning produces tasks equivalent to local planning by @Revanth14 in https://github.com/apache/iceberg-go/pull/2019
- perf(table): filter overwrite manifests concurrently by @fallintoplace in https://github.com/apache/iceberg-go/pull/2005
- perf(table): parallelize non-bulk PurgeFiles deletion by @fallintoplace in https://github.com/apache/iceberg-go/pull/1973
- perf(metadata): avoid re-cloning defensive schema copies by @fallintoplace in https://github.com/apache/iceberg-go/pull/1990
- perf(table): cache snapshot manifests across scans by @fallintoplace in https://github.com/apache/iceberg-go/pull/1970
- perf(table): clone largest equality delete set by @fallintoplace in https://github.com/apache/iceberg-go/pull/2026
- fix(table): fixes handling of partition specs w/ nested fields (#2014) by @sgg in https://github.com/apache/iceberg-go/pull/2015
- perf(table): avoid schema clone in remote wildcard projection by @fallintoplace in https://github.com/apache/iceberg-go/pull/2027
- test(io): avoid real Azure IO in credential tests by @Revanth14 in https://github.com/apache/iceberg-go/pull/2018
- perf: optimize FIFO packing for lookback one by @fallintoplace in https://github.com/apache/iceberg-go/pull/2033
- build(deps): bump zizmorcore/zizmor-action from 0.6.3 to 0.6.4 by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/2031
- build(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp from 1.44.0 to 1.45.0 by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/2021
- build(deps): bump github.com/containerd/containerd/v2 from 2.2.5 to 2.2.8 by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/2007
- perf(table): load deletion-vector Puffin groups lazily by @fallintoplace in https://github.com/apache/iceberg-go/pull/1968
- feat(rest): add catalog labels to the load table/view read path by @laskoviymishka in https://github.com/apache/iceberg-go/pull/2013
- Add tunables bounding compaction pipeline memory by @KranzL in https://github.com/apache/iceberg-go/pull/1993
- build(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.44.0 to 1.45.0 by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/2022
- build(deps): bump the codeql-action group with 2 updates by @dependabot[bot] in https://github.com/apache/iceberg-go/pull/2030
- feat(table): adopt arrow-go 18.8, fast-path shredded variant extract, restore parquet dict fallback by @nssalian in https://github.com/apache/iceberg-go/pull/2002
- fix(table): report cancellation when the scan iterator channel closes by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/2035
- feat(rest): add scan-planning retries, telemetry, and documentation by @Revanth14 in https://github.com/apache/iceberg-go/pull/2020
- perf(table): prune parquet row groups by dictionary by @fallintoplace in https://github.com/apache/iceberg-go/pull/2006
- fix(manifest): support nanosecond timestamp partitions by @shoemoney in https://github.com/apache/iceberg-go/pull/2034
- perf(table): avoid redundant filter cache schema traversal by @fallintoplace in https://github.com/apache/iceberg-go/pull/2028
- perf(codec): avoid rebuilding partition schema on schema-cache hits by @fallintoplace in https://github.com/apache/iceberg-go/pull/2029
- docs: document variant type, field-extract filtering, and shredding by @nssalian in https://github.com/apache/iceberg-go/pull/2045
- fix(table): validate deletion vector fields in RowDelta (#2004 follow-up) by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/2016
- perf(table): bound the scan reorder heap at scan concurrency above one by @KranzL in https://github.com/apache/iceberg-go/pull/2039
- docs(io): document ADLS managed identity property divergence by @Revanth14 in https://github.com/apache/iceberg-go/pull/2024
- fix(codec): nanosecond timestamp partitions in schema fingerprint by @laskoviymishka in https://github.com/apache/iceberg-go/pull/2052
- ci: replace MinIO with RustFS in integration tests by @smaheshwar-pltr in https://github.com/apache/iceberg-go/pull/2055
- perf(table): reuse partition path formatting plan by @fallintoplace in https://github.com/apache/iceberg-go/pull/1958
- fix(table): replace files must only match live files when removing data and delete files by @badalprasadsingh in https://github.com/apache/iceberg-go/pull/2058
- docs: expand security threat model by @zeroshade in https://github.com/apache/iceberg-go/pull/1886
- refactor(table): drop pterm from library path by @laskoviymishka in https://github.com/apache/iceberg-go/pull/2061
- perf(table): filter position-delete reads by file path by @fallintoplace in https://github.com/apache/iceberg-go/pull/1937
New Contributors
- @mithilgirish made their first contribution in #1104
- @paveon made their first contribution in #1118
- @sungwy made their first contribution in #1137
- @Revanth14 made their first contribution in #1141
- @rraulinio made their first contribution in #1154
- @artbcf made their first contribution in #915
- @gerinsp made their first contribution in #1179
- @jeremybarner made their first contribution in #1183
- @strophy made their first contribution in #1194
- @neu-hsc made their first contribution in #1235
- @ebyhr made their first contribution in #1254
- @abnobdoss made their first contribution in #1263
- @AhmedDlshad007 made their first contribution in #1281
- @nanookclaw made their first contribution in #1282
- @prafulla-kiran made their first contribution in #1269
- @rasta-rocket made their first contribution in #1320
- @the-onewho-knocks made their first contribution in #1321
- @iremcaginyurtturk made their first contribution in #1507
- @hankivstmb made their first contribution in #1537
- @jx2lee made their first contribution in #1566
- @1991santhu made their first contribution in #1640
- @mattfaltyn made their first contribution in #1558
- @dgvj-work made their first contribution in #1756
- @dimakuz made their first contribution in #1758
- @ryanworl made their first contribution in #1762
- @technicolorbeat made their first contribution in #1749
- @codeAnqiang-ma made their first contribution in https://github.com/apache/iceberg-go/pull/1816
- @deepak-2605 made their first contribution in https://github.com/apache/iceberg-go/pull/1851
- @smaheshwar-pltr made their first contribution in https://github.com/apache/iceberg-go/pull/2008
- @ajiteshsingh made their first contribution in https://github.com/apache/iceberg-go/pull/2009
- @sgg made their first contribution in https://github.com/apache/iceberg-go/pull/2015
- @KranzL made their first contribution in https://github.com/apache/iceberg-go/pull/1993
- @shoemoney made their first contribution in https://github.com/apache/iceberg-go/pull/2034
Full Changelog: v0.6.0...v0.7.0