This looks good. What's your take on doing this on the client versus server side? We might want to compress the serialization of the SkipScanFilter (using Snappy) if it's too big.