Re: Doubt about boundParams

From: Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
To: Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Doubt about boundParams
Date: 2011-08-02 10:15:48
Message-ID: 4E37CE54.4060703@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 02.08.2011 12:54, Ashutosh Bapat wrote:
> Hi All,
> I am looking at usage of bound parameters.
>
> In functions SPI_cursor_open_with_args() and SPI_cursor_open_with_args()
> parameters are flagged as constants and passed to the planner in following
> manner,
> paramLI = _SPI_convert_params(nargs, argtypes,
> Values, Nulls,
> PARAM_FLAG_CONST);
>
> _SPI_prepare_plan(src,&plan, paramLI);
>
> The bound params "paramLI" are then passed to the planner as boundParams.
> Before actually planning the query, these parameters are evaluated duing
> constant evaluation (eval_const_expressions_mutator()), and the Param nodes
> are replaced with Constant nodes.
> Further, while executing such queries we pass the paramLI structure to the
> execution routine e.g. _SPI_execute_plan(). These parameter values are
> stored in "EState" structure. But, since these parameters are already folded
> into queries, it looks like parameter values stored in EState are never
> used.
>
> Is this correct? Or somewhere we use those parameter values?

That is correct, at the moment. PARAM_FLAG_CONST means that the planner
is free evaluate the params during planning, but it doesn't have to. You
still need to pass the params in _SPI_execute_plan() in case the planner
decided to not convert some params to Consts, even though as the code
stands today it always will.

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Ashutosh Bapat 2011-08-02 10:53:26 Re: Doubt about boundParams
Previous Message Ashutosh Bapat 2011-08-02 09:54:21 Doubt about boundParams