Hello:
I have some questions about parameterized path. I have heard that it is a new feature in PG9.2. I digged for information of parameterized path, but found few(maybe my method is not right). My FIRST question is: What is "parameterized path " for? Is the following a correct example of activating "parameterized path" being created? I found an example by googling. I tried it: --making data: postgres=# create table tst01(id integer); CREATE TABLE postgres=# postgres=# insert into tst01 values(generate_series(1,100000)); INSERT 0 100000 postgres=# postgres=# create index idx_tst01_id on tst01(id); CREATE INDEX postgres=# --runing: postgres=# prepare s(int) as select * from tst01 t where id < $1; PREPARE postgres=# explain execute s(2); QUERY PLAN --------------------------------------------------------------------------------- Index Only Scan using idx_tst01_id on tst01 t (cost=0.00..8.38 rows=1 width=4) Index Cond: (id < 2) (2 rows) postgres=# explain execute s(100000); QUERY PLAN --------------------------------------------------------------- Seq Scan on tst01 t (cost=0.00..1693.00 rows=100000 width=4) Filter: (id < 100000) (2 rows) postgres=# When I just send sql of " select * from tst01 t where id <2" , it will also produce index only scan plan. When I just send sql of " select * from tst01 t where id < 100000", it will also produce seq scan plan. So I think that the above example can not show that "parameterized path" has been created. Maybe: "parameterized path" is special method to do something for a parse tree's plan in ahead I think, In order to improve prepared statement's planning and executing speed more. Is this understanding right? My SECOND question is: For the above example I used, I found that as if "parameterized path" is not created. For my above example, I can find calling relationship of the following: PostgresMainàexec_simple_queryàpg_plan_queriesàpg_plan_queryàplannerà standard_plannerà àsubquery_planneràgrouping_planneràquery_planneràmake_one_relà set_base_rel_pathlistsà àset_rel_pathlistàset_plain_rel_pathlist The set_plain_rel_pathlist calls create_seqscan_path via add_path function's parameter. Then In create_seqscan_path function , get_baserel_parampathlist function returned null. As following: pathnode->param_info = get_baserel_parampathinfo(root, rel,required_outer); So I got no param_info . Does that mean : parameteried path is not created ? If so, Is there any option to let the parameterized path being created? And how to observe it? Thanks!