ERROR: variable not found in subplan target lists

KR

alive in new life
ERROR: variable not found in subplan target lists

Собств. методики анализа не знаю, поэтому только исходные данные:

CREATE OR REPLACE VIEW public.emhe_views_afisha_events_eng AS
SELECT mul_num_1 AS genre, txt_num_9 AS opisanie, img_num_2 AS image_small1, vch_num_13 AS parter, bol_num_2 AS morecommended, tms_num_1 AS adddate, bol_num_3 AS sended, objects.objects_id, objects.object_types_id, shortname AS predef_shortname, eng_name AS predef_name, description AS predef_description
FROM objects
JOIN eng_data_vals USING (objects_id)
WHERE objects.object_types_id = 8;

т.е. имеем некую вьюху.

moscowout=# select count(*) FROM emhe_views_afisha_events_eng;
count
-------
16985
(1 UA?EOO)

тут все ок.

а вот отсюда начинается самое интересное:

moscowout=# SELECT * FROM emhe_views_afisha_events_eng limit 1 offset 0;
ERROR: variable not found in subplan target lists

moscowout=# SELECT predef_shortname FROM emhe_views_afisha_events_eng limit 1 offset 0;
ERROR: variable not found in subplan target lists

moscowout=# SELECT predef_name FROM emhe_views_afisha_events_eng limit 1 offset 0;
predef_name
-------------

(1 UA?EOO)
т.е. в последнем запросе тоже все ок.

далее

SELECT count(*) FROM objects JOIN eng_data_vals USING (objects_id) WHERE objects.object_types_id = 8;
count
-------
16985

SELECT * FROM objects JOIN eng_data_vals USING (objects_id) WHERE objects.object_types_id = 8 LIMIT 1 OFFSET 0;
колонок много, поэтому результат запроса не привожу, скажу только, что он ожидаем.

SELECT shortname AS predef_shortname FROM objects JOIN eng_data_vals USING (objects_id) WHERE objects.object_types_id = 8 LIMIT 1 OFFSET 0;
predef_shortname
------------------
17724
(1 UA?EOO)

тоже все ок.

SELECT eng_name AS predef_name FROM objects JOIN eng_data_vals USING (objects_id) WHERE objects.object_types_id = 8 LIMIT 1 OFFSET 0;
predef_name
-------------

(1 UA?EOO)

тоже все ок.



Напоследок добавлю, что сначала все работало нормально, но после того, как что-то случилось, а этим чем-то вполне могло быть заметное увеличение общего объема базы данных, поскольку никаких других действий с базой не проводилось, стала появляться эта ошибка причем не обязательно при работе с вьюхами.

Все попытки отыскать подобную ошибку в гугле приводили на странички тем или иным образом связанные с багами постгреса

Изначальная версия постгреса, где проявили себя эти грабли 7.4.2, потом 7.4.5 с тем же результатом, сейчас 7.4.6 тоже самое
ОС как водится FreeBSD 4.10-STABLE

Ну и типа резюме
tchibo# cd ~pgsql
tchibo# cat .profile | grep PGDATA
...
PGDATA=${HOME}/data
tchibo# pwd
/usr/local/pgsql
tchibo# df -H | grep /usr
/dev/ad0s1f 8.1G 4.8G 2.7G 64% /usr
т.е. с местом на диске вроде тоже все ок.

также проводился VACUUM, ANALYZE и REINDEX всей базы средствами pgadmin3 1.0.2, что не повлияло на проявление ошибки

Прекрасно понимаю, что ERROR: variable not found in subplan target lists не есть гуд, но к сожалению, сам прорешать не в состоянии.

Прошу прощения за столь длинный пост и восхищаюсь терпением тех, кто прочитал его полностью %), но просто постарался дать максимум информации.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Re: ERROR: variable not found in subplan target lists

Автор оригинала: KR
Все попытки отыскать подобную ошибку в гугле приводили на странички тем или иным образом связанные с багами постгреса
Дык, на этих страничках что, никакой информации?

Я бы на твоём месте написал в список рассылки: его, в отличие от этого форума, читают разработчики и смогут направить тебя на путь истинный.

также проводился VACUUM, ANALYZE и REINDEX всей базы средствами pgadmin3 1.0.2, что не повлияло на проявление ошибки
"REINDEX средствами pgadmin3" здесь не поможет --- если загнулся индекс по системной таблице, то надо его восстанавливать особым методом (запуск отдельного backend и т.п., описано в документации).
 

KR

alive in new life
Когда улеглась пыль ...

Сразу вспомнилось, что отключали электричество, а у сервака нет упса %(
В момент отключения как раз шла активная работа с этой базой - поднимался дамп. Похоже все глюки связанны именно с этим.
До отключения стояла 7.4.2

Для начала решил попробовать
postgres -P moscowout (естественно при остановленном сервере ПГ)
с последующим REINDEX DATABASE moscowout;
что тоже не помогло

сильно много времени сейчас нет, поэтому просто задампил базу и понял в новой, что и решило проблему.
 
Сверху