Mask a Lakebase oneof member under its group name - #6443
Open
denik wants to merge 3 commits into
Open
Conversation
denik
force-pushed
the
denik/update-mask-index
branch
from
August 31, 2026 14:58
f9b090d to
bcab355
Compare
denik
force-pushed
the
denik/update-mask-oneof
branch
from
August 31, 2026 15:00
0958e64 to
42c2ef7
Compare
pietern
approved these changes
Sep 1, 2026
| @@ -0,0 +1,3 @@ | |||
| Fixed deploying a change to a Lakebase field that belongs to a oneof: | |||
| `postgres_branches.expire_time` and `.ttl`, `postgres_endpoints.suspend_timeout_duration`, | |||
| and `postgres_projects.default_endpoint_settings.suspend_timeout_duration` ([#6443](https://github.com/databricks/cli/pull/6443)). | |||
Contributor
There was a problem hiding this comment.
And this also enables updating the no_suspend right?
denik
force-pushed
the
denik/update-mask-index
branch
from
September 1, 2026 09:39
bcab355 to
e4fba84
Compare
denik
force-pushed
the
denik/update-mask-oneof
branch
from
September 1, 2026 09:40
42c2ef7 to
192e171
Compare
denik
force-pushed
the
denik/update-mask-index
branch
from
September 1, 2026 09:50
e4fba84 to
ebac25f
Compare
expire_time / ttl / no_expiry are one oneof, suspend_timeout_duration / no_suspension another, and the API accepts them in update_mask only under the group name -- masking the field itself is answered with "Unknown field path in update_mask". So four changes a bundle can express could not be deployed at all: branch expire_time and ttl, endpoint suspend_timeout_duration, and the project's default_endpoint_settings equivalent. All four now apply, and their tests drop Badness. The group names are not in the OpenAPI spec or in the SDK doc comments, so each map is hand-written from what the backend accepts, probed on 2026-08-31. Removing suspend_timeout_duration still fails, and the mask is no longer why: the API requires a masked field to be populated in the body, so a removal has nothing to send. That test keeps a Badness saying so. Co-authored-by: Isaac
Co-authored-by: Isaac
Co-authored-by: Isaac
denik
force-pushed
the
denik/update-mask-oneof
branch
from
September 1, 2026 09:52
192e171 to
c0bd098
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #6441 (which is stacked on #6440) — review those first.
Four changes a bundle can express could not be deployed at all:
postgres_branchesexpire_time,ttlpostgres_endpointssuspend_timeout_durationpostgres_projectsdefault_endpoint_settings.suspend_timeout_durationexpire_time/ttl/no_expiryare one oneof andsuspend_timeout_duration/no_suspensionanother, and the API accepts them inupdate_maskonly under the group name — masking the field itself is answered withUnknown field path in update_mask. All four now apply and their tests dropBadness.The group names are in neither the OpenAPI spec nor the SDK doc comments, so each map is hand-written from what the backend accepts, probed on 2026-08-31. Two members of one group collapse onto a single mask entry.
remove_suspend_timeoutstill fails, and the mask is no longer why: the API requires a masked field to be populated in the body, so a removal has nothing to send. An absent value and an explicitnullare both rejected; the supported way to express it isno_suspension: true. That test keeps aBadnesssaying so.This pull request and its description were written by Isaac.