For example: Being able to start displaying or manipulating rows as they are being returned by a query while the query has not finished searching the table?.. and I don't mean using the FIRST ROWS directive to hint the engine, I mean transparently, without having to add addtional logic. A feature like this would be useful for queries which take a long time to complete.
SQL is a relational algebra meant to operate on sets (not subsets) and, in my opinion, would not gain anything if modified to allow this.
If you want this capability, it's easy enough to make two round trips to the database, the first with fetch first 100 rows only
and display it quickly, the second without, to retrieve the entire set.
There's nothing stopping an implementation (such as DB2) from returning the first N
rows quickly while it still transmitting the rest down.
Do you know for a fact that the big DBs like Oracle don't already do this? You do some code that is a select * from blah and start getting results streamed to your client, do you know for a fact Oracle has the query 100% figured and loaded in memory out before it starts sending the first byte?
(I don't know either, but it would not surprise me if it were true, at least in certain cases)
If you think about it, that would only work for queries that do not have and ORDER BY or GROUP BY directive. It seems like what you are asking is something like the way a "dump" works, where it starts writing to a file before it's done reading the table. You could start reading the file, and processing data, before it done dumping.
Some databases support buffered and unbuffered query processing, which is partially what you are looking for.