Skip to content

Conversation

@linliu-code
Copy link
Collaborator

@linliu-code linliu-code commented Jan 15, 2026

Change Logs

This PR is created based on the two PRs:

  1. feat(metadata): Improve Logical Type Handling on Col Stats #13711
  2. fix(ingest): Repair affected logical timestamp milli tables #14161

The following description is from #14161, which summarized the issue.

This pr #9743 adds more schema evolution functionality and schema processing. However, we used the InternalSchema system to do various operations such as fix null ordering, reorder, and add columns. At the time, InternalSchema only had a single Timestamp type. When converting back to avro, this was assumed to be micros. Therefore, if the schema provider had any millis columns, the processed schema would end up with those columns as micros.

In this pr to update column stats with better support for logical types: #13711, the schema issues were fixed, as well as additional issues with handling and conversion of timestamps during ingestion.

this pr aims to add functionality to spark and hive readers and writers to automatically repair affected tables.
After switching to use the 1.1 binary, the affected columns will undergo evolution from timestamp-micros to timestamp-mills. Normally a lossy evolution that is not supported, this evolution is ok because the data is actually still timestamp-millis it is just mislabeled as micros in the parquet and table schemas

Impact

When reading from a hudi table using spark or hive reader if the table schema has a column as millis, but the data schema is micros, we will assume that this column is affected and read it as a millis value instead of a micros value. This correction is also applied to all readers that the default write paths use. As a table is rewritten the parquet files will be correct. A table's latest snapshot can be immediately fixed by writing one commit with the 1.1 binary, and then clustering the entire table.

Risk level (write none, low medium or high below)

High,
extensive testing was done and functional tests were added.

Documentation Update

#14100

Contributor's checklist

  • Read through contributor's guide
  • Enough context is provided in the sections above
  • Adequate tests were added if applicable

@linliu-code linliu-code changed the base branch from master to release-0.14.2 January 15, 2026 20:08
@linliu-code linliu-code marked this pull request as ready for review January 15, 2026 20:09
@github-actions github-actions bot added the size:XL PR with lines of changes > 1000 label Jan 15, 2026
@linliu-code linliu-code force-pushed the 0.14.2-logical-type-fix branch from 60ac38c to 112d3f6 Compare January 15, 2026 21:17
@linliu-code linliu-code force-pushed the 0.14.2-logical-type-fix branch from 2c2938b to 8984cd6 Compare January 22, 2026 22:34
@linliu-code linliu-code force-pushed the 0.14.2-logical-type-fix branch from 8984cd6 to b132c9b Compare January 22, 2026 22:50
@hudi-bot
Copy link
Collaborator

CI report:

Bot commands @hudi-bot supports the following commands:
  • @hudi-bot run azure re-run the last Azure build

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL PR with lines of changes > 1000

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants