Re: BUG #18051: char(N) and varchar(N) behave opposite to the documentation

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: "nicolas(dot)gouteux(at)sonarsource(dot)com" <nicolas(dot)gouteux(at)sonarsource(dot)com>, "pgsql-bugs(at)lists(dot)postgresql(dot)org" <pgsql-bugs(at)lists(dot)postgresql(dot)org>
Subject: Re: BUG #18051: char(N) and varchar(N) behave opposite to the documentation
Date: 2023-08-09 12:57:36
Message-ID: CAKFQuwaGDMzxhifyQjAStjP-_e+cRJj=2hZ0Bbynrn9DjHTjSw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Wednesday, August 9, 2023, PG Bug reporting form <noreply(at)postgresql(dot)org>
wrote:

> The following bug has been logged on the website:
>
> Bug reference: 18051
> Logged by: Nicolas Gouteux
> Email address: nicolas(dot)gouteux(at)sonarsource(dot)com
> PostgreSQL version: 13.7
> Operating system: Linux
> Description:
>
> create table if not exists ngx_char (
> charcol char(10) not null,
> varcharcol varchar(10) not null
> );
> truncate table ngx_char;
> insert into ngx_char (charcol, varcharcol) values ('A', 'A');
> insert into ngx_char (charcol, varcharcol) values ('A ', 'A ');
> select charcol || 'B', varcharcol || 'C' from ngx_char;
> select * from ngx_char where charcol = varcharcol;
>
> Output:
>
> ?column?,?column?
> AB,AC
> AB,A C
>
> This is very strange! Is it me?

This is working as designed and documented. The concatenation to text
removes the insignificant white space in char. There is no manipulation of
content for varchar.

Just don’t use char. There is no good reason to deal with its implicit
behaviors.

David J.

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2023-08-09 13:39:20 Re: pg_restore 14 skips ACL COLUMN when --schema is used
Previous Message PG Bug reporting form 2023-08-09 08:55:53 BUG #18051: char(N) and varchar(N) behave opposite to the documentation