Qt запрос SELECT без условий возвращает НЕ ВСЕ записи из таблицы. При попытке сделать select... where id= заданному - сообщает, что нет такой записи. Причём в pgadmin её видно, всё ок. Как такое, блин, вообще возможно?!
Проблема только на проде, на тестовом сервере нет. Я себе уже всю голову сломал - а у меня ни малейшей зацепки 😓
Postgres версии 9.2, ОС - RHEL 6 (ага, седая древность, ядро 2.6).
Разные пользователи + row-level security?...
Шляпу небось недавно обновили? Они там в своё время хорошо потоптались по порядкам сортировок в glibc, в итоге обновление билиотек часто ломает индэксы. То есть в индэксе в одном порядке, а сравнение даёт другой — в итоге плиск по текстовому индэксу можэт чего-то не найти. Проверить относительно просто в psql — достаёте неправильно выполняющийся запрос, минимизируете до одной таблицы с условием, выполняете с enable_indexscan=false. Если пришли другие данные — то это сломанный индэкс. Тогда сделаете reindex на каждый индэкс с текстовым полем и пройдёт. И да, если не получилось найти — ну, приводите сюда запрос с неправильными результатами (выполненный в psql), будем думать.
Вот об этом я думал, потрясу ещё админов. Интересный момент - не вижу спорного запроса в "Состоянии сервера" в pgadmin, хотя остальные мои там видны.
Шляпу вроде не обновляли, сам дистр стар как мамонты, и LTS-обновлений мы не видели 🙄 Про реиндекс - ага, пну админов.
Если есть админы — то просто находите запрос, который даёт разные результаты с indexscan и seqscan — типа они сами должны дальшэ в инцыденте разбираться.
Увы, у нас админы примерно такие же, как дистрибутив 😬 попробую их пнуть ещё раз
чудес не бывает, скорее всего не туда коннектишься куда думаешь, проверяй запросы через psql и смотри что происходит в сессии через pg_stat_activity
Я не пойму, почему я запроса не вижу в логах даже на тестовой машине (и через pg_stat_activity тоже). Причём запрос, что характерно, на тестовой-то машине отрабатывает УСПЕШНО, данные приходят. Но в логах его всё равно нет. Подключение проверил, база верная. Вероятно, инопланетяне тут ни при чём, а я делаю что-то очень глупое, но понять бы...
Ездил сегодня - и да, вы оказались правы. Кривая сборка сервера плюс криво настроенные права - и один из клиентов писал в таблицу записи, которые мог увидеть только суперюзер 🤔
Обсуждают сегодня