Troels Arvin wrote:
> Hello,
> 
> I read about the padding-of-CHAR-values changes in the release notes for
> 7.4.
> 
> Making PostgreSQL less standard compliant is sad; I also disagree
> with the statement that trimming of trailing white-space is what people
> expect.
> 
> What's worse, and this may be classified as an error:
> 
> create table chartest(col char(10) not null);
> insert into chartest values ('AAA');
> 
> select character_length(col) from chartest;
>  character_length
> ------------------
>                10
> 
> select character_length(col || 'hey') from chartest;
>  character_length
> ------------------
>                 6
> 
> SELECT CHARACTER_LENGTH(col) < 
>   CHARACTER_LENGTH(col||'hey') from chartest;
>  ?column?
> ----------
>  f
> 
> The last two results are horrifying, in my opinion, especially when you
> consider them in concert: Concatenating a value with another value
> decreases its length...

Horrifying?

Anyway, what did you want it to output?  "AAA       hey"?  We could do
that, but I assume most people wouldn't expect that output?  If you use
literals it does work:

        test=> SELECT 'aaa   ' || 'bb';
         ?column?
        ----------
         aaa   bb
        (1 row)

I tried this and it clipped too:

        test=> SELECT CAST('aa   ' AS CHAR(10)) || 'b';
         ?column?
        ----------
         aab
        (1 row)

How do other databases handle this?

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

Reply via email to