Description
The semantics of element_at is similar with GetArrayItem and GetMapValue, so we can support do nested schema pruning if the inside data type is struct.
For example:
For a column schema: `c: array<struct<s1: int, s2: string>>`
With the query: `SELECT element_at(c, 1).s1`
The final pruned schema should be `c: array<struct<s1: int>>`