BUG #16977: SET LC_TIME TO local_variable don't work

From: PG Bug reporting form <noreply(at)postgresql(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: dusan(dot)djuric(at)istratech(dot)hr
Subject: BUG #16977: SET LC_TIME TO local_variable don't work
Date: 2021-04-22 13:12:16
Message-ID: 16977-913c4d7548c2e568@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 16977
Logged by: Dusan Djuric
Email address: dusan(dot)djuric(at)istratech(dot)hr
PostgreSQL version: 13.2
Operating system: Windows 10
Description:

-- THIS DON'T WORK!
CREATE OR REPLACE FUNCTION lctest(p_parameter varchar)
RETURNS varchar
LANGUAGE 'plpgsql'
COST 100
VOLATILE PARALLEL UNSAFE
AS $BODY$
DECLARE
l_lc_time varchar;
l_dateFormat varchar := 'TMDay, TMMonth dd.mm.yyyy';
l_current_date varchar;
BEGIN
l_lc_time := p_parameter;
SET LC_TIME TO l_lc_time;
select to_char(current_date, l_dateFormat)
into l_current_date;
RETURN l_current_date;
END;
$BODY$;

-- THIS WORKS!
CREATE OR REPLACE FUNCTION lctest(p_parameter varchar)
RETURNS varchar
LANGUAGE 'plpgsql'
COST 100
VOLATILE PARALLEL UNSAFE
AS $BODY$
DECLARE
l_lc_time varchar;
l_dateFormat varchar := 'TMDay, TMMonth dd.mm.yyyy';
l_current_date varchar;
BEGIN
l_lc_time := p_parameter;
SET LC_TIME TO l_lc_time;
IF l_lc_time = 'hr_HR.UTF8' THEN
SET LC_TIME TO 'hr_HR.UTF8';
END IF;
IF l_lc_time = 'en_EN.UTF8' THEN
SET LC_TIME TO 'en_EN.UTF8';
END IF;
select to_char(current_date, l_dateFormat)
into l_current_date;
RETURN l_current_date;
END;
$BODY$;

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Herwig Goemans 2021-04-22 13:20:21 Re: BUG #16976: server crash when deleting via a trigger on a foreign table
Previous Message Amit Langote 2021-04-22 12:17:08 Re: posgres 12 bug (partitioned table)