Commit 2c856f3
authored
primary key expression (#3031)
<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Adds first-class primary key expression support across OLAP pipelines,
generating/reading PRIMARY KEY in DDL, normalizing for diffs, and
exposing config in TS/Python SDKs with tests and docs.
>
> - **OLAP/ClickHouse core**:
> - Add `primary_key_expression` to `Table`/ClickHouse models and
protobuf; include in (de)serialization and introspection.
> - Generate PRIMARY KEY in `create_table_query` (uses expression or
column flags) and expose in list_tables via SQL parsing
(`extract_primary_key_from_create_table`).
> - Normalize PKs (strip spaces/backticks/outer parens) and compare in
diffs; PK changes trigger drop+create.
> - **Code generation**:
> - TS/Python generators output
`primaryKeyExpression`/`primary_key_expression` in table configs and
switch key-wrapping logic to use it.
> - **SDK/Internal config**:
> - TS/Python SDKs add `primaryKeyExpression`/`primary_key_expression`
to `OlapTable` config and internal representations.
> - **Tests**:
> - Extensive unit tests for PK parsing/normalization/diff behavior and
DDL generation; e2e template tests validating PRIMARY KEY and ORDER BY
in DDL.
> - **Docs**:
> - New/updated docs detailing primary key expressions, constraints, and
examples in TS/Python, including ORDER BY prefix requirement.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
3bdd55e. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->1 parent d619ad3 commit 2c856f3
File tree
32 files changed
+1430
-56
lines changed- apps
- framework-cli-e2e/test
- utils
- framework-cli/src
- cli
- routines
- framework
- core
- infrastructure
- data_model
- python
- typescript
- infrastructure/olap
- clickhouse
- framework-docs-v2/content/moosestack/olap
- framework-docs/llm-docs
- python
- typescript
- packages
- protobuf
- py-moose-lib/moose_lib
- dmv2
- ts-moose-lib/src/dmv2
- sdk
- templates
- python-tests/src/ingest
- typescript-tests/src/ingest
32 files changed
+1430
-56
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
292 | 292 | | |
293 | 293 | | |
294 | 294 | | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
295 | 343 | | |
296 | 344 | | |
297 | 345 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
421 | 421 | | |
422 | 422 | | |
423 | 423 | | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
424 | 443 | | |
425 | 444 | | |
426 | 445 | | |
| |||
805 | 824 | | |
806 | 825 | | |
807 | 826 | | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
808 | 846 | | |
809 | 847 | | |
810 | 848 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3564 | 3564 | | |
3565 | 3565 | | |
3566 | 3566 | | |
| 3567 | + | |
3567 | 3568 | | |
3568 | 3569 | | |
3569 | 3570 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
781 | 781 | | |
782 | 782 | | |
783 | 783 | | |
| 784 | + | |
784 | 785 | | |
785 | 786 | | |
786 | 787 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
614 | 614 | | |
615 | 615 | | |
616 | 616 | | |
| 617 | + | |
617 | 618 | | |
618 | 619 | | |
619 | 620 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
533 | 533 | | |
534 | 534 | | |
535 | 535 | | |
| 536 | + | |
536 | 537 | | |
537 | 538 | | |
538 | 539 | | |
| |||
Lines changed: 78 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
302 | 302 | | |
303 | 303 | | |
304 | 304 | | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
305 | 309 | | |
306 | 310 | | |
307 | 311 | | |
| |||
402 | 406 | | |
403 | 407 | | |
404 | 408 | | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
405 | 478 | | |
406 | 479 | | |
407 | 480 | | |
| |||
473 | 546 | | |
474 | 547 | | |
475 | 548 | | |
| 549 | + | |
476 | 550 | | |
477 | 551 | | |
478 | 552 | | |
| |||
581 | 655 | | |
582 | 656 | | |
583 | 657 | | |
| 658 | + | |
584 | 659 | | |
585 | 660 | | |
586 | 661 | | |
| |||
1647 | 1722 | | |
1648 | 1723 | | |
1649 | 1724 | | |
| 1725 | + | |
1650 | 1726 | | |
1651 | 1727 | | |
1652 | 1728 | | |
| |||
1776 | 1852 | | |
1777 | 1853 | | |
1778 | 1854 | | |
| 1855 | + | |
1779 | 1856 | | |
1780 | 1857 | | |
1781 | 1858 | | |
| |||
1799 | 1876 | | |
1800 | 1877 | | |
1801 | 1878 | | |
| 1879 | + | |
1802 | 1880 | | |
1803 | 1881 | | |
1804 | 1882 | | |
| |||
Lines changed: 3 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3065 | 3065 | | |
3066 | 3066 | | |
3067 | 3067 | | |
| 3068 | + | |
3068 | 3069 | | |
3069 | 3070 | | |
3070 | 3071 | | |
| |||
3121 | 3122 | | |
3122 | 3123 | | |
3123 | 3124 | | |
| 3125 | + | |
3124 | 3126 | | |
3125 | 3127 | | |
3126 | 3128 | | |
| |||
3297 | 3299 | | |
3298 | 3300 | | |
3299 | 3301 | | |
| 3302 | + | |
3300 | 3303 | | |
3301 | 3304 | | |
3302 | 3305 | | |
| |||
Lines changed: 4 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
273 | 273 | | |
274 | 274 | | |
275 | 275 | | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
276 | 279 | | |
277 | 280 | | |
278 | 281 | | |
| |||
743 | 746 | | |
744 | 747 | | |
745 | 748 | | |
| 749 | + | |
746 | 750 | | |
747 | 751 | | |
748 | 752 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
527 | 527 | | |
528 | 528 | | |
529 | 529 | | |
| 530 | + | |
530 | 531 | | |
531 | 532 | | |
532 | 533 | | |
| |||
0 commit comments