On 6 June 2018 at 03:07, David Rowley <david.row...@2ndquadrant.com> wrote: > Please see the attached patch. I've only just finished with it and > it's not fully done yet as there's still an XXX comment where I've not > quite thought about Exprs with Vars from higher levels. These might > always be converted to Params, so the code might be okay as is, but > I've not checked this yet, hence the comment remains.
I looked at this again today and decided that the XXX comment could just be removed. I also changed contains_only_safeparams into contains_unsafeparams and reversed the condition. I then decided that I didn't like the way we need to check which params are in the Expr each time we call partkey_datum_from_expr. It seems better to prepare this in advance when building the pruning steps. I started work on that, but soon realised that I'd need to pass a List of Bitmapsets to the executor. This is a problem as Bitmapset is not a Node type and cannot be copied with COPY_NODE_FIELD(). Probably this could be refactored to instead of passing 3 Lists in the PartitionPruneStepOp we could invent a new node type that just has 3 fields and store a single List. Anyway, I didn't do that because I'm not sure what the fate of this patch is going to be. I'd offer to change things around to add a new Node type, but I don't really want to work on that now if this is v12 material. I've attached a cleaned up version of the patch I posted yesterday. -- David Rowley http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
run-time_pruning_for_exprs_v2.patch
Description: Binary data