This patch introduces a set of changes to the table AM APIs, making them accept a column projection list. That helps columnar table AMs, so that they don't need to fetch all columns from disk, but only the ones actually needed.
The set of changes in this patch is not exhaustive - there are many more opportunities that are discussed in the TODO section below. Before digging deeper, we want to elicit early feedback on the API changes and the column extraction logic.
TableAM APIs that have been modified are:
1. Sequential scan APIs 2. Index scan APIs 3. API to lock and return a row 4. API to fetch a single row
We have seen performance benefits in Zedstore for many of the optimized operations [0]. This patch is extracted from the larger patch shared in [0].