[Please CC any replies] Hi,
Here is a patch to the documentation clarifying some minor issues. The first is to the main SPI documentation clarifying that SPI isn't available unless there is a current snapshot (leading to the "no snapshot has been set" error). The second clarifies when the get_fn_expr_rettype() and get_fn_expr_argtype() functions can actually provide the information requested. Have a nice day, -- Martijn van Oosterhout <firstname.lastname@example.org> http://svana.org/kleptog/ > Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a > tool for doing 5% of the work and then sitting around waiting for someone > else to do the other 95% so you can sue them.
Index: doc/src/sgml/spi.sgml =================================================================== RCS file: /projects/cvsroot/pgsql/doc/src/sgml/spi.sgml,v retrieving revision 1.42 diff -u -r1.42 spi.sgml --- doc/src/sgml/spi.sgml 29 Jul 2005 13:00:03 -0000 1.42 +++ doc/src/sgml/spi.sgml 13 Aug 2005 19:10:54 -0000 @@ -29,6 +29,14 @@ </para> </note> + <note> + <para> + SPI can not be used in functions called prior to the start of query + execution because there is no current snapshot at that point. Examples of + this include type input functions and cost estimation functions. + </para> + </note> + <para> To avoid misunderstanding we'll use the term <quote>function</quote> when we speak of <acronym>SPI</acronym> interface functions and Index: doc/src/sgml/xfunc.sgml =================================================================== RCS file: /projects/cvsroot/pgsql/doc/src/sgml/xfunc.sgml,v retrieving revision 1.103 diff -u -r1.103 xfunc.sgml --- doc/src/sgml/xfunc.sgml 30 May 2005 23:09:07 -0000 1.103 +++ doc/src/sgml/xfunc.sgml 13 Aug 2005 19:10:55 -0000 @@ -2778,6 +2778,16 @@ as an alternative to <function>get_fn_expr_rettype</>. </para> + <footnote> + <para> + Information about argument and return types is generally available if + you are executing a normal function within a normal query. However, it + can be missing for implicitly used functions, such as type + input/output functions that are called directly by the planner before + the query starts. + </para> + </footnote> + <para> For example, suppose we want to write a function to accept a single element of any type, and return a one-dimensional array of that type:
Description: PGP signature