Parent
Part of #372 (ADR-0018).
What to build
after / before work when an order key is a traversed column or the query is a projected record. position_of on a model instance requires those relations populated; a decoded tuple does not. position_of on a projected record requires every order key to be in the projection. Grouped aggregates still fail the primary-key-in-order-keys rule.
Acceptance criteria
Blocked by
Parent
Part of #372 (ADR-0018).
What to build
after/beforework when an order key is a traversed column or the query is a projected record.position_ofon a model instance requires those relations populated; a decoded tuple does not.position_ofon a projected record requires every order key to be in the projection. Grouped aggregates still fail the primary-key-in-order-keys rule.Acceptance criteria
order_by(lambda t: t.account.label).order_by(lambda t: t.id)pages withafter/beforefrom a tuple, withoutinclude().position_ofon a model instance with a traversed order key requires that path populated; unpopulated is a build-time error.ProjectedQuery.after/beforepage records the same way instances page.position_of(Row)works when every order key is in the projection; missing an order key is a build-time error (pass a tuple).after/beforeon a grouped aggregate is a build-time error (PK is not an order key of aGROUP BY). Aggregate / expression order keys remain a build-time error.Blocked by