#postgresql
#postgresql
Вопрос:
Я запускаю: PostgreSQL 9.0.3 (последняя стабильная версия Debian)
Этот запрос:
ВЫБЕРИТЕ * Из sis.thread_categories stc, sis.threads st ГДЕ st.id_thread_categories=stc.id
=> выбрасывает:
ОШИБКА: класс volatile EquivalenceClass не имеет состояния sortref SQL: XX000
Та же проблема возникла, когда я попробовал это с помощью JOIN. Кто-нибудь знает, что я делаю не так?
Ответ №1:
Я думаю, у вас может быть повреждена база данных, чего не должно произойти. Из backend/optimizer/path/pathkeys.c
исходного кода PostgreSQL:
List *
convert_subquery_pathkeys(PlannerInfo *root, RelOptInfo *rel,
List *subquery_pathkeys)
{
/*...*/
if (sub_eclass->ec_sortref == 0) /* can't happen */
elog(ERROR, "volatile EquivalenceClass has no sortref");
Это сообщение об ошибке отображается в двух других местах в исходном коде, но условие запуска, ec_sortref == 0
, то же самое, и во всех трех местах появляются одни и те же комментарии «не может произойти».
Таким образом, либо ваша база данных повреждена, либо вы обнаружили ошибку в PostgreSQL.