Return the result of a query as a list. A list has the drawback of loading
the entire dataset into memory before it is returned to the client
applications. This interface is therfore most useful for queries that are
expected to return a small number of items.
Implementors should not allow modifications to the list.