Изобщо не е грешка.
Предаване на низовия литерал 'ab ' към character , ето какво получавате:
a
По документация:
characterбез спецификатор на дължина е еквивалентен наcharacter(1).
'a'::character(1) след това ще бъде принуден да varchar (character varying ), за да тествате за равенство с 'a'::varchar или 'ab'::varchar и дава TRUE или FALSE съответно.
По принцип едва ли има основателна причина да се използва character изобщо . Това е наследен тип, който е надживял своята полезност. Просто използвайте text или varchar .
- Някакви недостатъци при използването на тип данни „текст“ за съхранение на низове?