X-Original-To: pgsql-sql-postgresql.org@localhost.postgresql.org Received: from localhost (av.hub.org [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id 23BD9DAA57 for ; Wed, 26 Oct 2005 11:48:33 -0300 (ADT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 46321-08 for ; Wed, 26 Oct 2005 14:48:28 +0000 (GMT) Received: from megazone.bigpanda.com (megazone.bigpanda.com [64.147.171.210]) by svr1.postgresql.org (Postfix) with ESMTP id 3B76CDAF0F for ; Wed, 26 Oct 2005 11:48:31 -0300 (ADT) Received: by megazone.bigpanda.com (Postfix, from userid 1001) id E585535423; Wed, 26 Oct 2005 07:46:37 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by megazone.bigpanda.com (Postfix) with ESMTP id 6460D353BD; Wed, 26 Oct 2005 07:46:37 -0700 (PDT) Date: Wed, 26 Oct 2005 07:46:36 -0700 (PDT) From: Stephan Szabo To: Mario Splivalo Cc: pgsql-sql@postgresql.org Subject: Re: RETURNS SETOF primitive returns results in parentheses In-Reply-To: <1130330322.7400.45.camel@ekim> Message-ID: <20051026074400.Y22162@megazone.bigpanda.com> References: <1130330322.7400.45.camel@ekim> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=0.006 required=5 tests=[AWL=0.006] X-Spam-Level: X-Archive-Number: 200510/327 X-Sequence-Number: 23180 On Wed, 26 Oct 2005, Mario Splivalo wrote: > Consider this function: > > CREATE OR REPLACE FUNCTION php_get_subfield_data_repeating(int4, > "varchar") > RETURNS SETOF "varchar" AS > $BODY$ > DECLARE > aRecordID ALIAS FOR $1; > aSubFieldId ALIAS FOR $2; > > returnValue record; > subFieldNumber char(3); > subFieldLetter char(1); > > BEGIN > subFieldNumber = substr(aSubFieldId, 1, 3); > subFieldLetter = substr(aSubFieldId, 4); > > FOR returnValue IN SELECT "subfieldValue"::varchar > FROM "records_sub" > WHERE "fieldTag" = subFieldNumber AND "subfieldTag" = subFieldLetter > AND "recordId" = aRecordId > LOOP > RETURN NEXT returnValue; I think the root cause is that you're not returning a varchar here, but instead a record containing a varchar (if I return next returnValue."subfieldValue" I don't seem to get parens). I'm not sure why it's allowing you to do so, though, it seems like that shouldn't match the return type.