parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

О паразитном пробеле в PostgreSQL

mgorshkov 11.12.2012 15:05

Хотел еще несколько лет назад отрепортить баг о пробеле в полях типа text, но не было острой необходимости.
Видел также подобный тред в этом форуме, но из него не понял, решена ли проблема.
Имеем: Parser текущей версии, драйвер PostgreSQL текущей версии.
Кодировка request/response для сайта windows-1251.
ClientCharset для connect string с базой UTF-8.
Создаем тестовую табличку:
create table parser_test ( comment text );
insert into parser_test( comment ) values ('');
Делаем тестовую страничку:

^if(def $form:comment){

^pSQL.void{
UPDATE parser_test SET comment = '$form:comment'
}

}

$comment[^pSQL.table{
SELECT comment FROM parser_test
}]

<form>
<textarea name="comment">$comment.comment</textarea>
<input type="submit"></input>
</form>

Запускаем. Вводим русскую буковку "а". Получаем ее же, но с пробелом. Действительно, select length(comment) from parser_test; выдает двойку и присутствует паразитный концевой пробел. Вводим test - пробела нет. Вводим testабвгд - пробел есть. Вводим testабв - пробела нет.
Явно имеет место какой-то баг с подсчетом длины и/или округлением. Для полей character varying - все нормально. Наверное, это связано с перекодировками - на латинице все нормально и в utf-8 для сайта тоже все нормально. Что делать для windows-1251? На данный момент не могу воспользоваться utf-8.