Skip to content

chore(databases): clarify fork behavior and error cases - #144

Open
hotdata-automation[bot] wants to merge 1 commit into
mainfrom
openapi-update-35065374436
Open

hotdata-automation[bot] wants to merge 1 commit into
mainfrom
openapi-update-35065374436

Conversation

@hotdata-automation

Copy link
Copy Markdown
Contributor

Auto-generated from the updated HotData OpenAPI spec.
Source: https://github.com/hotdata-dev/www/pull/427

@hotdata-automation
hotdata-automation Bot requested a review from a team as a code owner September 16, 2026 06:48
@hotdata-automation
hotdata-automation Bot requested review from zfarrell and removed request for a team September 16, 2026 06:48
@hotdata-automation
hotdata-automation Bot enabled auto-merge (squash) September 16, 2026 06:48
Comment thread CHANGELOG.md

### Changed

- chore(databases): clarify fork behavior and error cases

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.

Document the breaking changes in this bullet list.

Add entries in the style the earlier releases use:

  • Breaking: key_determines is renamed to constant_per_key on AddManagedTableDecl, AddManagedTableRequest and DatabaseDefaultTableDecl.
  • Breaking: TableInfo gains a required constant_per_key field, so TableInfo::new takes one more argument.
  • Under ### Added: the two constant-per-key endpoints, UpdateManagedTableRequest, ManagedTableConstantPerKeyResponse, and JobType::TableConstantsUpdate.

Failure scenario: scripts/update_changelog.py copies the [Unreleased] body verbatim into the new version section. The next release therefore ships "clarify fork behavior and error cases" as its entire release note. A caller upgrading from 0.18.0 reads that note, upgrades, and then hits compile errors on key_determines and on TableInfo::new.

key_determines shipped as public API in 0.15.0 (CHANGELOG.md line 73). Releases 0.15.0 and 0.16.0 mark comparable removals with a Breaking: prefix.

Comment thread src/models/table_info.rs
#[serde(rename = "connection")]
pub connection: String,
/// Columns the table declares constant for a given key: for every row, any other row sharing its key holds the same value of these columns. Declaring this lets a keyed mutation narrow its search for prior versions to the values the upload carries. Empty when none is declared, which is the unrestricted search. Unlike `partition_by` and `sorted_by` this is NOT fixed at creation — it changes only which files a mutation opens, never how rows are written — so read it here rather than assuming a declaration took effect.
#[serde(rename = "constant_per_key")]

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.

nit: a response that omits constant_per_key now fails to deserialize (not blocking).

Confirm every reachable deployment already returns constant_per_key for each information_schema table. If some deployment omits the field, mark the field optional in the OpenAPI spec rather than patching the generated file.

Serde rejects a missing field when no default is declared. tests/information_schema_read.rs:26 calls .expect, so the scenario test panics against a server that does not send the field. partition_by on line 37 carries the same required shape, so the decision belongs in the spec, not in the generator output.

@claude claude Bot 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.

Review

Blocking Issues

  • CHANGELOG.md:12 — the auto-seeded bullet hides two breaking API changes. The rename of key_determines to constant_per_key removes a field released in 0.15.0. The new required TableInfo::constant_per_key changes the TableInfo::new signature. scripts/update_changelog.py copies the [Unreleased] body verbatim into the next version section, so the release notes will not mention either change.

Action Required

Rewrite the [Unreleased] entry. List both breaking changes with the Breaking: prefix used in 0.15.0 and 0.16.0. List the new endpoints and models under an Added section.

Notes

One non-blocking comment sits on src/models/table_info.rs:27. Integration Tests / integration was still running when this review started, so its result is not reflected here.

This branch has not been deployed

No deployments
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.

0 participants