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
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 |