Repository navigation
Commit 1312bd4
committed
fix: refuse layout for a table not being created, and read it back in one request
Five review points, all taken.
create_managed_database now raises ValueError when partition_by or sorted_by
names a table that is not in `tables`. Previously a typo -- {"fils": ...} against
tables=["files"] -- was dropped in silence and the intended table created flat,
which is permanent because a layout is fixed at creation with no alter path. The
asymmetry with `keys` is deliberate: a wrong key is recoverable, since
load_managed_table takes `key=` per call.
managed_table_layout now filters server-side (var_schema=/table=/limit=1) instead
of paging iter_tables until it finds a match, which cost several round trips for
a table sorting late in the listing. Same KeyError contract.
The absent-vs-unpartitioned test shared one response object across both calls, so
its second assertion inspected a consumed result rather than the case named in
the docstring. Each call now gets a fresh response, and the fake answers by table
name so the "listing has files but not missing" scenario is the one exercised.
TableLayout gains to_dict(), matching every other public dataclass here. Not
asdict(): the key lists hold pydantic models, which asdict copies through
untouched, so each key is mapped through its own to_dict(). The reviewer assumed
the omission was deliberate -- it was not.
CONTRACT.md lists managed_table_layout among the methods accepting an
already-resolved ManagedDatabase, which matters because a create-scoped key that
cannot read /databases is exactly the caller needing this read-back.
Re-sabotaged after the rewrite -- dropping the layout, collapsing missing-table
into an empty layout, and removing the unknown-table guard are each caught.
138 -> 139 passed.1 parent c55b4b5 commit 1312bd4
4 files changed
Lines changed: 86 additions & 17 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
72 | | - | |
| 72 | + | |
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
306 | 306 | | |
307 | 307 | | |
308 | 308 | | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
309 | 319 | | |
310 | 320 | | |
311 | 321 | | |
| |||
502 | 512 | | |
503 | 513 | | |
504 | 514 | | |
505 | | - | |
506 | | - | |
507 | | - | |
508 | | - | |
509 | | - | |
510 | | - | |
511 | | - | |
512 | | - | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
513 | 532 | | |
514 | 533 | | |
515 | 534 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
60 | 74 | | |
61 | 75 | | |
62 | 76 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
489 | 489 | | |
490 | 490 | | |
491 | 491 | | |
492 | | - | |
493 | 492 | | |
494 | 493 | | |
495 | 494 | | |
496 | 495 | | |
497 | 496 | | |
498 | | - | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
499 | 503 | | |
500 | | - | |
| 504 | + | |
501 | 505 | | |
502 | 506 | | |
503 | 507 | | |
| |||
507 | 511 | | |
508 | 512 | | |
509 | 513 | | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
510 | 522 | | |
511 | 523 | | |
512 | 524 | | |
513 | | - | |
514 | | - | |
515 | | - | |
516 | | - | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
517 | 533 | | |
518 | 534 | | |
519 | 535 | | |
520 | | - | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
521 | 542 | | |
522 | 543 | | |
523 | 544 | | |
524 | 545 | | |
525 | 546 | | |
526 | 547 | | |
527 | 548 | | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
0 commit comments