Re: [HACKERS] CREATE FUNCTION broken - Mailing list pgsql-hackers

From Thomas G. Lockhart
Subject Re: [HACKERS] CREATE FUNCTION broken
Date
Msg-id 34E44F8C.E358038A@alumni.caltech.edu
Whole thread Raw
In response to CREATE FUNCTION broken  (jwieck@debis.com (Jan Wieck))
Responses Re: [HACKERS] CREATE FUNCTION broken  (jwieck@debis.com (Jan Wieck))
List pgsql-hackers
>     Someone changed the parser to build a TypeName node on CREATE
>     FUNCTION in any  case.  As  a  side  effect,  ALL!  functions
>     created  got  the  proretset  attribute  to  true. Thus for a
>     SELECT the parser wrapped an Iter node around  the  Expr  and
>     since  singleton  functions  set  isDone  the Iter returns no
>     tuple up.

Ah. I broke it (though the regression tests did not find the problem). What
I changed was the code in gram.y, which used to just create a string node
for the return type clause _unless_ the return type was a "SETOF type". In
that case a Typename node was created, and the setof attribute was
explicitly set.

What you found is that farther along, the setof attribute was forced to be
true if _any_ Typename node is present.

It looks like your patch will completely fix things, and is better than my
reverting the gram.y code. Can you suggest a small test case to include in
the regression suite?

Unless there are objections from others (with a preference for reverting
the gram.y code) I'll go ahead and apply Jan's patch.

                                                     - Tom


pgsql-hackers by date:

Previous
From: "Thomas G. Lockhart"
Date:
Subject: Re: [COMMITTERS] 'pgsql/src/template linux-elf'
Next
From: Michael Meskes
Date:
Subject: Re: [HACKERS] Subselects are in CVS...