Re: Proposal: TABLE functions

From: "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>
To: Pavel Stehule <pavel(dot)stehule(at)hotmail(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Proposal: TABLE functions
Date: 2007-02-07 02:34:03
Message-ID: 45C93A9B.6090207@commandprompt.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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/

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Jim Nasby 2007-02-07 03:31:55 Re: Proposal: Commit timestamp
Previous Message Tom Lane 2007-02-07 01:53:34 Re: referential Integrity and SHARE locks