mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-06-24 02:38:06 +02:00
* fix(loader): enforce composite @unique(a, b) as a true composite key
Node/edge composite uniqueness constraints were flattened into a single
list of property names, so @unique(a, b) was enforced as independent
single-field checks @unique(a) AND @unique(b) at intake. Preserve the
constraint grouping and check each group as a composite key, mirroring
the merge-path enforcement. Error messages now name the full composite.
MR-983
* docs: clarify unit-separator comment in composite unique check
* docs: fix separator reference in composite unique comment (merge.rs also uses U+001F)
* fix(merge): align composite @unique key separator with intake (U+001F)
The branch-merge path (update_unique_constraints) joined composite key
columns with '|', while intake joins with U+001F. The same @unique(a, b)
was keyed two different ways, and '|'-join can raise phantom merge
conflicts for values containing '|' (e.g. ('x|y','z') vs ('x','y|z')).
Factor the tuple-join into one shared helper (loader::composite_unique_key)
so the intake and merge paths cannot drift again. Add branching regression
tests for edge @unique(src, dst) on the merge path.
Refs MR-983.
---------
Co-authored-by: Ragnor Comerford <ragnor.comerford@gmail.com>
Co-authored-by: Andrew Altshuler <andrew@collectivelab.io>
|
||
|---|---|---|
| .. | ||
| fixtures | ||
| helpers | ||
| aggregation.rs | ||
| branching.rs | ||
| changes.rs | ||
| composite_flow.rs | ||
| consistency.rs | ||
| end_to_end.rs | ||
| export.rs | ||
| failpoints.rs | ||
| forbidden_apis.rs | ||
| lance_surface_guards.rs | ||
| lance_version_columns.rs | ||
| lifecycle.rs | ||
| maintenance.rs | ||
| merge_truth_table.rs | ||
| point_in_time.rs | ||
| policy_engine_chassis.rs | ||
| recovery.rs | ||
| s3_storage.rs | ||
| schema_apply.rs | ||
| search.rs | ||
| staged_writes.rs | ||
| traversal.rs | ||
| validators.rs | ||
| writes.rs | ||