| 1 |
HAVING clause is not yet implemented |
Non-empty having rejected wholesale. Decoded Vec<HavingClause> already lands in having_clauses_from_proto (currently #[allow(dead_code)]); execution is "flip the gate + thread into the dispatchers." |
| 2 |
SELECT SUM is not yet implemented |
Numeric aggregate executor missing in drive — aggregate_count / carrier_aggregate_count cover COUNT only. |
| 3 |
SELECT AVG is not yet implemented |
Same — needs numeric aggregate executor. Result is f64, response shape needs a polymorphic AggregateValue variant. |
| 4 |
SELECT MIN is not yet implemented |
Per-group/global MIN executor needed (semantically distinct from HavingRanking::Min which is cross-group). |
| 5 |
SELECT MAX is not yet implemented |
Symmetric to MIN. |
| 6 |
SELECT COUNT(field) is not yet implemented |
Counting non-null values of a specific field; today only COUNT(*) (empty field) is evaluated. |
| 7 |
GROUP BY with SELECT DOCUMENTS is not yet implemented |
Documents-fetch path doesn't accept grouping. |
| 8 |
GROUP BY on field '<x>' which is not constrained by an In or range where clause is not yet implemented |
Single-field GROUP BY on a field not present in WHERE. |
| 9 |
two-field GROUP BY outside the (In, range) compound shape is not yet implemented |
Only the canonical compound (in_field, range_field) ordering is wired; other orderings need a new merk walk. |
| 10 |
GROUP BY with more than two fields is not yet implemented |
group_by.len() > 2. Probably permanent in current architecture; flag for confirmation. |
| 11 |
OFFSET pagination is not yet implemented |
Wire-reserved optional uint32 offset = 12;. Cursor pagination via start_after / start_at is the supported path today. |
| 12 |
multi-projection SELECT is not yet implemented |
Wire: repeated Select selects. Today selects.len() > 1 rejected. Response shape needs a parallel repeated AggregateValue values field when this lands. |
| 13 |
start_after / start_at with SELECT COUNT is not yet implemented |
Paginating count results — workaround today is narrowing the range clause. |
| 14 |
ORDER BY on aggregate keys is not yet implemented |
Wire: OrderClause.target.aggregate. Drive's OrderClause only carries a plain field: String; extension needs a new OrderTarget enum at the drive level. Overlaps HavingRanking::Top/Bottom for top-N selection but more general. |
Background
PR #3654 lands the v1
getDocumentsSQL-shaped wire surface (SELECT/WHERE/GROUP BY/HAVING/ORDER BY/LIMIT/OFFSET), but ships several pieces as wire-only: the proto carries them so callers can encode the shape and the future server capability can land without another wire-format change, but the server rejects them at routing time withQuerySyntaxError::Unsupported("… is not yet implemented").This tracker collects every
not_yet_implementedintroduced by that PR so each can be picked up as a focused follow-up.Inventory of
not_yet_implementedrejections (rs-drive-abci v1 handler)HAVING clause is not yet implementedhavingrejected wholesale. DecodedVec<HavingClause>already lands inhaving_clauses_from_proto(currently#[allow(dead_code)]); execution is "flip the gate + thread into the dispatchers."SELECT SUM is not yet implementedaggregate_count/carrier_aggregate_countcover COUNT only.SELECT AVG is not yet implementedf64, response shape needs a polymorphicAggregateValuevariant.SELECT MIN is not yet implementedHavingRanking::Minwhich is cross-group).SELECT MAX is not yet implementedSELECT COUNT(field) is not yet implementedCOUNT(*)(emptyfield) is evaluated.GROUP BY with SELECT DOCUMENTS is not yet implementedGROUP BY on field '<x>' which is not constrained by an In or range where clause is not yet implementedWHERE.two-field GROUP BY outside the (In, range) compound shape is not yet implemented(in_field, range_field)ordering is wired; other orderings need a new merk walk.GROUP BY with more than two fields is not yet implementedgroup_by.len() > 2. Probably permanent in current architecture; flag for confirmation.OFFSET pagination is not yet implementedoptional uint32 offset = 12;. Cursor pagination viastart_after/start_atis the supported path today.multi-projection SELECT is not yet implementedrepeated Select selects. Todayselects.len() > 1rejected. Response shape needs a parallelrepeated AggregateValue valuesfield when this lands.start_after / start_at with SELECT COUNT is not yet implementedORDER BY on aggregate keys is not yet implementedOrderClause.target.aggregate. Drive'sOrderClauseonly carries a plainfield: String; extension needs a newOrderTargetenum at the drive level. OverlapsHavingRanking::Top/Bottomfor top-N selection but more general.Dependencies between items
AggregateValueresponse variant. Land that infrastructure once; then the four functions are mostly individual executor implementations.repeated AggregateValue valuesresponse shape.OrderClauseshape; once done,HavingRanking::Top/Bottomcould potentially be consolidated through this path.conversions.rs::having_clauses_from_proto; only the gate-flip + dispatcher threading is needed.offsetonSizedQuery; routing-layer wire-through is the main work.Suggested first slices
AggregateValueresponse variant + drive executor scaffolding; thenSUMas the canonical first function; thenAVG/MIN/MAXfollow once the shape settles. 2–3 PRs.References
packages/dapi-grpc/protos/platform/v0/platform.proto(GetDocumentsRequestV1and its nested messages)packages/rs-drive-abci/src/query/document_query/v1/mod.rs(validate_and_route)packages/rs-drive-abci/src/query/document_query/v1/conversions.rspackages/rs-drive/src/query/{having,projection,conditions,ordering}.rs