Всем привет,
Получаю очень странную ошибку, когда пытаюсь выполнить запросы к партицированной таблице, в которой около 30_000_000 строк. Таблица партициована по колонке 'check_in' на части 'tours_201309p1', 'tours_201309p2', 'tours_201309p3', 'tours_201310p1' и так далее.
При попытке выполнять запросы к этой таблице в некоторых ситуациях я получаю ошибку "Tuple offset out of range: 0", но не всегда. Например следующий запрос работает и возвращает примерно 700_000 строк:
SELECT count(*)
FROM
"tours"
WHERE
(
(
"tours"."check_in" IN (
'2013-09-30',
'2013-10-02',
'2013-10-04',
'2013-10-05',
'2013-10-07',
'2013-10-09',
'2013-10-12',
'2013-10-13'
)
AND "tours"."nights_count" IN (7, 9, 12, 13, 15, 16, 6, 10, 11, 14,
AND "tours"."departure_city_id" = 16914
AND "tours"."country_id" = 222
)
)
А вот этот (добавлено условие по 'vendor_accommodation_id') не работает:
SELECT count(*)
FROM
"tours"
WHERE
(
(
"tours"."check_in" IN (
'2013-09-30',
'2013-10-02',
'2013-10-04',
'2013-10-05',
'2013-10-07',
'2013-10-09',
'2013-10-12',
'2013-10-13'
)
AND "tours"."nights_count" IN (7, 9, 12, 13, 15, 16, 6, 10, 11, 14,
AND "tours"."departure_city_id" = 16914
AND "tours"."country_id" = 222
AND "tours"."vendor_accommodation_id" = 2254
)
)
От типа запроса (SELECT, DELETE) результат не зависит.
Что посоветуете? Спасибо.
Погуглил Вашу ошибку,
Погуглил Вашу ошибку, появилось несколько предложений:
1. Битая память, физически.
2. Нехватка памяти
ПС: перенести таблицу на другое железо(если есть возможности)
3. Повреждение данных
4. Старая версия постгреса, обновить
5. выполнить вакуум и реиндексировать таблицу.
ПС: Чтобы Вы не нечали делать, вначале сделайте бэкап.