I propose we modify C functions for 7.2. 

( I'll volunteer to do as much as I can figure out ;-)

(1) C functions should be able to return multiple values.

(2) A setup and breakdown function should be able to be called
surrounding the query set in which a function is called. This allows
constructors and destructors.

(3) A function should be able to tell Postgres how to use it. For
instance:

select * from table where column = function();

Should be able to instruct Postgres to either take the value returned
and search that one value (allowing index match against the value), or
perform a table scan against the function each time. Both behaviors are
important. Currently a function seems to force a table scan.

Estimates:
1 may be difficult. 2 should be easy enough. 3, depending on the code
dependencies, could either be very hard or easy. (my guess is that it
would be hard)

-- 
http://www.mohawksoft.com

Wed, 13 Dec 2000 00:31:38 -0500
mlw <markw@mohawksoft.com>
C function proposal redux

On Wed, 13 Dec 2000, mlw wrote:

> I propose we modify C functions for 7.2. 

 Too simple imagine anything, but often difficult do it :-)

> (1) C functions should be able to return multiple values.

 for 7.2 / 7.3 are planned functions return tuples, but do it 
is really diffucult. See the current source...

> (2) A setup and breakdown function should be able to be called
> surrounding the query set in which a function is called. This allows
> constructors and destructors.

 Why? Can you show any example where is it needful? If you really
need an init/destroy, you can use:

SELECT my_init();
..query...
SELECT my_destroy();

> (3) A function should be able to tell Postgres how to use it. For
> instance:
> 
> select * from table where column = function();
> 
> Should be able to instruct Postgres to either take the value returned
> and search that one value (allowing index match against the value), or
> perform a table scan against the function each time. Both behaviors are
> important. Currently a function seems to force a table scan.

Here I not undestand. We have 'iscacheable' - or what you mean? 


				Karel


Wed, 13 Dec 2000 09:03:24 +0100 (CET)
Karel Zak <zakkr@zf.jcu.cz>
Re: C function proposal redux