·
6 commits
to main
since this release
Release Notes for release-0.3.0-incubating
Apache XTable™ (Incubating) is a cross-table converter for table formats that facilitates omni-directional interoperability across data processing systems and query engines. Currently, Apache XTable™ supports widely adopted open-source table formats such as Apache Hudi, Apache Iceberg, and Delta Lake.
✨ What's Changed
🔄 Core Functionality Enhancements
-
Catalog Sync:
- Introduced
CatalogSyncClient
andCatalogSync
interfaces. - Implemented Glue and HMS catalog sync for Iceberg, Delta, and Hudi.
- Additional information can be found in docs.
- Introduced
-
Table Format Sync Improvements:
- Added support for continuous sync using
RunSync
. - Support restore/rollback sync during conversion across all three formats.
- Added support for bucket partition transform (Iceberg → Delta).
- Synced schema field comments and record counts in Delta source.
- Improved decimal field scale handling in iceberg and fixed bug in column stats.
- Supporting timestamp_ntz type in conversion logic.
- Added support for continuous sync using
-
Breaking changes
- We have refactored
SyncStatusCode
andErrorDetails
into dedicated classes, refactor code by fixing the import path if you are using these classes.
- We have refactored
🧪 Testing & Quality
- Fixed flaky tests and normalized base paths for test stability.
- Addressed minor issues found via static analysis tooling.
- Dockerfile syntax fix and test class name corrections.
📘 Documentation & Community
- Added downloads page for
0.2.0-incubating
release. - Introduced RFC template and new change proposals.
- Updated community sync and blog pages.
🧰 Infrastructure & Maintenance
- Upgraded parquet-avro to 1.15.1 to fix critical vulnerabilities found recently.
- Upgraded Hadoop and AWS SDK dependencies.
- Refactored
RunSync
for better modularity and reusability.
Detailed Change Log
- Iceberg and Delta target: sync schema field comments by @emilie-wang in #575
- [551] Add downloads page for 0.2.0-incubating release by @vinishjail97 in #576
- [551] Try enabling keep_files as false in GH action for downloads by @vinishjail97 in #577
- [DOCS] Remove info on snowflake public preview for Iceberg by @sagarlakshmipathy in #580
- Add 2 New Community Blogs to the Apache XTable Blogs section by @dipankarmazumdar in #585
- Site content is not deployed due to missing .asf.yaml file by @zabetak in #587
- Execute correct delete operation in delta tests by @ashvina in #589
- Fix commit log parsing of Delta tables with delete vector by @ashvina in #596
- Normalize basePath in targetTables in ConversionController by @vinishjail97 in #602
- [590] Add RFC template for XTable by @vinishjail97 in #604
- [590] Add interfaces for CatalogSyncClient and CatalogSync by @vinishjail97 in #603
- [590] Add RFC template for XTable by @vinishjail97 in #610
- [590] Hadoop and AWS sdk version upgrade by @kroushan-nit in #614
- [619] Maintenance: Update dependencies, fix test class names by @the-other-tim-brown in #620
- [608] Ensure column stats for decimal fields have proper scale set by @the-other-tim-brown in #617
- [615] Add Iceberg stats when reading snapshot by @the-other-tim-brown in #616
- Add community sync page for XTable by @vinishjail97 in #625
- Update GMeet link and add today's recording by @vinishjail97 in #628
- [590] Add RFC for XCatalogSync - Synchronize tables across catalogs by @vinishjail97 in #605
- [590] Add RunCatalogSync utility for synchronizing tables across catalogs by @vinishjail97 in #591
- Delta source: add record count for DataFile by @emilie-wang in #623
- [site] Update blogs by @bhasudha in #635
- [590] Add Iceberg Glue Catalog Sync implementation by @kroushan-nit in #632
- [590] Add Iceberg HMS Catalog Sync implementation by @kroushan-nit in #633
- [590] Add Delta Glue Catalog Sync implementation by @kroushan-nit in #637
- [590] Add Delta HMS Catalog Sync implementation by @kroushan-nit in #638
- [590] Add Hudi HMS Catalog Sync implementation by @vamsikarnika in #639
- Update xtable-api sources by @emmanuel-ferdman in #651
- [Enhancement] Support restore/rollback sync during conversion (1/2) by @danielhumanmod in #569
- [590] Add Hudi HMS Catalog Sync Implementation by @vamsikarnika in #648
- [590] Add Hudi Glue Catalog Sync Implementation by @vamsikarnika in #649
- Add change proposal for conversion of deletion vectors by @ashvina in #634
- Add base representation for storage files by @ashvina in #653
- Fix flaky test, ignore order of elements in list validation by @ashvina in #662
- [594] Support continuous conversion with the RunSync tool by @the-other-tim-brown in #593
- [MINOR] fixes recommended from static analysis tooling by @the-other-tim-brown in #664
- Modified incremental safe check which does not depend on snapshots list order by @brishi19791 in #665
- [668] Support bucket partition transform for Iceberg Sources and Delta Targets by @the-other-tim-brown in #670
- Handle timestamp_ntz in delta and iceberg by @vinishjail97 in #647
- [MINOR] Fix docker file syntax issue by @the-other-tim-brown in #674
- [528] Refactor RunSync Class for Improved Modularity and Reusability by @vaibhavk1992 in #675
- Add how-to docs for catalog sync by @vinishjail97 in #673
- [MINOR] Add mailing list for discussions, update issues list in asf.yaml by @the-other-tim-brown in #676
- [MINOR] Fix mailing list in asf.yaml by @the-other-tim-brown in #677
- [678] Add contribution guidelines to reflect stale PR's guidelines by @vinishjail97 in #684
- [678] Avoid skipping xtable-aws and xtable-hive-metastore in mvn deploy by @vinishjail97 in #679
- [678] Introduce maturity-level in xtable-api and Refactor SyncStatusCode into separate class by @vinishjail97 in #685
- Bump org.apache.parquet:parquet-avro from 1.12.3 to 1.15.1 by @dependabot in #686
- Enable squash and merge in .asf.yaml for xtable by @vinishjail97 in #688
- [678] Add LICENSE for xtable-aws module by @vinishjail97 in #690
- [678] Add LICENSE for xtable-hive-metastore module by @vinishjail97 in #691
- Docs: Update Footer Copyright Year by @omkenge in #654
- [692] Include 2025 in NOTICE file by @vinishjail97 in #695
- [692] Exclude jol-core in xtable bundled dependencies by @vinishjail97 in #696
- Remove parameters from Glue partition columns by @kroushan-nit in #697
- [692] Ensure LICENSE content is different for bundled jars by @vinishjail97 in #699
- [DOCS]: Add 3 New Community Blogs by @dipankarmazumdar in #706
- Add open api REST spec for XTable Service by @rahil-c in #705
- [BLOG]: Add the new Catalog sync blog by @dipankarmazumdar in #708
- [700] Update license files for bundled jars by @vinishjail97 in #707
- Add latest metadata path field in InternalTable by @rahil-c in #710
- [700] Update NOTICE file for bundled jars by @vinishjail97 in #709
- Add implementation for XTable REST Service by @rahil-c in #704
New Contributors
- @kroushan-nit made their first contribution in #614
- @bhasudha made their first contribution in #635
- @brishi19791 made their first contribution in #665
- @vaibhavk1992 made their first contribution in #675
- @omkenge made their first contribution in #654
- @rahil-c made their first contribution in #705
Full Changelog: 0.2.0-incubating...0.3.0-incubating-rc3