ERROR: type of parameter 1 (fruit2) does not match that when preparing the plan (fruit1)

From: d <dchuck(at)yurfish(dot)com>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: ERROR: type of parameter 1 (fruit2) does not match that when preparing the plan (fruit1)
Date: 2022-04-30 23:23:19
Message-ID: 20220430162319.67986afa@metairie.davudsplace.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers

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)

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message David G. Johnston 2022-05-01 15:58:38 Re: ERROR: type of parameter 1 (fruit2) does not match that when preparing the plan (fruit1)
Previous Message John Cwikla 2022-04-29 22:29:31 Re: BUG #17473: Custom range type with timestamp doesn't respect precision

Browse pgsql-hackers by date

  From Date Subject
Next Message Tatsuo Ishii 2022-05-01 07:47:49 Accessing git.postgresql.org fails
Previous Message Andres Freund 2022-04-30 20:33:49 Re: Building Postgres with lz4 on Visual Studio