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)
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 |
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 |