What's Changed
- feat(datafusion): Apply SortExec when writing in clustered mode by @CTTY in #2005
- chore(deps): Bump crate-ci/typos from 1.40.0 to 1.41.0 by @dependabot[bot] in #1982
- fix: Use correct byte representation for decimal hashing by @aditya-subrahmanyan in #1998
- fix: Reserved sort order ID cannot contain any fields by @aditya-subrahmanyan in #1978
- feat(datafusion): Add LIMIT pushdown support by @viirya in #2006
- feat(spec): add table_properties() method to TableMetadata by @xbattlax in #2002
- chore(deps): Bump crate-ci/typos from 1.41.0 to 1.42.0 by @dependabot[bot] in #2012
- chore(deps): Bump the arrow-parquet group with 6 updates by @dependabot[bot] in #2013
- docs: Minor update to README.md by @aditya-subrahmanyan in #2018
- docs: split up the make command in release doc by @kevinjqliu in #2016
- add
make sitefor local website preview by @kevinjqliu in #2017 - feat(datafusion): Add schema validation for partition projection by @viirya in #2008
- feat(datafusion): Support
CREATE TABLEfor DataFusion by @CTTY in #1972 - chore: Update copyright year in NOTICE files by @AndreaBozzo in #2024
- infra: Restrict audit workflow to main apache/iceberg-rust repository by @kevinjqliu in #1974
- rfc: Making Storage a Trait by @CTTY in #1885
- fix: allow v2 to v3 table upgrades with existing snapshots by @aditya-subrahmanyan in #2010
- site: release static version from downloads page by @kevinjqliu in #2039
- infra: upgrade spark to 3.5.8 by @kevinjqliu in #2045
- infra: use spark base image for docker by @kevinjqliu in #2043
- infra: auto update docker image by @kevinjqliu in #2044
- chore(deps): Bump rust_decimal from 1.39.0 to 1.40.0 by @dependabot[bot] in #2047
- chore(deps): Bump the arrow-parquet group with 2 updates by @dependabot[bot] in #2046
- infra: dynamically set msrv in github workflows by @kevinjqliu in #2040
- fix: reuse partition field IDs for equivalent fields in AddSpec by @aditya-subrahmanyan in #2011
- infra: fix manual trigger for the "release python" github workflow by @kevinjqliu in #2049
- perf(reader): Fast path ArrowReader::read when concurrency is 1 to avoid waker churn and add determinism to FileScanTask processing by @mbutrovich in #2020
- feat(datafusion): Add Binary scalar value conversion for predicate pushdown by @viirya in #2048
- feat(datafusion): Add support for DROP TABLE by @CTTY in #2033
- feat(io): Rename Storage to OpenDalStorage by @CTTY in #2059
- chore(deps): Bump uuid from 1.19.0 to 1.20.0 by @dependabot[bot] in #2067
- chore(deps): Bump crate-ci/typos from 1.42.0 to 1.42.1 by @dependabot[bot] in #2066
- feat(datafusion): Add LIKE predicate pushdown for StartsWith patterns by @viirya in #2014
- feat(io): Add Storage, StorageFactory, StorageConfig by @CTTY in #2061
- Simplify test setup by starting container only once. by @liurenjie1024 in #2071
- feat(io): Add specific storage configs by @CTTY in #2072
- Cleanup integration tests by @liurenjie1024 in #2074
- Let integration tests run in parallel by @liurenjie1024 in #2076
- Use nextest to speedup tests by @liurenjie1024 in #2078
- feat: Factor out CompressionCodec to common location and add Gzip by @emkornfield in #2081
- Split sqllogictests into different schedule by @liurenjie1024 in #2085
- feat(spec): replace rust_decimal with fastnum for 38-digit precision by @xbattlax in #2063
- Add ETL project link to README by @imor in #2087
- site: merge container docs and add a section about docker desktop by @kevinjqliu in #2091
- Fix moto server port conflict with macOS AirPlay Receiver by @kevinjqliu in #2090
- feat(datafusion): Add Boolean predicate pushdown support by @viirya in #2082
- fix: SqlCatalogBuilder does not save supplied name in SqlCatalogConfig before initializing SqlCatalog by @brodiealexander in #2079
- feat(datafusion): Add Timestamp scalar value conversion for predicate pushdown by @viirya in #2069
- chore(python): Use PyPI release of pyiceberg instead of git dependency by @kevinjqliu in #2095
- chore(deps): Bump minijinja from 2.13.0 to 2.15.1 by @dependabot[bot] in #2099
- chore(deps): Bump crate-ci/typos from 1.42.1 to 1.42.3 by @dependabot[bot] in #2098
- feat!(io): Implement Storage for OpenDal by @CTTY in #2080
- chore(deps): Bump bytes from 1.11.0 to 1.11.1 by @dependabot[bot] in #2102
- chore(deps): Bump bytes from 1.10.1 to 1.11.1 in /bindings/python by @dependabot[bot] in #2101
- feat(io): Implement native LocalFsStorage by @CTTY in #2094
- feat(io): Implement native MemoryStorage by @CTTY in #2097
- fix(python): Bump Python version upper bound by @geruh in #2110
- chore(deps): Bump time from 0.3.44 to 0.3.47 by @dependabot[bot] in #2113
- chore(deps): Bump time from 0.3.44 to 0.3.47 in /bindings/python by @dependabot[bot] in #2112
- chore(deps): Bump fs-err from 3.2.0 to 3.3.0 by @dependabot[bot] in #2126
- chore(deps): Bump the arrow-parquet group with 6 updates by @dependabot[bot] in #2125
- chore(deps): Bump crate-ci/typos from 1.42.3 to 1.43.3 by @dependabot[bot] in #2124
- Use uv instead of pip for python packages by @blackmwk in #2129
- refactor(storage): Reorganize storage code into a new module by @CTTY in #2109
- fix: Interpret s3tables warehouse as table_location not metadata loca… by @emkornfield in #2115
- fix(rest): Filter sensitive headers from error logs (#2117) by @cmackenzie1 in #2130
- chore(deps): Bump crate-ci/typos from 1.43.3 to 1.43.4 by @dependabot[bot] in #2138
- chore(deps): Bump tempfile from 3.23.0 to 3.25.0 by @dependabot[bot] in #2140
- chore(deps): Bump uuid from 1.20.0 to 1.21.0 by @dependabot[bot] in #2141
- infra: set github actions max-parallel to 15 by @kevinjqliu in #2150
- chore(deps): Bump the arrow-parquet group with 2 updates by @dependabot[bot] in #2139
- CI: Add CodeQL workflow for GitHub Actions security scanning by @kevinjqliu in #2151
- CI(Python): dont use --sdist in maturin build for CI by @kevinjqliu in #2166
- feat(playground): add memory catalog support by @Shekharrajak in #2121
- chore(deps): Bump minijinja from 2.15.1 to 2.16.0 by @dependabot[bot] in #2162
- chore(deps): Bump actions/stale from 10.1.1 to 10.2.0 by @dependabot[bot] in #2159
- chore(ci): add explicit least-privilege workflow permissions by @kevinjqliu in #2163
- Potential fix for code scanning alert no. 1: Cache Poisoning via low-privileged code injection by @kevinjqliu in #2164
- chore(deps): Bump actions/checkout from 4 to 6 by @dependabot[bot] in #2161
- chore(deps): Bump crate-ci/typos from 1.43.4 to 1.43.5 by @dependabot[bot] in #2160
- chore(deps): Bump urllib3 from 2.5.0 to 2.6.3 in /bindings/python by @dependabot[bot] in #2170
- ci: Update stale.yml GitHub workflow to handle stale PRs by @mbutrovich in #2171
- perf(reader): Add Parquet metadata size hint option to ArrowReaderBuilder by @mbutrovich in #2173
- infra: improve python binding setup by @kevinjqliu in #2178
- perf(reader): Pass data file size and delete file size to reader to avoid
stat()calls by @mbutrovich in #2175 - feat(datafusion): support isnan predicate pushdown to Iceberg by @charlesdong1991 in #2142
- chore(deps): upgrade to DataFusion 52 by @ethan-tyler in #1997
- chore: use ubuntu-slim for lightweight jobs by @zhjwpku in #2187
- chore(deps): Bump tempfile from 3.24.0 to 3.25.0 by @dependabot[bot] in #2198
- chore(deps): Bump fs-err from 3.2.2 to 3.3.0 by @dependabot[bot] in #2197
- chore(deps): Bump crate-ci/typos from 1.43.5 to 1.44.0 by @dependabot[bot] in #2190
- chore(deps): Bump actions/download-artifact from 7 to 8 by @dependabot[bot] in #2191
- chore(deps): Bump uuid from 1.19.0 to 1.21.0 by @dependabot[bot] in #2193
- chore(deps): Bump serde_with from 3.16.1 to 3.17.0 by @dependabot[bot] in #2194
- chore(deps): Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #2189
- chore(deps): Bump aws-sdk-glue from 1.133.0 to 1.134.0 by @dependabot[bot] in #2196
- chore(deps): Bump the arrow-parquet group with 7 updates by @dependabot[bot] in #2192
- chore(deps): Bump minijinja from 2.14.0 to 2.16.0 by @dependabot[bot] in #2195
- feat!(storage): Integration Storage trait with FileIO by @CTTY in #2116
- chore: Update MSRV to 1.91.0 by @xanderbailey in #2204
- refactor!(storage): Move OpenDal Storage to a new crate iceberg-storage-opendal by @CTTY in #2207
- perf(reader): Implement AsyncFileReader get_byte_ranges and coalesce close ranges by @mbutrovich in #2181
- chore: update to DataFusion 52.2 by @xanderbailey in #2199
- chore(deps): Bump minijinja from 2.16.0 to 2.17.1 by @dependabot[bot] in #2222
- chore(deps): Bump uuid from 1.21.0 to 1.22.0 by @dependabot[bot] in #2221
- doc: Update IO feature flag and examples by @CTTY in #2214
- perf(reader): Avoid second
create_parquet_record_batch_stream_builder()call for migrated tables by @mbutrovich in #2176 - chore: Bump version to 0.9.0, update dep list and changelog by @CTTY in #2223
- chore: Bumping MSRV to 1.92.0 by @CTTY in #2224
- feat(reader): support timestamp type in create_column by @chenzl25 in #2180
- chore: Second round of 0.9.0 changelog update by @CTTY in #2225
New Contributors
- @aditya-subrahmanyan made their first contribution in #1998
- @xbattlax made their first contribution in #2002
- @brodiealexander made their first contribution in #2079
- @cmackenzie1 made their first contribution in #2130
- @Shekharrajak made their first contribution in #2121
- @charlesdong1991 made their first contribution in #2142
- @ethan-tyler made their first contribution in #1997
- @xanderbailey made their first contribution in #2204
Full Changelog: v0.8.0...v0.9.0