Re: Problem with return type of function ??? - Mailing list pgsql-sql

From Denis BUCHER
Subject Re: Problem with return type of function ???
Date
Msg-id 4AE06D5D.4020908@hsolutions.ch
Whole thread Raw
In response to Re: Problem with return type of function ???  (Richard Huxton <dev@archonet.com>)
Responses Re: Problem with return type of function ???  (Richard Huxton <dev@archonet.com>)
List pgsql-sql
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


pgsql-sql by date:

Previous
From: Tom Lane
Date:
Subject: Re: Problem with return type of function ??? (corrected)
Next
From: Denis BUCHER
Date:
Subject: Re: Problem with return type of function ??? (corrected)