From: | "news(dot)postgresql(dot)org" <jlim(at)natsoft(dot)com(dot)my> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | CHAR(n) always trims trailing spaces in 7.4 |
Date: | 2004-02-16 03:29:42 |
Message-ID: | c0pdei$ho6$1@news.hub.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers pgsql-sql |
Hello,
I just discovered the following change to CHAR(n) (taken from varlena.com,
general bits, issue 62).
This will cause me serious heart-ache, back-ache and bug-ache if we upgrade
to 7.4. Is there any compatibility flag available to use pre-7.4 behaviour
for CHAR(n)?
Regards, John
==================
In 7.4, one of the changes was that the char(n) type now truncates trailing
spaces. This causes a problem for those of us using ::char(n) to create
fixed length fields. Creating fixed length field batch files are usually
required to interface with legacy systems.
In the example below, psql is called from a shell with tuples only (t) and
unaligned (A). The result of the selection creates a fixed width file.
One of the techniques used to create fixed length fields in 7.3 and earlier
was to cast the value to char(n). This along with the various to_char()
functions used to be able to create fixed length records. For example:
% psql -At > batch.out << END
select accountid::char(30),
to_char( transaction_amount, 'FM000.00'),
(lastname || ',' || firstname )::char(40),
bankid::char(15),
to_char( now(), 'YYYYMMDD');
END
In 7.4 this no longer works. The fields created with the cast are no longer
fixed length. Instead of using the cast to make fixed length fields, use
rpad() and lpad() to do the same thing.
rpad(string text, length integer [, fill text])
lpad(string text, length integer [, fill text])
The previous selection should now be written as follows.
% psql -At > batch.out << END
select rpad(accountid,30),
to_char( transaction_amount, 'FM000.00'),
rpad( (lastname || ',' || firstname ), 40),
rpad(bankid, 15),
to_char( now(), 'YYYYMMDD');
END
From | Date | Subject | |
---|---|---|---|
Next Message | Teodor Sigaev | 2004-02-16 09:59:31 | Re: Concurrence GiST |
Previous Message | Christopher Kings-Lynne | 2004-02-16 02:33:06 | Re: Concurrence GiST |
From | Date | Subject | |
---|---|---|---|
Next Message | Denis | 2004-02-16 07:57:02 | Re: ORDER BY TIMESTAMP_column ASC, NULL first |
Previous Message | Robert Treat | 2004-02-16 02:45:15 | Re: umlimited arguments on function |