You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+21Lines changed: 21 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,27 @@ All notable changes to this project will be documented in this file. Please add
4
4
5
5
date format is [yyyy-mm-dd]
6
6
7
+
## [0.8.4] - 2026-04-11
8
+
9
+
### Features
10
+
11
+
- Added first-class `$populate` (relations) and `$exclude` (subtractive scalar projection), while keeping backward compatibility for legacy relation keys in `$select`.
12
+
13
+
### Breaking Changes (Public util surface)
14
+
15
+
- Removed support for specifying relations in `$select`; use `$populate` instead.
16
+
17
+
### Improvements
18
+
19
+
- Populate-only relation loading now works consistently in SQL dialects.
20
+
- Relation keys in `$select` now emit a deduplicated deprecation warning (use `$populate`).
21
+
-`$select` and `$exclude` conflicts are validated recursively, including nested relation queries.
22
+
-`findManyStream` now rejects unsupported relation loading early: **MongoDB** throws if any relation is requested in `$select` / `$populate` (streams use `find` only). **SQL** throws if **to-many** relations are requested (they are filled only after `findMany`, not while streaming).
23
+
24
+
### Documentation
25
+
26
+
- README and docs site clarify projection keys (`$select` / `$exclude` / `$populate`) and streaming behavior across SQL vs MongoDB.
> **Migration note:** selecting relations inside `$select` is still supported for backward compatibility, but deprecated. Move relations to `$populate`.
391
+
392
+
### Streaming (`findManyStream`) and relations
393
+
394
+
`findManyStream` is optimized for **scalar** reads and a stable memory footprint. Relation loading differs by backend:
395
+
396
+
-**SQL:** Joinable relations (e.g. many-to-one, one-to-one) are still included in the streamed `SELECT` / joins. **To-many** collections are not filled on the stream path (that uses extra queries in `findMany`); requesting them in `$select` / `$populate` throws a `TypeError` with a short explanation.
397
+
-**MongoDB:** Streams use a plain `find` cursor, so **any** relation keys in `$select` or `$populate` throw a `TypeError`. Use `findMany` for relation loading (aggregation + fill).
398
+
399
+
See [Cursor Streaming](https://uql-orm.dev/querying/streaming) on the docs site for details.
0 commit comments