WIP: Make scan desc available for all PlanStates.
authorAndres Freund <andres@anarazel.de>
Wed, 24 Jan 2018 07:20:02 +0000 (23:20 -0800)
committerAndres Freund <andres@anarazel.de>
Wed, 21 Mar 2018 02:34:25 +0000 (19:34 -0700)
This is to allow JITing of tuple deforming.

Author: Andres Freund
Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de

src/backend/executor/execTuples.c
src/include/nodes/execnodes.h

index c46d65cf938857115e6991b977aa25872886bb17..acd1b97b0e61752a1dbc7358dc1276cdb9865407 100644 (file)
@@ -896,6 +896,7 @@ ExecInitScanTupleSlot(EState *estate, ScanState *scanstate, TupleDesc tupledesc)
 {
    scanstate->ss_ScanTupleSlot = ExecAllocTableSlot(&estate->es_tupleTable,
                                                     tupledesc);
+   scanstate->ps.scandesc = tupledesc;
 }
 
 /* ----------------
index bf2616a95ed11a66c000a0832e047eb875637fa0..0b05cf914135204650210c5c909db92c9d5cae87 100644 (file)
@@ -906,6 +906,9 @@ typedef struct PlanState
    ExprState  *qual;           /* boolean qual condition */
    struct PlanState *lefttree; /* input plan tree(s) */
    struct PlanState *righttree;
+
+   TupleDesc scandesc;
+
    List       *initPlan;       /* Init SubPlanState nodes (un-correlated expr
                                 * subselects) */
    List       *subPlan;        /* SubPlanState nodes in my expressions */