From: Denis BUCHER <dbucherml@hsolutions.ch>
To: Richard Huxton <dev@archonet.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: Problem with return type of function ???
Date: Thu, 22 Oct 2009 16:34:05 +0200
Message-ID: <4AE06D5D.4020908@hsolutions.ch> (raw)
In-Reply-To: <4AE06A75.3040803@archonet.com>
References: <4AE042AF.9020507@hsolutions.ch>
<4AE044C6.8010306@archonet.com>
<4AE046B7.5070805@hsolutions.ch>
<4AE05DD0.7010809@archonet.com>
<4AE05E55.4000500@hsolutions.ch>
<4AE06221.5040403@archonet.com>
<4AE0655C.80400@hsolutions.ch>
<4AE06A75.3040803@archonet.com>
Richard Huxton a écrit :
>>> The other thing you could try is printing out row before returning it:
>>> RAISE NOTICE 'row = %', row;
>>> RETURN NEXT ROW;
>>> It might be you've not got what you were expecting.
>> Thanks a lot, good idea...
>>
>> But it looks good :
>
> Hmm...
>
>>> SELECT * FROM rma.test ('19G256259');
>>> NOTICE: row = (12066602,19G256259,170224,PN6405B,2009-09-22,"FORERUNNER 405 NOIR",2009-09-22,15090,14748)
>>> ERREUR: wrong record type supplied in RETURN NEXT
>>> CONTEXTE : PL/pgSQL function "test" line 12 at return next
>>>
>>> \d rma.serial_number
>>> Table « rma.serial_number »
>>> Colonne | Type | Modificateurs
>>> -------------+-----------------------+-------------------------------------------------------------------
>>> sn_id | bigint | not null default nextval('rma.serial_number_sn_id_seq'::regclass)
>>> sn | character varying(30) |
>>> no_client | integer |
>>> no_art_bw | character varying(11) |
>>> sn_fc_date | date |
>>> desc_fr | character varying(40) |
>>> sn_cm_date | date |
>>> no_facture | integer |
>>> no_commande | integer |
>
> I was wondering if maybe there was a bug to do with domains or complex
> column types, but there's nothing out of the ordinary here.
Yes...
> OK - can you generate a test script with just CREATE TABLE, CREATE
> FUNCTION, one INSERT and a function-call? I'll try and recreate it here.
> Oh, and what version of PostgreSQL are we talking about?
> Bienvenue dans psql 8.1.17, l'interface interactive de PostgreSQL.
OK I prepared what you asked and I tested it myself before sending.
And I think I've found the problem (but not the solution !) :
When I dump the FUNCTION, I get this :
> CREATE test(character varying) RETURNS SETOF serial_number
instead of this :
> CREATE test(character varying) RETURNS SETOF rma.serial_number
That seems to be some bug in Postgres ?
The problem is then clear, it doesn't take SETOF rma.serial_number but
SETOF public.serial_number
Do you see how we could solve this ? And do you think this is the problem ?
Thanks a lot again for all your help !
Denis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: dbucherml@hsolutions.ch, dev@archonet.com
Subject: Re: Problem with return type of function ???
In-Reply-To: <4AE06D5D.4020908@hsolutions.ch>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox