Add native literal substring query predicates

Implement checked containsInsensitive string predicates in GraphQL, protobuf,
native SQL and bounded residual evaluation. ASCII folding is deterministic;
SQL pattern characters remain literal. Retain deferred full-text index design.

Studio migration awaits a decision on checked native getter forwarding across
conformances; do not duplicate titles or bypass private state ownership.
Compiler and local full-stack substring-query acceptance pass.
This commit is contained in:
Timothy J. Aveni
2026-09-19 10:18:47 -07:00
parent 5634d3ee78
commit 2594403503
8 changed files with 17 additions and 5 deletions
+4
View File
@@ -276,6 +276,10 @@ test("fixed GraphQL yields exact effects, typed references and distinct query ar
test("query allowlist and two-sided RPC effects fail during compilation", async () => {
const rejects = (promise: Promise<unknown>, code: string) =>
assert.rejects(promise, (error: unknown) => error instanceof QueryCompileError && error.code === code);
const substring = (field: string) =>
`query Upcoming {root {items(first: 3, where: {${field}: {containsInsensitive: "TASK"}}) {entries {node {...Row}}}}}`;
await compile(substring("title"));
await rejects(compile(substring("due")), "QUERY_VALIDATION");
await rejects(compile(document, "fragment Row on TaskFacts { hidden }"), "QUERY_VALIDATION");
await rejects(compile(document, "fragment Row on TaskFacts { score }"), "QUERY_RPC_CONSUMER_REASON");
await compile(