Fault when return strings over 256 characters in PLpgSQL function

Поиск
Список
Период
Сортировка
От cathy.hemsley@powerconv.alstom.com
Тема Fault when return strings over 256 characters in PLpgSQL function
Дата
Msg-id OFC8F55579.F9AF1E76-ON80256FBF.003C83B1-80256FBF.003DF259@transport.alstom.com
обсуждение исходный текст
Ответы Re: Fault when return strings over 256 characters in PLpgSQL  (Neil Conway <neilc@samurai.com>)
Список pgsql-bugs
I have a PLpgSQL function that returns a string (varchar):  if this string
is over 256 characters long then the last three characters are corrupted:
replaced by the string ' (.'

This is my test function:-

-- Function: testconverttousername(varchar, varchar)
DROP FUNCTION testconverttousername();
CREATE OR REPLACE FUNCTION testconverttousername()
  RETURNS varchar AS
--  RETURNS text AS
'
DECLARE
        userName varchar (1000);  -- have tried without (1000) but makes
no difference
     locn int;
BEGIN
userName := \'12345678\';
userName := userName || userName;  -- 16 chars
userName := userName || userName;  -- 32 chars
userName := userName || userName;  -- 64 chars
userName := userName || userName;  -- 128 chars
userName := userName || userName;  --256 chars
userName := userName || \'88\';  --258 chars
-- userName has now "788" at end replaced with " (." ? Test
this...apparently not...
locn :=  position(\'.\' in userName);
IF locn > 0 THEN
    --userName has now "788" at end replaced with " (." ? Test
this...apparently not...
    userName := \'Has got additional character . put in it \';
    END IF;
RETURN userName;  -- has "7888" at end replaced with " (." so fault is at
the return statement??
END
'
  LANGUAGE 'plpgsql' STABLE;


This function returns a string that should end with '7888' but ends with
'78 (.'.  As far as I can see returning text or varchar makes no
difference, and the corruption occurs at the RETURN statement, not before.
The fault only occurs if the string is over 256 characters.

I am using Postgres 8.0.0 latest release on a Windows 2000 server.
Your help would be appreciated, as this is causing some problems!
Cathy



:.________________
CONFIDENTIALITY : This  e-mail  and  any attachments are confidential and
may be privileged. If  you are not a named recipient, please notify the
sender immediately and do not disclose the contents to another person, use
it for any purpose or store or copy the information in any medium.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: "Gill, Jerry T."
Дата:
Сообщение: Re: BUG #1528: Rows returned that should be excluded by WHERE clause
Следующее
От: Neil Conway
Дата:
Сообщение: Re: Fault when return strings over 256 characters in PLpgSQL