Description
The list of SPJ parameters in BatchScanExec keeps growing, which is annoying since there are many places which do pattern-matching on BatchScanExec and they have to change accordingly.
To make this less disruptive, we can introduce a struct for all the SPJ classes and use that as the parameter for BatchScanExec.