Re: Using compression on TCP transfer

Поиск
Список
Период
Сортировка
От Olivier Gautherot
Тема Re: Using compression on TCP transfer
Дата
Msg-id CAJ7S9TWSG3M0o2tGucxjB_adHeRgLbpNg-y+y=THfW2U2nHf8w@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Using compression on TCP transfer  ("Andrus" <kobruleht2@hot.ee>)
Ответы Re: Using compression on TCP transfer
Список pgsql-general
Hi Andrus,

Le sam. 4 avr. 2020 à 10:09, Andrus <kobruleht2@hot.ee> a écrit :
Hi!

>> In case of varchar field values will appear in database sometimes with
>> trailing spaces and sometimes without.
>> This requires major application re-design which much is more expensive than
>> continuing using char fields.
>A simple BEFORE INSERT OR UPDATE trigger would take care of that.

Changing char to varchar will break commands where trailing space is used in comparison.

For example query

create table test ( test char(10) );
insert into test values ('test');
select * from test where test ='test '; -- note trailing space

does not return data anymore if your recommendation is used:

create table test ( test varchar );
insert into test values ('test');
select * from test where test ='test '; -- note trailing space

In production 'test ' is query parameter coming from application with possible trailing space(s).

Adding trigger does not fix this.
How to fix this without re-writing huge number of sql commands?

In the end, your question is more at application level than database itself. The real question is: which one is correct? With or without trailing space?

If you decide that it's without, you could apply a TRIM in a trigger on each INSERT and UPDATE. Then, you could replace the table by a view of the same name and implement the TRIM on SELECT there. This way, you don't have to touch anything in the application.

Hope it helps
Olivier

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

Предыдущее
От: "Peter J. Holzer"
Дата:
Сообщение: Re: Why there is 30000 rows is sample
Следующее
От: arden liu
Дата:
Сообщение: psql show me the : and ask user input, when running one sql file