94477b677d
queryer: NULL-tolerant bound for optional single-family forward relations
...
An OPTIONAL forward polymorphic relation declared via `family` (e.g.
order.counterparty / invoice.counterparty) had its auto-generated type
bound `{alias}.{disc} IN (variations)` emitted into the PARENT row's
WHERE. When the relation is absent (NULL discriminator) the parent row
was wrongly excluded — a counterparty-less order/invoice returned
nothing instead of the row with `counterparty: null`.
Fix: in `compile_polymorphic_bounds`, make the forward-FK bound
NULL-tolerant (`(… IN (…) OR …_type IS NULL)`), gated on
`!r#type.relationship`:
- real entities get NULL-tolerance (the relation is an optional
attribute; an absent one must not drop the row — the inner CASE
already resolves it to NULL);
- edge entities (`relationship == true`, e.g. `contact`) keep the
bound EXACT, because there source_type/target_type *partition*
typed sub-collections (phone_numbers vs email_addresses) and a NULL
endpoint belongs to no partition.
Note: the `oneOf` path was already correct — it emits no parent bound
(resolves via CASE … ELSE NULL), so cross-family optional relations
already hydrate NULL-safely. Added a fixture case documenting that.
Tests (fixtures/queryer.json): case 15 (entity → NULL-tolerant),
cases 3/5/10 (contact edges → exact, unchanged), new case 16
(oneOf cross-family → no bound). Full suite green.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-19 10:22:29 -04:00
c5d652c6fd
fixed merger ordering issue
2026-06-15 16:41:59 -04:00
5af2399e3b
fixed issue with filter generation where filters or conditions are used internally
2026-06-11 20:40:27 -04:00
813e9ff3c2
more executor reverts
2026-06-11 17:37:34 -04:00
7e28eb2645
added kind to merge notifications, re-instated sql pattern matching
2026-06-11 17:26:07 -04:00
c71e99527d
dynamic type variables now recursive
2026-06-03 10:50:15 -04:00
ea03584bbd
re-applied fix for family in conditions
2026-05-28 14:54:57 -04:00
ccca9129b2
added uuid.condition to filters
2026-05-21 19:03:31 -04:00
b0fc6c12ef
fixed queryer issue with nested families
2026-05-21 13:26:07 -04:00
56775c8c1b
added traits and include features with docs
2026-05-20 19:10:29 -04:00
2a8b991269
fixed ordering of all things sql
2026-05-14 05:58:38 -04:00
3034406706
fixing ordering checkpoint
2026-05-14 03:21:12 -04:00
c129864c89
fixed another org id issue with merger
2026-05-13 16:31:06 -04:00
40e08cbf09
proper test for merge fix for organization_id setting
2026-05-13 15:38:42 -04:00
1fb378def2
fixed issue with STI on non-tables
2026-05-12 08:22:25 -04:00
98e7f5da12
fixed oneOf case queryer issue with resolving the table alias
2026-04-28 15:07:01 -04:00
c8757e1709
added filter base type
2026-04-24 12:53:28 -04:00
ec867f142f
fixed more filtering issues and promoted enum condition generation
2026-04-24 11:53:54 -04:00
0093aea790
fixed nested filters
2026-04-24 10:48:38 -04:00
4e2cb488cc
removed schema realms, fixed fixture generations, added dynamic type resolution for validation based on type and kind discriminators for filters
2026-04-21 10:50:01 -04:00
f450f8ab8b
added realm to jspg processing
2026-04-17 18:25:14 -04:00
8ebf6a69bf
updates
2026-04-17 17:20:07 -04:00
69bd726b25
more filter fixes
2026-04-17 07:43:19 -04:00
509194b55f
in, nin to of, nof for go and dart generator compatibility
2026-04-17 02:24:03 -04:00
87a845e85a
filters are now entities and auto-generated for all table backed types
2026-04-17 01:46:02 -04:00
41649766db
to family
2026-04-16 11:54:37 -04:00
77af67aef5
beefed up schema compiled properties with cases properties and added tests with cases to queryer and merger
2026-04-16 11:00:26 -04:00
d3cb72a5e2
-m fixed bug with STI and different type shapes that don't require kind discrimination
2026-04-16 00:19:10 -04:00
a3bd79deef
jspg stabilized again
2026-04-15 03:08:11 -04:00
8984acaa5f
added jsonb field tests to queryer and merger and fixed a bug there
2026-04-14 13:23:01 -04:00
0b4607b7d4
fixed and tested subschema promotions for beat processing
2026-04-14 06:09:00 -04:00
0017c598e1
chore: JSPG Engine tuple decoupling and core routing optimizations
2026-04-13 22:41:32 -04:00
be78af1507
more tests
2026-04-10 01:06:02 -04:00
3cca5ef2d5
checkpoint
2026-04-09 19:55:35 -04:00
5f45df6c11
checkpoint
2026-04-09 18:39:52 -04:00
7c8df22709
massively improves the jspg validator by removing mathmatical functions like allOf, anyOf, ref, etc to effectively use discriminators and OOP with types to determine valid pathing an nno intersections, unions, or guesswork; added cases to replace the former conditionals
2026-04-08 13:08:24 -04:00
e4286ac6a9
validation progress
2026-04-03 19:24:21 -04:00
ee8c9086ef
added more detail to show fks that are wrong
2026-04-03 01:09:48 -04:00
7876567ae7
fixed queryer relation issues
2026-04-02 22:51:13 -04:00
06f6a587de
progress
2026-04-02 21:55:57 -04:00
ebcdb661fa
maybe working
2026-03-27 19:13:44 -04:00
7523431007
test pgrx no fixes
2026-03-27 18:02:24 -04:00
e86fe5cc4e
fixed relationship resolution in merger and queryer
2026-03-27 16:35:23 -04:00
9c24f1af8f
fixed issue where merge lookups with no changes were not generating a notification
2026-03-27 02:08:45 -04:00
796df7763c
added replaces field to merge for the notification when a lookup is successful
2026-03-27 01:18:36 -04:00
46fc032026
fixed merge lookup issue
2026-03-26 23:49:52 -04:00
c4e8e0309f
removed initial / in validator making paths consistent across validate merger and queryer
2026-03-26 22:27:59 -04:00
8bf3649465
validator now uses hybrid uuid and numeric index pathing
2026-03-26 14:06:24 -04:00
f5bf21eb58
fixed root array queries
2026-03-25 21:37:01 -04:00
8dcc714963
fixed target_type restrictions in where clauses
2026-03-23 16:41:34 -04:00