Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 97e971e

Browse files
committed
Fix determination when slot types for upper executor nodes are fixed.
For many queries the fact that the tuple descriptor from the lower node was not taken into account when determining whether the type of a slot is fixed, lead to tuple deforming for such upper nodes not to be JIT accelerated. I broke this in 675af5c. There is ongoing work to enable writing regression tests for related behavior (including a patch that would have detected this regression), by optionally showing such details in EXPLAIN. But as it seems unlikely that that will be suitable for stable branches, just merge the fix for now. While it's fairly close to the 12 release window, the fact that 11 continues to perform JITed tuple deforming in these cases, that there's still cases where we do so in 12, and the fact that the performance regression can be sizable, weigh in favor of fixing it now. Author: Andres Freund Discussion: https://postgr.es/m/20190927072053.njf6prdl3vb7y7qb@alap3.anarazel.de Backpatch: 12-, where 675af5c was merged.
1 parent 258bf86 commit 97e971e

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

src/backend/executor/execExpr.c

+2
Original file line numberDiff line numberDiff line change
@@ -2395,6 +2395,7 @@ ExecComputeSlotInfo(ExprState *state, ExprEvalStep *op)
23952395
{
23962396
isfixed = true;
23972397
tts_ops = parent->innerops;
2398+
desc = ExecGetResultType(is);
23982399
}
23992400
else if (is)
24002401
{
@@ -2414,6 +2415,7 @@ ExecComputeSlotInfo(ExprState *state, ExprEvalStep *op)
24142415
{
24152416
isfixed = true;
24162417
tts_ops = parent->outerops;
2418+
desc = ExecGetResultType(os);
24172419
}
24182420
else if (os)
24192421
{

0 commit comments

Comments
 (0)