Skip to content

[Kernel] Update SchemaUtils validation to allow for variant - #5223

Merged
OussamaSaoudi merged 4 commits into
delta-io:masterfrom
amogh-jahagirdar:variant-schema-evolution
Sep 25, 2025
Merged

OussamaSaoudi merged 4 commits into
delta-io:masterfrom
amogh-jahagirdar:variant-schema-evolution

Conversation

@amogh-jahagirdar

@amogh-jahagirdar amogh-jahagirdar commented Sep 17, 2025 •

Copy link
Copy Markdown
Collaborator

Which Delta project/connector is this regarding?

  • Spark
  • Standalone
  • Flink
  • Kernel
  • Other (fill in here)

Description

This change allows variant in SchemaUtils validateSchema/validateUpdatedSchema

How was this patch tested?

Added unit tests to SchemaUtilsSuite

Does this PR introduce any user-facing changes?

Comment thread kernel/kernel-api/src/main/java/io/delta/kernel/internal/util/SchemaUtils.java Outdated
validateColumnNames(schema, isColumnMappingEnabled);
validateSupportedType(schema);
checkArgument(features != null, "Table features should not be null");
validateColumnNames(schema, features.contains(TableFeatures.COLUMN_MAPPING_RW_FEATURE));

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The COLUMN_MAPPING_RW_FEATURE doesn't necessarily imply column mapping is enabled in theory, this value should really come from the metadata configuration.

Comment thread kernel/kernel-api/src/main/java/io/delta/kernel/internal/util/SchemaUtils.java Outdated
Comment thread kernel/kernel-api/src/main/java/io/delta/kernel/internal/util/SchemaUtils.java Outdated
@amogh-jahagirdar
amogh-jahagirdar force-pushed the variant-schema-evolution branch 5 times, most recently from c047727 to 578720f Compare September 24, 2025 01:14
@amogh-jahagirdar amogh-jahagirdar changed the title [Kernel] Update SchemaUtils validation to accept a set of table features and enable variant evolution if the feature is enabled [Kernel] Update SchemaUtils validation to allow for variant Sep 24, 2025

@allisonport-db allisonport-db left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just 1 request then LGTM

}
}

test("create table - provide unsupported column types - expect failure") {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: Could we maybe create a custom data type FooType extends DataType and keep this test?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be specific, just create this custom data type just within this test here

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure that's reasonable just to make sure we have the right error message

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Discussed offline, will take this in a follow on right after this

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, also with this change, I think we never hit that error message at all since all types are now supported!

@allisonport-db allisonport-db left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with the test-related request addressed in follow-up

@raveeram-db raveeram-db left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@OussamaSaoudi
OussamaSaoudi merged commit 2396042 into delta-io:master Sep 25, 2025
27 checks passed
huashi-st pushed a commit to huashi-st/delta that referenced this pull request Apr 24, 2026
…#5223)

<!--
Thanks for sending a pull request!  Here are some tips for you:
1. If this is your first time, please read our contributor guidelines:
https://github.com/delta-io/delta/blob/master/CONTRIBUTING.md
2. If the PR is unfinished, add '[WIP]' in your PR title, e.g., '[WIP]
Your PR title ...'.
  3. Be sure to keep the PR description updated to reflect all changes.
  4. Please write your PR title to summarize what this PR proposes.
5. If possible, provide a concise example to reproduce the issue for a
faster review.
6. If applicable, include the corresponding issue number in the PR title
and link it in the body.
-->

#### Which Delta project/connector is this regarding?
<!--
Please add the component selected below to the beginning of the pull
request title
For example: [Spark] Title of my pull request
-->

- [ ] Spark
- [ ] Standalone
- [ ] Flink
- [x] Kernel
- [ ] Other (fill in here)

## Description

<!--
- Describe what this PR changes.
- Describe why we need the change.
 
If this PR resolves an issue be sure to include "Resolves #XXX" to
correctly link and close the issue upon merge.
-->

This change allows variant in SchemaUtils
validateSchema/validateUpdatedSchema

## How was this patch tested?

<!--
If tests were added, say they were added here. Please make sure to test
the changes thoroughly including negative and positive cases if
possible.
If the changes were tested in any way other than unit tests, please
clarify how you tested step by step (ideally copy and paste-able, so
that other reviewers can test and check, and descendants can verify in
the future).
If the changes were not tested, please explain why.
-->

Added unit tests to SchemaUtilsSuite

## Does this PR introduce _any_ user-facing changes?

<!--
If yes, please clarify the previous behavior and the change this PR
proposes - provide the console output, description and/or an example to
show the behavior difference if possible.
If possible, please also clarify if this is a user-facing change
compared to the released Delta Lake versions or within the unreleased
branches such as master.
If no, write 'No'.
-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants