BUG #16977: SET LC_TIME TO local_variable don't work - Mailing list pgsql-bugs

From PG Bug reporting form
Subject BUG #16977: SET LC_TIME TO local_variable don't work
Date
Msg-id 16977-913c4d7548c2e568@postgresql.org
Whole thread Raw
Responses Re: BUG #16977: SET LC_TIME TO local_variable don't work  ("David G. Johnston" <david.g.johnston@gmail.com>)
List pgsql-bugs
The following bug has been logged on the website:

Bug reference:      16977
Logged by:          Dusan Djuric
Email address:      dusan.djuric@istratech.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$;


pgsql-bugs by date:

Previous
From: Amit Langote
Date:
Subject: Re: posgres 12 bug (partitioned table)
Next
From: Herwig Goemans
Date:
Subject: Re: BUG #16976: server crash when deleting via a trigger on a foreign table