public inbox for [email protected]
help / color / mirror / Atom feedFrom: Rumpi Gravenstein <[email protected]>
To: PostgreSQL <[email protected]>
Subject: PostgreSQL Bug with simple function unexpectedly treating varchar parameter as an array
Date: Fri, 25 Jul 2025 12:36:23 -0400
Message-ID: <CAEpg1wBxp=25isxj6yt2cf97KtvbwxvJfrJ9qYF8UQxGSBJ93Q@mail.gmail.com> (raw)
PostgreSQL Experts,
I've been confound by the following behavior that I see in one of our
PostgreSQL 16 instances. In this case I am running this script from psql.
---------------------------------------------------------------------------------------------------------
xxxx_pub_dev_2_db=# SELECT version();
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 16.9 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0
20210514 (Red Hat 8.5.0-26), 64-bit
(1 row)
xxxx_pub_dev_2_db=# SHOW server_version;
server_version
----------------
16.9
(1 row)
xxxx _pub_dev_2_db=# DROP FUNCTION if exists _sa_setup_role;
DROP FUNCTION
xxxx _pub_dev_2_db=# CREATE OR REPLACE FUNCTION _sa_setup_role(
p_role_to_be_granted varchar)
xxxx _pub_dev_2_db-# RETURNS varchar
xxxx _pub_dev_2_db-# LANGUAGE plpgsql
xxxx _pub_dev_2_db-# AS
xxxx _pub_dev_2_db-# $function$
xxxx _pub_dev_2_db $# declare
xxxx _pub_dev_2_db$# begin
xxxx _pub_dev_2_db$# raise info '%',p_role_to_be_granted::varchar;
xxxx _pub_dev_2_db$# return('Done');
xxxx _pub_dev_2_db$# end;
xxxx _pub_dev_2_db$# $function$;
CREATE FUNCTION
xxxx _pub_dev_2_db=# select _sa_setup_role('af_repo_app');
ERROR: malformed array literal: "af_repo_app"
LINE 1: select _sa_setup_role('af_repo_app');
^
DETAIL: Array value must start with "{" or dimension information.
xxxx _pub_dev_2_db=# select _sa_setup_role('af_repo_app'::varchar);
INFO: af_repo_app
_sa_setup_role
----------------
Done
(1 row)
I've been able to run the same script with no issues in other PostgreSQL
databases, just not this one.
Thoughts?
Here's the script:
SELECT version();
SHOW server_version;
DROP FUNCTION if exists _sa_setup_role;
CREATE OR REPLACE FUNCTION _sa_setup_role( p_role_to_be_granted varchar)
RETURNS varchar
LANGUAGE plpgsql
AS
$function$
declare
begin
raise info '%',p_role_to_be_granted::varchar;
return('Done');
end;
$function$;
select _sa_setup_role('af_repo_app');
select _sa_setup_role('af_repo_app'::varchar);
Best Regards
--
Rumpi Gravenstein
view thread (3+ messages) latest in thread
reply
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: [email protected]
Cc: [email protected], [email protected]
Subject: Re: PostgreSQL Bug with simple function unexpectedly treating varchar parameter as an array
In-Reply-To: <CAEpg1wBxp=25isxj6yt2cf97KtvbwxvJfrJ9qYF8UQxGSBJ93Q@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox