ERROR: type of parameter 1 (fruit2) does not match that when preparing the plan (fruit1) - Mailing list pgsql-bugs

From d
Subject ERROR: type of parameter 1 (fruit2) does not match that when preparing the plan (fruit1)
Date
Msg-id 20220430162319.67986afa@metairie.davudsplace.net
Whole thread Raw
Responses Re: ERROR: type of parameter 1 (fruit2) does not match that when preparing the plan (fruit1)
List pgsql-bugs
Hi

This function should produce form_urlencoded data from a row.
It works on the first invoction.
but the second fails and references the table from the previous invocation.

In this case I am using pgbouncer but I have tested it without
and also without  the urldecode on several platforms (pg13)

thanks,
dh
-------to reproduce --------------------------------------
CREATE OR REPLACE FUNCTION record_to_form_data(p_r record)
 RETURNS text
 LANGUAGE plpgsql
AS $function$
begin
return (
select string_agg(format('%s=%s',key,urlencode(value)),'&')
       from
    (select p_r.*) i,
    hstore(i.*) as h,each(h) );
       end;
$function$;

create table fruit1(id varchar not null,name varchar not null,color varchar);
create table fruit2(id varchar not null,name varchar not null);

insert into fruit1 values('1','apple','red');
insert into fruit2 values('1','apple');

select record_to_form_data(f.*) from fruit1 f;
select record_to_form_data(f.*) from fruit2 f;


--------------------------------
testit6=# select record_to_form_data(f.*) from fruit1 f;
    record_to_form_data    
---------------------------
 id=1&name=apple&color=red
(1 row)

testit6=# select record_to_form_data(f.*) from fruit2 f;
ERROR:  type of parameter 1 (fruit2) does not match that when preparing the plan (fruit1)
CONTEXT:  SQL statement "SELECT (
select string_agg(format('%s=%s',key,urlencode(value)),'&')
       from
    (select p_r.*) i,
    hstore(i.*) as h,each(h) )"
PL/pgSQL function record_to_form_data(record) line 6 at RETURN
testit6=# \c
psql (13.5 (Debian 13.5-0+deb11u1), server 13.6 (Debian 13.6-1.pgdg110+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
You are now connected to database "testit6" as user "david".
testit6=# select record_to_form_data(f.*) from fruit2 f;
 record_to_form_data 
---------------------
 id=1&name=apple
(1 row)



pgsql-bugs by date:

Previous
From: John Cwikla
Date:
Subject: Re: BUG #17473: Custom range type with timestamp doesn't respect precision
Next
From: "David G. Johnston"
Date:
Subject: Re: ERROR: type of parameter 1 (fruit2) does not match that when preparing the plan (fruit1)