Hello

I cannot find my bug. I would to get tuple via ExecutorRun. But it
works only with one field in target. With more fields I got last
fileld on first position and others fields are null. Can somebody help
me?

Pavel Stehule

postgres=# call print(10,20,30);
NOTICE:  nargs 3
NOTICE:  30 0
NOTICE:  2139062143 0
NOTICE:  2139062143 0



code:
                dest = CreateDestReceiver(DestNone, NULL);

                ActiveSnapshot = CopySnapshot(GetTransactionSnapshot());

                qdesc = CreateQueryDesc(plan, ActiveSnapshot,
                                                        InvalidSnapshot,
                                                        dest,
                                                        paramLI, false);

                ExecutorStart(qdesc, 0);

                result = ExecutorRun(qdesc, ForwardScanDirection, 1L);

                tuple = ExecMaterializeSlot(result);

                values = (Datum *) palloc(nargs * sizeof(Datum));
                nulls = (char *) palloc(nargs * sizeof(char));

                /* copy typle to current context */
                tuple = heap_copytuple(tuple);


                heap_deform_tuple(tuple, qdesc->tupDesc, values, nulls);

                for(i = 0; i < nargs; i++)
                elog(NOTICE, "%d %d", values[i], nulls[i]);


NOTICE:  plan:
DETAIL:     {PLANNEDSTMT
   :commandType 1
   :canSetTag true
   :planTree
      {RESULT
      :startup_cost 0.00
      :total_cost 0.01
      :plan_rows 1
      :plan_width 0
      :targetlist (
         {TARGETENTRY
         :expr
            {CONST
            :consttype 23
            :consttypmod -1
            :constlen 4
            :constbyval true
            :constisnull false
            :constvalue 4 [ 10 0 0 0 ]
            }
         :resno 1
         :resname ?Parameter?
         :ressortgroupref 0
         :resorigtbl 0
         :resorigcol 0
         :resjunk false
         }
         {TARGETENTRY
         :expr
            {CONST
            :consttype 23
            :consttypmod -1
            :constlen 4
            :constbyval true
            :constisnull false
            :constvalue 4 [ 20 0 0 0 ]
            }
         :resno 1
         :resname ?Parameter?
         :ressortgroupref 0
         :resorigtbl 0
         :resorigcol 0
         :resjunk false
         }
         {TARGETENTRY
         :expr
            {CONST
            :consttype 23
            :consttypmod -1
            :constlen 4
            :constbyval true
            :constisnull false
            :constvalue 4 [ 30 0 0 0 ]
            }
         :resno 1
         :resname ?Parameter?
         :ressortgroupref 0
         :resorigtbl 0
         :resorigcol 0
         :resjunk false
         }
      )
      :qual <>
      :lefttree <>
      :righttree <>
      :initPlan <>
      :extParam (b)
      :allParam (b)
      :resconstantqual <>
      }
   :rtable <>
   :resultRelations <>
   :utilityStmt <>
   :intoClause <>
   :subplans <>
   :rewindPlanIDs (b)
   :returningLists <>
   :rowMarks <>
   :relationOids <>
   :nParamExec 0
   }

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Reply via email to