Skip to content

Move DefaultIcebergConfig message to avoid circular dependencies#2104

Open
apilaskowski wants to merge 5 commits into
mainfrom
apilaskowski-patch-1
Open

Move DefaultIcebergConfig message to avoid circular dependencies#2104
apilaskowski wants to merge 5 commits into
mainfrom
apilaskowski-patch-1

Conversation

@apilaskowski

Copy link
Copy Markdown
Collaborator

Move DefaultIcebergConfig message from configs.proto to core.proto.

This now prevents using core.proto messages in config.proto.

The way protos are used across the project lets this change work without additional changes in code.

Move DefaultIcebergConfig message from configs.proto to core.proto.

This now prevents using core.proto messages in config.proto.

The way protos are used across the project lets this change work without additional changes in code.
Removed DefaultIcebergConfig message definition from configs.proto.
@apilaskowski apilaskowski changed the title Define DefaultIcebergConfig message Move DefaultIcebergConfig message to avoid circular dependencies Mar 7, 2026
@apilaskowski apilaskowski self-assigned this Mar 7, 2026
@apilaskowski apilaskowski marked this pull request as ready for review March 7, 2026 12:03
@apilaskowski apilaskowski requested a review from a team as a code owner March 7, 2026 12:03
@apilaskowski apilaskowski requested review from Tuseeq1 and removed request for a team March 7, 2026 12:03
Comment thread protos/configs.proto Outdated
Comment thread protos/core.proto
reserved 3, 4, 6, 8, 10, 12, 13;
}

message DefaultIcebergConfig {

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.

What you're doing is correct (we shouldn't have done this in the first place), but technically it's a breaking change

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.

@kolina should we leave it as is, or can we introduce this change (I can work around this if we prefer to have it as is).

@kolina kolina Mar 10, 2026

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.

Will this change be wire-compatible? i.e. can the new client read the old compilation result protobuf and the old client read the new compilation result?

I would be ok to do this change, but we need to make sure that it won't break runtime interaction

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.

Apart from looking through the code I did small analysis to confirm those findings.

Generated code from both proto configurations:

Before: DefaultIcebergConfig defined in configs.proto (current main)
After: DefaultIcebergConfig defined in core.proto (PR #2104)

# 1. Generate before_gen/ from main branch schema (DefaultIcebergConfig in configs.proto)
protoc -Ibefore -I. --python_out=before_gen before/configs.proto before/core.proto before/extension.proto
# 2. Generate after_gen/ from PR 2104 schema (DefaultIcebergConfig in core.proto)
protoc -Iafter -I. --python_out=after_gen after/configs.proto after/core.proto after/extension.proto

Executing proto object instantiation and binary serialization produced 100% identical byte outputs.

Also in both cases:

default_iceberg_config on WorkflowSettings resolves to tag 12 with type .dataform.DefaultIcebergConfig.
default_iceberg_config on ProjectConfig resolves to tag 19 with type .dataform.DefaultIcebergConfig.

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.

2 participants