This interface defines how to communicate to Pig what functionality can
be pushed into the loader. If a given loader does not implement this interface
it will be assumed that it is unable to accept any functionality for push down.
Determine the operators that can be pushed to the loader.
Note that by indicating a loader can accept a certain operator
(such as selection) the loader is not promising that it can handle
all selections. When it is passed the actual operators to
push down it will still have a chance to reject them.
Indicate to the loader fields that will be needed. This can be useful for
loaders that access data that is stored in a columnar format where indicating
columns to be accessed a head of time will save scans. This method will
not be invoked by the Pig runtime if all fields are required. So implementations
should assume that if this method is not invoked, then all fields from
the input are required. If the loader function cannot make use of this
information, it is free to ignore it by returning an appropriate Response
requiredFieldList - RequiredFieldList indicating which columns will be needed.
This structure is read only. User cannot make change to it inside pushProjection.