Joe Conway <[EMAIL PROTECTED]> writes:
> I'd like to consider the attached a bugfix and apply for the upcoming 
> 7.3.6 and 7.4.2 releases, as well as cvs tip. Any comments/objections? 

Two nitpicks (each applying in 2 places):

> !                     if (!rsinfo)
> !                             ereport(ERROR,
> !                                             (errcode(ERRCODE_SYNTAX_ERROR),
> !                                              errmsg("returning setof record is not 
> " \
> !                                                             "allowed in this 
> context")));
> ! 

First, testing for null rsinfo isn't sufficient, since the resultinfo
mechanism could be used for other things; you need an IsA test too.
Second, is "syntax error" really the most appropriate classification for
this?  Compare the code in functions.c:

                        ReturnSetInfo *rsi = (ReturnSetInfo *) fcinfo->resultinfo;

                        if (rsi && IsA(rsi, ReturnSetInfo))
                                rsi->isDone = ExprEndResult;
                        else
                                ereport(ERROR,
                                                
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                                                 errmsg("set-valued function called in 
context that cannot accept a set")));

(Also, the errmsg text seems a bit out of line with the wording of
comparable errors, but I can't offer better text offhand.)

                        regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to