Re: Doubt about boundParams
От | Heikki Linnakangas |
---|---|
Тема | Re: Doubt about boundParams |
Дата | |
Msg-id | 4E37CE54.4060703@enterprisedb.com обсуждение исходный текст |
Ответ на | Doubt about boundParams (Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>) |
Ответы |
Re: Doubt about boundParams
|
Список | 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
В списке pgsql-hackers по дате отправления: