Re: Proposal: TABLE functions - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: Proposal: TABLE functions
Date
Msg-id BAY20-F15F763ACBC5B6B4D30F3C4F99C0@phx.gbl
Whole thread Raw
In response to Re: Proposal: TABLE functions  ("Joshua D. Drake" <jd@commandprompt.com>)
Responses Re: Proposal: TABLE functions  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Hello,

it can by more simple than I though. I need only one flag, and if its true 
then I don't create language variables for OUT params. But I need one next 
column in pg_proc.

Currently a lot of columns in pg_proc is bool. What about one binary columns 
for other options? I hope so next versions can support autonomous 
transaction, which need flag too.

Regards
Pavel Stehule



>
>Pavel Stehule wrote:
> > Hello,
> >
> > Currently PostgreSQL support set returning functions.
> >
> > ANSI SQL 2003 goes with new type of functions - table functions. With
> > this syntax
> >
> > CREATE FUNCTION foo() RETURNS TABLE (c1 t1, ... )
> >
>
>Yeah this should be pretty easy because a table is just a composite
>type. You can already do this:
>
>CREATE TABLE foo (id bigint, first_name text);
>
>CREATE FUNCTION foo() RETURNS SET OF foo...
>
> > PostgreSQL equal statements are:
> >
> > CREATE TYPE tmptype AS (c1 t1, ...)
> > CREATE FUNCTION ... RETURNS SETOF tmptype AS ...
> >
> > All necessary infrastructure is done. Implementation needs propably only
> > small changes in parser.
> >
> > This feature doesn't need any changes in SQL functions. I expect so they
> > will be more readable and consistent.
> >
> > CREATE OR REPLACE FUNCTION foo(f integer)
> > RETURNS TABLE(a int, b int) AS
> > $$
> >  SELECT a, b FROM
> >    FROM footab
> >   WHERE a < f;
> > $$ LANGUAGE sql;
> >
> > plpgpsql RETURN have to be enhanced for table expressions.
> >
> > CREATE OR REPLACE FUNCTION foo(f integer)
> > RETURNS TABLE(a int, b int) AS -- they are not variables!
> > $$
> >  BEGIN
> >    RETURN TABLE(SELECT a, b          -- it's secure, a,b are not 
>variables
> >                             FROM footab
> >                           WHERE a < f);
> >  END;
> > $$ LANGUAGE plpgsql;
> >
> > RETURN NEXT can be used without changes. This feature doesn't allow
> > combination of RETURN TABLE and RETURN NEXT statement.
> >
> > Table functions can have only IN arguments.
> >
> > Advances:
> > * conformance with ansi sql 2003
> > * less propability of colision varnames and colnames
> >
> > Regards
> > Pavel Stehule
> >
> > _________________________________________________________________
> > Emotikony a pozadi programu MSN Messenger ozivi vasi konverzaci.
> > http://messenger.msn.cz/
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 3: Have you checked our extensive FAQ?
> >
> >               http://www.postgresql.org/docs/faq
> >
>
>
>--
>
>       === The PostgreSQL Company: Command Prompt, Inc. ===
>Sales/Support: +1.503.667.4564 || 24x7/Emergency: +1.800.492.2240
>Providing the most comprehensive  PostgreSQL solutions since 1997
>              http://www.commandprompt.com/
>
>Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
>PostgreSQL Replication: http://www.commandprompt.com/products/
>

_________________________________________________________________
Emotikony a pozadi programu MSN Messenger ozivi vasi konverzaci. 
http://messenger.msn.cz/



pgsql-hackers by date:

Previous
From: Oleg Bartunov
Date:
Subject: Re: [COMMITTERS] pgsql: Add lock matrix to documentation.
Next
From: Heikki Linnakangas
Date:
Subject: Re: Database backup mechanism