See java implementation.
What's project used for? Say we have row filter a = 10, and we have a partition spec bucket(a, 37) as bs, if one row matches a=10, then its partition value should match bucket(10, 37) as bs, and we project a=10 to bs = bucket(10, 37).
Blocked by #283