Volatile EquivalenceClass没有sortref

时间:2011-05-09 16:29:09

标签: postgresql

我正在跑步: PostgreSQL 9.0.3(Last Debian stable)

此查询:

  

SELECT * FROM sis.thread_categories   stc,sis.threads st WHERE   st.id_thread_categories = stc.id

=>抛出:

  

错误:volatile EquivalenceClass有   没有sortref状态SQL:XX000

当我使用JOIN尝试它时发生了同样的问题。有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为您可能有一个损坏的数据库,这不应该发生。来自PostgreSQL源代码中的backend/optimizer/path/pathkeys.c

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中发现了错误。