Files
jspg/fixtures
Satya c97e5d75b3 queryer: don't emit a parent type-bound for reified-relationship properties
A SINGLE reified-relationship property (e.g. invoice.counterparty,
person.primary_contact — a property whose type is a relationship
subtype) is hydrated by a correlated subquery that joins the
relationship table and correlates source_id/target_id = parent.id; its
discriminators (the relationship subtype and the target's type CASE)
are constrained INSIDE that subquery.

For such a property the resolved edge is a REVERSE traversal
(forward = false) over a generic relationship FK
(fk_relationship_source_entity, destination = entity). compile_
polymorphic_bounds then took the `!edge.forward` branch with
poly_col = destination_columns[1] = "type" and
table_to_alias = "entity", which resolves to the PARENT's entity alias
— emitting a bound like `entity_1.type = 'counterparty'` into the
parent WHERE. No parent row has that type, so EVERY parent was dropped
(e.g. get_invoice returned null for an existing invoice whose
counterparty edge was absent).

Array reified traversals (contacts, occupancies) never hit this: an
array property has no bound_type_name. Only the single form did, and it
was previously unexercised.

Fix: in compile_polymorphic_bounds, skip the bound when the property's
resolved type is itself a relationship (type_def.relationship) — there
is no parent-row discriminator column to bound.

Test: new queryer case (person.primary_contact, type=contact) asserts
the parent WHERE has no spurious entity.type bound while the subquery
keeps its discriminator + source_id correlation. Full suite green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 11:03:13 -04:00
..
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-06-15 16:41:59 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-06-15 16:41:59 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-06-15 16:41:59 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00
2026-04-17 18:25:14 -04:00