Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Postgres 10.6 загадал мне загадку. Не могу разобраться... / 4 сообщений из 4, страница 1 из 1
15.02.2019, 12:42
    #39774395
Xobotoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres 10.6 загадал мне загадку. Не могу разобраться...
Таблица из одного столбца и пяти строк.

form=# select '='||id||'=' from form where id = 'DOCUMENTS';
?column?
----------
(0 rows)

form=# select '='||id||'=' from form where md5(id) = md5('DOCUMENTS');
?column?
-------------
=DOCUMENTS=
(1 row)

Как такое вообще может быть? Кодировка везде utf8.
...
Рейтинг: 0 / 0
15.02.2019, 13:01
    #39774412
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres 10.6 загадал мне загадку. Не могу разобраться...
XobotoffТаблица из одного столбца и пяти строк.

form=# select '='||id||'=' from form where id = 'DOCUMENTS';
?column?
----------
(0 rows)

form=# select '='||id||'=' from form where md5(id) = md5('DOCUMENTS');
?column?
-------------
=DOCUMENTS=
(1 row)

Как такое вообще может быть? Кодировка везде utf8.

1)вы обновили OS в какой то момент и там изменились правила сортировки UTF и индексы по текстовым полям побились а вы их не перестроили
2)сервер был налит как физическая реплика от какого то другого сервера с другим порядком сортировки utf

в общем сделайте reindex индекса form(id)
(и прочих текстовых индексов в базе)
если не поможет - напишите еще раз.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
15.02.2019, 13:15
    #39774436
Hawkmoon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres 10.6 загадал мне загадку. Не могу разобраться...
Еще один вариант, скорее теоретический, НО :)

В 1996 году Ганс Доббертин нашёл псевдоколлизии в MD5, используя определённые инициализирующие векторы, отличные от стандартных. Оказалось, что можно для известного сообщения построить второе, такое, что оно будет иметь такой же хеш, как и исходное. C точки зрения математики это означает, что MD5(IV,L1) = MD5(IV,L2), где IV — начальное значение буфера, а L1 и L2 — различные сообщения.

md5 математически не однозначен. не один к одному с аргументом :)
...
Рейтинг: 0 / 0
15.02.2019, 13:27
    #39774449
Xobotoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres 10.6 загадал мне загадку. Не могу разобраться...
Maxim Boguk,

Большое спасибо, Максим. Помог reindex. Скорее всего, правильно предположение 1). Постгрес в контейнере, и, вероятно, был когда-то обновлен.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Postgres 10.6 загадал мне загадку. Не могу разобраться... / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]