Repository navigation
What's Changed
- chore(refactor): rename SnapshotProducer::manifest_file to produce_manifest_file_list by @dannycjones in #2596
- chore(deps): Bump DataFusion to 54.0.0 by @xanderbailey in #2648
- fix(reader): keep rows with a null equality-delete column value by @mbutrovich in #2781
- feat(catalog-rest): parse server-advertised endpoints from GET /v1/config by @huan233usc in #2692
- fix(spec): support float/double conversion in Datum::to() by @mbutrovich in #2783
- feat(encryption): [11/N] KMS factory trait and catalog wiring by @xanderbailey in #2650
- ci: fix the cargo-public-api double install by @abnobdoss in #2793
- ci: drop unnecessary protoc installs by @abnobdoss in #2805
- Infra: Group github/codeql-action bumps into a single dependabot PR by @ebyhr in #2800
- chore(deps): Bump rand from 0.9.4 to 0.10.2 by @dependabot[bot] in #2818
- chore(deps): Bump reqwest from 0.12.28 to 0.13.4 by @dependabot[bot] in #2810
- chore(deps): Bump taiki-e/install-action from 2.82.2 to 2.82.9 by @dependabot[bot] in #2816
- chore(deps): Bump astral-sh/setup-uv from 8.2.0 to 8.3.0 by @dependabot[bot] in #2817
- chore(deps-dev): Bump huggingface-hub from 1.21.0 to 1.22.0 in /bindings/python by @dependabot[bot] in #2806
- chore(deps): Bump crate-ci/typos from 1.47.2 to 1.48.0 by @dependabot[bot] in #2809
- chore(deps): Bump the codeql-action group with 2 updates by @dependabot[bot] in #2808
- fix(arrow): error on required field absent from data file with no default by @mbutrovich in #2797
- chore(deps-dev): Bump datafusion from 52.3.0 to 54.0.0 in /bindings/python by @dependabot[bot] in #2807
- docs: improve ancestors_between docs to make behaviour more clear by @xanderbailey in #2796
- Include license and notice files in iceberg-storage-opendal crate by @ankane in #2823
- fix(license): Add missing LICENSE and NOTICE symlinks for iceberg-cache-moka and iceberg-catalog-loader by @dannycjones in #2828
- fix(writer): validate equality delete field ids by @u70b3 in #2723
- feat: add support for
_spec_idmetadata column by @hsiang-c in #2695 - feat(encryption) [9/N] Read encrypted parquet data-files by @xanderbailey in #2584
- feat: Variant Support by @c-thiel in #2188
- feat(spec): read timestamp_ns/timestamptz_ns default values in the Literal JSON codec by @c-thiel in #2832
- refactor(encryption) standard encryption metadata should store
SecureKeyby @xanderbailey in #2834 - chore(lint) check unused_qualifications by @xanderbailey in #2839
- Return an error instead of panicking in inspect().manifests() when a partition source column was dropped by @anoopj in #2843
- chore(deps): Bump reqwest from 0.12.28 to 0.13.4 by @dependabot[bot] in #2857
- chore(deps): Bump taiki-e/install-action from 2.82.9 to 2.83.2 by @dependabot[bot] in #2855
- chore(deps): Bump actions/stale from 10.3.0 to 10.4.0 by @dependabot[bot] in #2854
- chore(deps): Bump astral-sh/setup-uv from 8.3.0 to 8.3.2 by @dependabot[bot] in #2853
- chore(deps-dev): Bump huggingface-hub from 1.22.0 to 1.23.0 in /bindings/python by @dependabot[bot] in #2851
- chore(deps): Bump the codeql-action group with 2 updates by @dependabot[bot] in #2852
- chore(deps-dev): Bump pyarrow from 24.0.0 to 25.0.0 in /bindings/python by @dependabot[bot] in #2850
- chore(deps): Bump regex from 1.12.4 to 1.13.0 by @dependabot[bot] in #2856
- Add Python environment paths to .licenserc.yaml by @kevinjqliu in #2849
- feat(encryption) [12/N] write encrypted manifest list by @aarushigupta132 in #2677
- feat: add support for
_posmetadata column by @hsiang-c in #2746 - feat(arrow): recognize arrow.parquet.variant on schema import by @c-thiel in #2840
- feat(catalog-rest): enforce negotiated endpoints for exists checks by @huan233usc in #2794
- Skip partition pruning for manifests whose spec references a dropped source column by @anoopj in #2845
- deps: bump to DataFusion 54.1.0 by @mbutrovich in #2872
- feat: Honor write.metadata.path for metadata file locations by @zakariya-s in #2776
- fix(transaction): de-duplicate file paths within a FastAppend batch by @SreeramGarlapati in #2509
- fix(sql): return errors for invalid pool properties by @mattfaltyn in #2847
- feat(encryption): support AES-256 keys for reading Parquet data files by @mbutrovich in #2878
- fix(scan): don't treat data columns named pos or file_path as metadata columns by @LuciferYang in #2865
- chore(ci) fix ruff lints failing in CI by @xanderbailey in #2885
- feat(encryption) [13/N] Write encrypted manifest files by @xanderbailey in #2821
- Cache partition-type resolvability and cover dropped-source-column skip by @anoopj in #2869
- fix: avoid lost-wakeup hang when waiting for a positional delete load by @dhruvarya-db in #2859
- feat: add history metadata table by @gmhelmold in #2825
- chore(deps): Bump uuid from 1.23.4 to 1.24.0 by @dependabot[bot] in #2903
- chore(deps): Bump actions/checkout from 7.0.0 to 7.0.1 by @dependabot[bot] in #2902
- chore(deps): Bump taiki-e/install-action from 2.83.2 to 2.83.4 by @dependabot[bot] in #2900
- chore(deps): Bump the codeql-action group with 2 updates by @dependabot[bot] in #2896
- chore(deps): Bump actions/setup-python from 6.3.0 to 7.0.0 by @dependabot[bot] in #2898
- chore(deps): Bump reqwest from 0.12.28 to 0.13.4 by @dependabot[bot] in #2899
- chore(deps): Bump tokio from 1.52.3 to 1.53.0 by @dependabot[bot] in #2897
- chore(deps-dev): Bump huggingface-hub from 1.23.0 to 1.24.0 in /bindings/python by @dependabot[bot] in #2895
- chore(deps): Bump zizmorcore/zizmor-action from 0.5.7 to 0.6.0 by @dependabot[bot] in #2901
- chore(ci): Update ASF allowlist check action dependency to track versioned releases by @dannycjones in #2914
- fix(puffin): return DataInvalid instead of panicking on malformed footer length by @arpitjain099 in #2867
- feat: add support for _partition metadata column by @parthchandra in #2668
- chore: Add AI Disclosure section to PR template by @Kurtiscwright in #2926
- feat(encryption): [16/N] Enable encryption for purge table by @xanderbailey in #2918
- feat(encryption) [14/N] Read / Write Encrypted puffin files by @xanderbailey in #2822
- feat(writer): URL encode field names for partition paths by @hsiang-c in #2875
- chore(ci): Add check to Python release to verify workflow is running on expected tag by @dannycjones in #2912
- feat: inherit data-file first_row_id on manifest read by @anoopj in #2922
- fix(ci): install the wheel just built, not the published one by @toutane in #2949
- chore(deps): Bump zizmorcore/zizmor-action from 0.6.0 to 0.6.1 by @dependabot[bot] in #2944
- chore(deps): Bump taiki-e/install-action from 2.83.4 to 2.85.2 by @dependabot[bot] in #2943
- chore(deps): Bump the codeql-action group with 2 updates by @dependabot[bot] in #2941
- chore(deps): Bump astral-sh/setup-uv from 8.3.2 to 9.0.0 by @dependabot[bot] in #2942
- chore(deps): Bump rand from 0.9.5 to 0.10.2 by @dependabot[bot] in #2946
- chore(deps): Bump reqwest from 0.12.28 to 0.13.4 by @dependabot[bot] in #2945
- feat: carry first_row_id and data sequence number on FileScanTask by @anoopj in #2952
- chore(deps): bump opendal from 0.57 to 0.58 by @Xuanwo in #2953
- feat(writer): Support ObjectStorageLocationGenerator by @hsiang-c in #2871
- INFRA: Use PR titles for squash commits by @kevinjqliu in #2957
- Add SessionCatalog trait by @DerGut in #2836
- fix: mark _row_id and _last_updated_sequence_number optional by @anoopj in #2959
- feat(parquet): wire in additional parquet writer settings by @xanderbailey in #2887
- chore(ci): pin rust-cache version by @CTTY in #2973
- chore(deps): Bump http from 1.4.2 to 1.5.0 by @dependabot[bot] in #2984
- chore(deps): Bump actions/stale from 10.4.0 to 11.0.0 by @dependabot[bot] in #2982
- chore(deps): Bump taiki-e/install-action from 2.85.2 to 2.85.7 by @dependabot[bot] in #2981
- chore(deps): Bump reqwest from 0.12.28 to 0.13.4 by @dependabot[bot] in #2983
- chore(deps): Bump zizmorcore/zizmor-action from 0.6.1 to 0.6.2 by @dependabot[bot] in #2980
- chore(deps): Bump the codeql-action group with 2 updates by @dependabot[bot] in #2979
- feat: materialize _last_updated_sequence_number metadata column by @anoopj in #2966
- chore(deps-dev): Bump huggingface-hub from 1.24.0 to 1.26.0 in /bindings/python by @dependabot[bot] in #2978
- fix(datafusion): IcebergWriteExec emits incorrect schema by @NoahKusaba in #2975
- Add an internal Properties derive macro by @blackmwk in #2970
- fix(gcs): Fix GCS host property by @xanderbailey in #2965
- fix: Address property macro review follow-ups by @blackmwk in #2987
- feat: coalesce physically-stored _last_updated_sequence_number by @anoopj in #2985
- feat!(rest): introduce AuthManager/AuthSession and migrate OAuth2 by @plusplusjiajia in #2838
- Rename RestContext to RestClient by @DerGut in #2994
- fix: avoid full scan for metadata-only projections with _pos by @anoopj in #2995
- refactor: Move SensitiveBytes and Credential into shared module by @DerGut in #2971
- chore(deps): Bump taiki-e/install-action from 2.85.7 to 2.85.11 by @dependabot[bot] in #3010
- chore(deps): Bump reqwest from 0.12.28 to 0.13.4 by @dependabot[bot] in #3009
- chore(deps): Bump crate-ci/typos from 1.48.0 to 1.49.0 by @dependabot[bot] in #3008
- chore(deps): Bump the codeql-action group with 2 updates by @dependabot[bot] in #3006
- chore(deps-dev): Bump huggingface-hub from 1.26.0 to 1.27.0 in /bindings/python by @dependabot[bot] in #3003
- chore(deps): Bump syn from 2.0.118 to 2.0.119 by @dependabot[bot] in #3007
- chore(deps): Bump minijinja from 2.21.0 to 2.23.0 by @dependabot[bot] in #3005
- chore(deps): Bump reqsign-core from 3.2.1 to 3.3.0 by @dependabot[bot] in #3004
- Add RestSessionCatalog by @DerGut in #2920
- fix(transform): floor nanosecond timestamps before bucket hashing by @fallintoplace in #2891
- feat(encryption) [15/N] write encrypted parquet data files by @aarushigupta132 in #2701
- feat(delete-vector): [1/N] decode deletion-vector-v1 puffin blobs by @mbutrovich in #2866
- fix: update h2 to 0.4.16 by @DerGut in #3020
- feat: Derive TableProperties parsing by @blackmwk in #2988
- feat(rest): wrap catalog responses in HttpResponse by @plusplusjiajia in #2996
- perf(manifest): reuse the partition type across entries instead of rebuilding by @anoopj in #3028
- Feat Positional Delete by file path by @Kurtiscwright in #3024
- fix(transform): support hour transform for nanosecond arrays by @mattfaltyn in #3026
- refactor: Add manifest reader by @xanderbailey in #2884
- refactor: Migrate TableProperties consumers to getters by @blackmwk in #2989
- feature(encryption): [17/N] Enable encrypted writes by @xanderbailey in #3018
- chore: Enable automatic review by GitHub Copilot on PRs on behalf of author by @dannycjones in #3031
- docs: Update release guide based on retrospective of 0.10 releases by @dannycjones in #3037
- chore(ci): Remove workflow trigger from publish.yml for PyPI publish, add note to release.md by @dannycjones in #3043
- feat: support V0 iceberg_tables schema for SqlCatalog by @dannycjones in #3032
- chore(deps): Bump serde_with from 3.21.0 to 3.22.0 by @dependabot[bot] in #3053
- chore(deps): Bump astral-sh/setup-uv from 9.0.0 to 10.0.1 by @dependabot[bot] in #3052
- chore(deps): Bump taiki-e/install-action from 2.85.11 to 2.86.1 by @dependabot[bot] in #3051
- chore(deps): Bump the codeql-action group with 2 updates by @dependabot[bot] in #3049
- chore(deps): Bump reqwest from 0.12.28 to 0.13.4 by @dependabot[bot] in #3050
- chore(deps): Bump reqsign-aws-v4 from 3.1.0 to 3.2.0 by @dependabot[bot] in #3048
- chore(deps-dev): Bump pyarrow from 25.0.0 to 25.0.1 in /bindings/python by @dependabot[bot] in #3047
- fix(scan) case sensitive column resolution by @xanderbailey in #3059
- perf(arrow): buffer positional-delete runs to drop per-row key allocation by @anoopj in #3015
- build: allow the whole DataFusion 54 line by @plusplusjiajia in #3033
- fix: Correct exempt list for issue staleness by @dannycjones in #3067
- docs: fix references in public docs by @JosephLenton in #2937
- feat(scan): [2/N] carry deletion-vector coordinates on FileScanTaskDeleteFile by @mbutrovich in #2868
- perf(arrow): build repeated constant string/binary columns without per-row clones by @anoopj in #3080
- chore: Update MSRV to Rust 1.95 by @dannycjones in #3083
- chore(repo): Replace bug report version selector with freeform text field by @dannycjones in #2826
- fix(sql): propagate catalog commit errors by @mattfaltyn in #3062
- refactor: change from serialising a u64 to i64 by @JosephLenton in #3065
- feat: add lazy property view macro by @blackmwk in #3044
- refactor: parse table properties lazily by @blackmwk in #3030
- feat: synthesize _row_id metadata column on read by @anoopj in #3058
- chore(deps): Bump reqwest from 0.12.28 to 0.13.4 by @dependabot[bot] in #3116
- chore(deps): Bump taiki-e/install-action from 2.86.1 to 2.86.6 by @dependabot[bot] in #3115
- chore(deps): Bump the codeql-action group with 2 updates by @dependabot[bot] in #3114
- chore(deps): Bump uuid from 1.24.0 to 1.25.0 by @dependabot[bot] in #3113
- chore(deps-dev): Bump huggingface-hub from 1.27.0 to 1.28.0 in /bindings/python by @dependabot[bot] in #3112
- fix(spec): reject unequal map default arrays by @mattfaltyn in #3110
- Prune data columns for metadata-only projections by @anoopj in #3117
- refactor(memory): derive catalog configuration from properties by @blackmwk in #3101
- chore: Merge changes from 0.10.x to main by @dannycjones in #3074
- chore(ci): Fail CI when a publishable crate is missing LICENSE or NOTICE by @dannycjones in #3084
- refactor(scan): extract reusable scan functions by @xanderbailey in #3093
- feat(io): make FileIO serializable by @blackmwk in #3090
- refactor(scan): validate FileScanTask construction by @blackmwk in #3131
- refactor(auth) Emphasize AuthManagers aren't shared between catalogs by @DerGut in #3086
- fix(partition): Align DateTime Transform to Java's Implementation by @Kurtiscwright in #3022
- feat(scan): [3/N] read and apply V3 deletion vectors by @mbutrovich in #3035
- fix: Address merge conflicts raising Clippy issues (#3137) by @dannycjones in #3146
- chore: Bump version to 0.11.0, update changelog by @dannycjones in #3138
- fix: Fix CI failure due to integration test's Hive install by @dannycjones in #3196
- chore: exclude repo-only files from the source archive by @dannycjones in #3197
- fix: break dev-dependency cycle that blocks publishing iceberg-property-macro by @dannycjones in #3199
- ci: pull MinIO images from Quay (#3202) by @dannycjones in #3220
- ci: check new crates are reserved on crates.io before merge (#3185) by @dannycjones in #3218
- chore: Update changelog for 0.11.0 RC2 by @dannycjones in #3219
- 0.11.x backport: ci: fix Rust cache action casing (#3249) + replace MinIO with RustFS (#3273) by @xanderbailey in #3271
- 0.11.x backport: fix(encryption) [18/N] wire in ags1 file length for tamper proofing #3236 by @xanderbailey in #3270
- docs: note iceberg-datafusion move to Apache DataFusion in crate README by @dannycjones in #3491
- chore(ci): Update PyPI publish action to ASF-approved v1.14.3 by @dannycjones in #3534
- build: disable unused zstd legacy feature by @dannycjones in #3535
- ci(python): bundle third-party licenses in pyiceberg-core wheels by @dannycjones in #3554
- chore(deps): update dependencies to address security advisories by @dannycjones in #3558
- chore: Update changelog for 0.11.0 RC3 by @dannycjones in #3559
New Contributors
- @hsiang-c made their first contribution in #2695
- @aarushigupta132 made their first contribution in #2677
- @zakariya-s made their first contribution in #2776
- @mattfaltyn made their first contribution in #2847
- @LuciferYang made their first contribution in #2865
- @gmhelmold made their first contribution in #2825
- @arpitjain099 made their first contribution in #2867
- @parthchandra made their first contribution in #2668
Full Changelog: v0.10.1...v0.11.0