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

Поиск
Список
Период
Сортировка
От Nicolas Gouteux
Тема Re: BUG #18051: char(N) and varchar(N) behave opposite to the documentation
Дата
Msg-id CANyQZ-7-gPLVhmjPE7wbAESt7m_w_Gb-JVTr1ao12UmTJMiHNA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: BUG #18051: char(N) and varchar(N) behave opposite to the documentation  (Nicolas Gouteux <nicolas.gouteux@sonarsource.com>)
Список pgsql-bugs
Just tried that on Oracle, and of course, the length is 10... (see pic attached)
image.png


Nicolas Gouteux | Sonar

https://sonarsource.comAre you using SonarLint in your IDE?



On Wed, 9 Aug 2023 at 16:04, Nicolas Gouteux <nicolas.gouteux@sonarsource.com> wrote:
Hi

Sorry, but I still do not get it:
- char type adds padding up to its length
select length(charcol), char_length(charcoal)
both yield 1
- how can the length of a char(10) be different than 10 since is right padded?
- I am pretty sure that Oracle/MS-SQL/Sybase would say that length is 10...


Nicolas Gouteux | Sonar

https://sonarsource.comAre you using SonarLint in your IDE?



On Wed, 9 Aug 2023 at 14:57, David G. Johnston <david.g.johnston@gmail.com> wrote:
On Wednesday, August 9, 2023, PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:

Bug reference:      18051
Logged by:          Nicolas Gouteux
Email address:      nicolas.gouteux@sonarsource.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.
 
Вложения

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

Предыдущее
От: Nicolas Gouteux
Дата:
Сообщение: Re: BUG #18051: char(N) and varchar(N) behave opposite to the documentation
Следующее
От: David Rowley
Дата:
Сообщение: Re: BUG #18051: char(N) and varchar(N) behave opposite to the documentation