I don’t (haven’t yet) worked with etags for QUERY, but have been using Prefer respond-async to implement async queries for large sets (and do paging of them with Range requests).
The “stay within the lines” way of designing APIs is getting a bit long of tooth in my opinion.
How about GET /foo -H x-query: serialized_query instead?
Looks like it might move forward
https://httpwg.org/http-extensions/draft-ietf-httpbis-safe-m...