Skip to content

fix(engine): use literal identifiers for property names - #768

Merged
azimafroozeh merged 1 commit into
ModernRelay:mainfrom
azimafroozeh:issue-765-camelcase-unique-probe
Sep 22, 2026
Merged

azimafroozeh merged 1 commit into
ModernRelay:mainfrom
azimafroozeh:issue-765-camelcase-unique-probe

Conversation

@azimafroozeh

@azimafroozeh azimafroozeh commented Sep 22, 2026 •

Copy link
Copy Markdown
Collaborator

What & why

Closes #765. Writes with a camelCase @unique property fail because the uniqueness probe lowercases the property name.

  • Use DataFusion's ident() instead of col() to preserve the exact property name.
  • Backtick-quote property names in mutation and vector-index filters so interval, exists, and trim parse as identifiers. Remove the pending-scan normalization override, which quoting makes unnecessary.

Backing issue / RFC

  • Fixes an accepted issue: #765 (acceptance status not verified; includes issue_765_camelcase_unique_property_insert.gqt).

Checklist

  • Change is focused (property identifier handling at existing filter boundaries).
  • Tests added/updated for behavior changes (three GQT cases cover camelCase uniqueness, committed and pending keyword predicates, and keyword-named indexed vectors).
  • Public docs updated if user-facing surface changed (release notes and the camelCase filtering case study).
  • Reviewed against docs/dev/invariants.md: no Hard Invariant weakened or deny-list item hit (constraint rejection and publication order are preserved).

Local verification

  • cargo test -p omnigraph-gqt --locked: 144 cases and 181 harness tests passed.
  • cargo test -p omnigraph-engine --locked --features failpoints --test writes --test validators --test literal_filters --test lance_surface_guards --lib: 471 unit tests passed, 1 ignored; all four integration suites passed.
  • cargo clippy -p omnigraph-engine --all-targets --locked --features failpoints -- -D warnings -W clippy::dbg_macro: passed.
  • cargo fmt --all --check: passed.
  • bash scripts/check-agents-md.sh: passed.
  • python3 scripts/check-docs.py: passed.
  • ./target/debug/omnigraph-vocabulary-guard check --surface openapi --base ed145db4c61d669d8200b14624583dd96ff359ff --inventory tools/omnigraph-vocabulary-guard/graph-vocabulary-inventory.tsv --openapi openapi.json: passed; 19 current and 19 base occurrences.
  • ./target/debug/omnigraph-vocabulary-guard check --surface rust-string --base ed145db4c61d669d8200b14624583dd96ff359ff --inventory tools/omnigraph-vocabulary-guard/graph-vocabulary-inventory.tsv --openapi openapi.json: failed on unclassified occurrences and stale inventory entries in the merge base.

Notes for reviewers

Backticks work as identifiers in both Lance and DataFusion. Double quotes would be incorrect here because Lance treats them as string literals. Verification covered the affected engine suites and complete GQT package; the full workspace was not run.

@azimafroozeh
azimafroozeh added this pull request to the merge queue Sep 22, 2026
Merged via the queue into ModernRelay:main with commit e588815 Sep 22, 2026
31 of 32 checks passed
@azimafroozeh
azimafroozeh deleted the issue-765-camelcase-unique-probe branch September 22, 2026 11:39
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.

bug: any insert into a type with a camelCase @unique property fails — uniqueness lookup sends the column name unquoted (No field named versiontag)

1 participant