Re: why partition pruning doesn't work?
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
Cc: Dmitry Dolgov <9erthalion6@gmail.com>,
Pavel Stehule <pavel.stehule@gmail.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2018-06-01T15:53:39Z
Lists: pgsql-hackers
Ashutosh Bapat <ashutosh.bapat@enterprisedb.com> writes: > I think the patch is right if we were to handle only SQLValueFunction, > but the bigger picture here is that we aren't evaluating stable > functions before run-time partition pruning happens. I was under the > impression that the stable functions/expressions get evaluated and > folded into a constant just before the execution begins since a stable > function produces the same output for same input during one execution > invocation. But I am not able to find where we do that and probably we > don't do that at all. We don't; there was a patch floating around to make that happen, but it hasn't been updated lately. I agree though that it seems strange to special-case SQLValueFunction rather than any-stable-expression. As long as the evaluation happens at executor start (i.e. with the query's run-time snapshot) it should be reasonable to simplify any stable expression. It's worth questioning whether this is a bug fix or an improvement. If the latter, it probably ought to wait for v12. regards, tom lane
Commits
-
Fix up run-time partition pruning's use of relcache's partition data.
- e23bae82cf3d 11.0 landed
-
Fix access to just-closed relcache entry.
- bdc643e5e46f 11.0 landed
- b10edaf4bb44 10.5 landed
-
Improve ExecFindInitialMatchingSubPlans's subplan renumbering logic.
- 69025c5a07a1 11.0 landed
-
Improve commentary about run-time partition pruning data structures.
- 4e2323640333 11.0 landed
-
Fix run-time partition pruning code to handle NULL values properly.
- be3d90026a3c 11.0 landed
-
Assorted cosmetic cleanup of run-time-partition-pruning code.
- 321f648a312b 11.0 landed
-
Relocate partition pruning structs to a saner place.
- 939449de0e57 11.0 landed
-
Improve run-time partition pruning to handle any stable expression.
- 73b7f48f78d2 11.0 landed
-
Support partition pruning at execution time
- 499be013de65 11.0 cited