Как известно в postgres тип varchar является case sensitive. Что же делать если username должно быть case insensitive. Это может запутать пользователей если будут несколько пользователей с username как username, Username, uSeRnAmE. При этом хотелось бы сохранить оригинальный ввод так что lower(username) при INSERT не вариант. WHERE username = LOWER('username') при логине так же не вариант т.к. при этом теряет смысл использовать UNIQUE для поля (на случай маловероятного но возможного race condition когда может создаться два пользователя 'username' и 'Username' при одновременном сабмите формы регистрации не смотря на то что в приложении была произведена проверка).