1. nuko_yokohama

    Posted

    nuko_yokohama
Changes in title
+テーブルがUNLOGGEDで作られたものか調べたい - 2016年夏
Changes in tags
Changes in body
Source | HTML | Preview

今から4年前に、(UNLOGGED TABLEがサポートされた後だろうか)こんな記事をはてなblogに書いたことがある。
テーブルがUNLOGGEDで作られたものか調べたい

で、そんな記事を書いたことをすっかり忘れていたんだけど、今日、久々に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使っているユーザってそんなにいないのかな。