select * from test where id between client_id-10 and client_id+10 and client_id=?;does not (it scans all partitions in parallel) .Is it expected?
Yes. But the below would work fine I expect since the planner would know a constant range for id. I would be very surprised if the optimizer had some condition rewrite rules to handle just the scenario you show.
select * from test where id between ?-10 and ?+10 and client_id=?;