When Repo.Stream prepares the query statement for the cache, it has to know the operation: `all` (select), `update_all`, `delete_all` or `insert_all`. The stream function sets the operation as `all`, probably because selecting large result sets is its main usage.
Removing the restriction in the normalization would allow you to generate the query statement but it would be created as a select instead of an update. You can maybe detect `all` vs `update_all` by looking at the `updates` key on the query struct before sending it to the planner, but I haven't investigated it too thoroughly.