1. nuko_yokohama

    Posted

    nuko_yokohama
Changes in title
+テーブルがUNLOGGEDで作られたものか調べたい - 2016年夏
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,57 @@
+今から4年前に、(UNLOGGED TABLEがサポートされた後だろうか)こんな記事をはてなblogに書いたことがある。
+[テーブルがUNLOGGEDで作られたものか調べたい](http://d.hatena.ne.jp/nuko_yokohama/20120113/1326447480)
+
+で、そんな記事を書いたことをすっかり忘れていたんだけど、今日、久々に9.6になってNoboru Saitoさんから『「てゆーか、次のバージョンでPersistent情報を"\d+"とかで表示してくれると嬉しいかも・・・」 状況変わってないですよねー?』
+という質問を受けて、改めてPostgreSQL 9.6beta版で調べてみた。
+
+結論から言えば、全然状況は変わってないようです。
+
+```
+test=# \d+
+ List of relations
+ Schema | Name | Type | Owner | Size | Description
+--------+--------+-------+-------+------------+-------------
+ public | test | table | nuko | 8192 bytes |
+ public | test_u | table | nuko | 16 kB |
+(2 rows)
+```
+やっぱり、UNLOGGED TABLEかどうかの情報は出力してくれない。
+結局、以前と同じようなVIEWを作るしかないのか。
+
+```
+test=# CREATE VIEW tablelsit_with_persistent AS (SELECT n.nspname as "Schema",
+ c.relname as "Name",
+ CASE c.relkind
+ WHEN 'r' THEN 'table'
+ WHEN 'v' THEN 'view'
+ WHEN 'i' THEN 'index'
+ WHEN 'S' THEN 'sequence'
+ WHEN 's' THEN 'special'
+ WHEN 'f' THEN 'foreign table' END as "Type",
+ pg_catalog.pg_get_userbyid(c.relowner) as "Owner",
+ c.relpersistence as "Persistent"
+ FROM pg_catalog.pg_class c
+ LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
+ WHERE c.relkind IN ('r','v','S','f','')
+ AND n.nspname <> 'pg_catalog'
+ AND n.nspname <> 'information_schema'
+ AND n.nspname !~ '^pg_toast'
+ AND pg_catalog.pg_table_is_visible(c.oid)
+ ORDER BY 1,2);
+CREATE VIEW
+test=#
+```
+
+で、このVIEWを検索するしかないっぽい。(´・ω・`)
+
+```
+test=# SELECT * FROM tablelsit_with_persistent ;
+ Schema | Name | Type | Owner | Persistent
+--------+---------------------------+-------+-------+------------
+ public | tablelsit_with_persistent | view | nuko | p
+ public | test | table | nuko | p
+ public | test_u | table | nuko | u
+(3 rows)
+```
+
+次バージョンでPersistentを表示するようなパッチの提案をする手もあるかな・・・でも、UNLOGGED使っているユーザってそんなにいないのかな。