BUG #11875: char() not behaving as documented
От | b.wood@niwa.co.nz |
---|---|
Тема | BUG #11875: char() not behaving as documented |
Дата | |
Msg-id | 20141104195517.26930.71023@wrigleys.postgresql.org обсуждение исходный текст |
Ответы |
Re: BUG #11875: char() not behaving as documented
|
Список | pgsql-bugs |
The following bug has been logged on the website: Bug reference: 11875 Logged by: Brent Wood Email address: b.wood@niwa.co.nz PostgreSQL version: 9.2.0 Operating system: Linux Description: According to the docs http://www.postgresql.org/docs/9.3/static/datatype-character.html)(: " If the string to be stored is shorter than the declared length, values of type character will be space-padded; values of type character varying will simply store the shorter string." Yet chars are not being padded, in fact they lose trailing spaces which are retained by varchars. They also return length()'s less than the defined length... which should not be the case for a padded string as defined in the documentation. fish=# create table test(var3 varchar(3),cha3 char(3)); CREATE TABLE fish=# insert into test values('1','1'); INSERT 0 1 fish=# insert into test values('2 ','2 '); -- one space INSERT 0 1 fish=# insert into test values('3 ','3 '); --two spaces INSERT 0 1 fish=# select var3||':' as var3, cha3||':' as char3 from test; var3 | char3 ------+------- 1: | 1: 2 : | 2: 3 : | 3: (3 rows) test=# select length(var3) as v_lgth, length(cha3) as c_length from test; v_lgth | c_length --------+---------- 1 | 1 2 | 1 3 | 1 So, in summary, varchar stores whatever feed to it and keeps trailing spaces to max length, char type will trim off trailing spaces, and store a string shorter than the specified length.
В списке pgsql-bugs по дате отправления: