Redshift, кажется, игнорирует конечные пробелы в text
столбцах (на самом деле varchar(256)
) в таблице, когда я пытаюсь запустить select distinct
для данного столбца.
Используя CTE, я получаю ожидаемоеПоведение:
dataeng=# with x as (select 'asdf'::text as y union all select 'asdf '::text as y) select distinct y from x;
y
-------
asdf
asdf
(2 rows)
Но как только данные вставлены в таблицу, красное смещение не может определить разницу между двумя значениями:
dataeng=# create table whitespace_test (y text);
CREATE TABLE
dataeng=# insert into whitespace_test values ('asdf'), ('asdf ');
INSERT 0 2
dataeng=# select distinct y from whitespace_test;
y
------
asdf
(1 row)
Даже если оно не потерялоконечный пробел:
dataeng=# select distinct '"' || y || '"' from whitespace_test;
?column?
----------
"asdf"
"asdf "
(2 rows)
Я бы, конечно, оценил активное сглаживание входных данных с помощью красного смещения, но я хотел бы знать об этом и иметь контроль над ним.
PostgreSQL 10 ведет себя как ожидалось и не работаетпокажите эту ошибку.
Это ожидаемое поведение, или я обнаружил ошибку в красном смещении?