Re: Don't codegen deform code for virtual tuples in expr eval for scan fetch
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Soumyadeep Chakraborty <soumyadeep2007@gmail.com>
Cc: pgsql-hackers@lists.postgresql.org
Date: 2019-09-25T20:02:10Z
Lists: pgsql-hackers
Hi, Thanks for working on this! On 2019-09-17 23:54:51 -0700, Soumyadeep Chakraborty wrote: > This is to address a TODO I found in the JIT expression evaluation > code (opcode = > EEOP_INNER_FETCHSOME/EEOP_OUTER_FETCHSOME/EEOP_SCAN_FETCHSOME): > > * TODO: skip nvalid check if slot is fixed and known to > * be a virtual slot. I now think this isn't actually the right approach. Instead of doing this optimization just for JIT compilation, we should do it while generating the ExprState itself. That way we don't just accelerate JITed programs, but also normal interpreted execution. IOW, wherever ExecComputeSlotInfo() is called, we should only actually push the expression step, when ExecComputeSlotInfo does not determine that a) the slot is virtual, b) and fixed (i.e. guaranteed to always be the same type of slot). Does that make sense? Greetings, Andres Freund
Commits
-
Don't generate EEOP_*_FETCHSOME operations for slots know to be virtual.
- 36d22dd95bc8 13.0 landed
-
Reduce code duplication for ExecJust*Var operations.
- 34c9c53bb035 13.0 landed