Postgresql

查詢以查找受語言環境升級影響的索引不起作用

  • March 31, 2022

在將系統從 Debian stretch 升級到 Debian buster 時,我收到一條關於排序規則更改的警告,其中包含指向https://wiki.postgresql.org/wiki/Locale_data_changes的連結,該數據庫目前正在執行來自 Debian stretch 的 postgresql 9.6。

該頁面告訴我,我可以找出我的數據庫中的哪些索引受到使用查詢的影響

SELECT 
   indrelid::regclass::text, 
   indexrelid::regclass::text, 
   collname, 
   pg_get_indexdef(indexrelid) 
FROM 
   (SELECT indexrelid, 
           indrelid, 
           indcollation[i] coll 
    FROM 
           pg_index, generate_subscripts(indcollation, 1) g(i)) s 
JOIN 
   pg_collation c ON coll=c.oid
WHERE 
   collprovider IN ('d', 'c') 
   AND collname NOT IN ('C', 'POSIX');

但是,當我連接到我的數據庫並執行我得到的查詢時。

錯誤:列“collprovider”不存在第 4 行:WHERE collprovider IN (’d’, ‘c’) AND collname NOT IN (‘C’, ‘…

如何找出我的數據庫中的 if-any 索引受到了影響?

我在 irc 上的#postgresql 中得到了答案。

<Myon> PostgreSQL 太舊了,無法查詢

<Myon> 只需刪除“collprovider and”

從查詢中刪除“collprovider IN (’d’, ‘c’) AND”後,它執行成功。

引用自:https://dba.stackexchange.com/questions/310378