Re: 7.4: CHAR padding inconsistency - Mailing list pgsql-bugs

From Bruce Momjian
Subject Re: 7.4: CHAR padding inconsistency
Date
Msg-id 200311191950.hAJJoOR16098@candle.pha.pa.us
Whole thread Raw
In response to 7.4: CHAR padding inconsistency  (Troels Arvin <troels@arvin.dk>)
List pgsql-bugs
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
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

pgsql-bugs by date:

Previous
From: Troels Arvin
Date:
Subject: 7.4: CHAR padding inconsistency
Next
From: "William ZHANG"
Date:
Subject: Re: 7.4: CHAR padding inconsistency