On Tue, 19 Oct 2004, federico wrote:

> i saw in bug 1201 that some got my problem
> [ you can't do "SELECT * FROM func_returning_void();" ]

This patch seems to fix it, although I have no idea what the actual 
implications are, I just changed any place that produced an error.

Kris Jurka
Index: src/backend/executor/nodeFunctionscan.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/executor/nodeFunctionscan.c,v
retrieving revision 1.27
diff -c -r1.27 nodeFunctionscan.c
*** src/backend/executor/nodeFunctionscan.c     22 Sep 2004 17:41:51 -0000      1.27
--- src/backend/executor/nodeFunctionscan.c     19 Oct 2004 23:18:56 -0000
***************
*** 191,197 ****
                /* Composite data type, e.g. a table's row type */
                tupdesc = CreateTupleDescCopy(lookup_rowtype_tupdesc(funcrettype, -1));
        }
!       else if (functyptype == 'b' || functyptype == 'd')
        {
                /* Must be a base data type, i.e. scalar */
                char       *attname = strVal(linitial(rte->eref->colnames));
--- 191,197 ----
                /* Composite data type, e.g. a table's row type */
                tupdesc = CreateTupleDescCopy(lookup_rowtype_tupdesc(funcrettype, -1));
        }
!       else if (functyptype == 'b' || functyptype == 'd' || (functyptype == 'p' && 
funcrettype == VOIDOID))
        {
                /* Must be a base data type, i.e. scalar */
                char       *attname = strVal(linitial(rte->eref->colnames));
Index: src/backend/parser/parse_relation.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/parse_relation.c,v
retrieving revision 1.100
diff -c -r1.100 parse_relation.c
*** src/backend/parser/parse_relation.c 29 Aug 2004 05:06:44 -0000      1.100
--- src/backend/parser/parse_relation.c 19 Oct 2004 23:18:57 -0000
***************
*** 1038,1044 ****
                 */
                relation_close(rel, NoLock);
        }
!       else if (functyptype == 'b' || functyptype == 'd')
        {
                /*
                 * Must be a base data type, i.e. scalar. Just add one alias
--- 1038,1044 ----
                 */
                relation_close(rel, NoLock);
        }
!       else if (functyptype == 'b' || functyptype == 'd' || (functyptype == 'p' && 
funcrettype == VOIDOID))
        {
                /*
                 * Must be a base data type, i.e. scalar. Just add one alias
***************
*** 1332,1338 ****
                                        expandRelation(funcrelid, rte->eref, rtindex, 
sublevels_up,
                                                                   include_dropped, 
colnames, colvars);
                                }
!                               else if (functyptype == 'b' || functyptype == 'd')
                                {
                                        /*
                                         * Must be a base data type, i.e. scalar
--- 1332,1338 ----
                                        expandRelation(funcrelid, rte->eref, rtindex, 
sublevels_up,
                                                                   include_dropped, 
colnames, colvars);
                                }
!                               else if (functyptype == 'b' || functyptype == 'd' || 
(functyptype == 'p' && funcrettype == VOIDOID))
                                {
                                        /*
                                         * Must be a base data type, i.e. scalar
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

               http://archives.postgresql.org

Reply via email to