[pgsql-jp: 42019] Re: postgresql10 のpsqlの\d [シーケンス名]の出力について
TAKATSUKA Haruka
harukat @ postgresql.jp
2019年 4月 12日 (金) 07:32:54 UTC
他にもっと便利な pg_sequences というビューがあることを思い出しました。
このページ https://www.sraoss.co.jp/tech-blog/pgsql/10-0/ を
「pg_sequences」でページ内検索して、関連項目を参照ください。
On Fri, 12 Apr 2019 14:40:10 +0900
"GOTO, Daisuke" <gotoh @ m-design.com> wrote:
> 高塚様
>
> 後藤です
> ご教授ありがとうございます。
>
> やはり \d コマンドではなくクエリを実行することになるんですね。
> ご教授いただいたクエリを結合して以下のようにすることにします。
>
> やはり少々不便ですね。。。
>
> my_database10=# select c.relname,
> my_database10=# s.seqrelid, s.seqtypid, s.seqstart, s.seqincrement, s.seqmax, s.seqmin, s.seqcache, s.seqcycle,
> my_database10=# ms.last_value, ms.log_cnt, ms.is_called
> my_database10=# FROM pg_sequence s, pg_class c, my_sequence ms
> my_database10=# WHERE s.seqrelid = c.oid AND s.seqrelid=ms.tableoid
>
> relname | seqrelid | seqtypid | seqstart | seqincrement | seqmax | seqmin | seqcache | seqcycle | last_value | log_cnt | is_called
> -------------+----------+----------+----------+--------------+---------------------+--------+----------+----------+------------+---------+-----------
> my_sequence | 16401 | 20 | 1 | 1 | 9223372036854775807 | 1 | 1 | f | 68 | 32 | t
> (1 行)
>
> --
>
> TAKATSUKA Harukaさん<harukat @ postgresql.jp>wrote:
> > 高塚と申します。
> >
> > こうすれば似たような出力が得られますよ。
> >
> > ```
> > psql (11.1)
> > Type "help" for help.
> >
> > db1=# SELECT tableoid, * FROM seq1 ;
> > tableoid | last_value | log_cnt | is_called
> > ----------+------------+---------+-----------
> > 49659 | 1 | 32 | t
> > (1 row)
> >
> > db1=# SELECT * FROM pg_sequence WHERE seqrelid IN (SELECT tableoid FROM seq1);
> > seqrelid | seqtypid | seqstart | seqincrement | seqmax | seqmin | seqcache | seqcycle
> > ----------+----------+----------+--------------+---------------------+--------+----------+----------
> > 49659 | 20 | 1 | 1 | 9223372036854775807 | 1 | 1 | f
> > (1 row)
> > ```
> >
> >
> > On Thu, 11 Apr 2019 18:56:59 +0900
> > "GOTO, Daisuke" <gotoh @ m-design.com> wrote:
> >
> > > 後藤と申します。
> > >
> > > システム更新によりpostgres9系から10系への移行について調査しているのですが、
> > > 基本的なところで psql で \d [シーケンス名] とした時の出力が異なっていて
> > > 戸惑っております。
> > > 特にlast_value が参照できないのが少々不便に感じております。
> > > (一応 select * from [シーケンス名] で参照は出来るようですが)
> > >
> > > これはもう、そういうものなのでしょうか。
> > > あるいは何か設定をすれば9系の頃と互換な出力が得られるものなのでしょうか。
> > > お分かりの方がいらっしゃいましたらご教授願います。
> > >
> > > よろしくお願いいたします。
> > >
> > > --
> > > ・postgresql96-9.6.8-1PGDG.rhel7.x86_64 の psql の場合
> > > $ psql -U postgres -h my_server96 my_database96
> > > psql (9.6.8)
> > > "help" でヘルプを表示します.
> > >
> > > my_database96=# \d my_sequence
> > > シーケンス "public.my_sequence"
> > > 列 | 型 | 値
> > > ---------------+---------+---------------------
> > > sequence_name | name | my_sequence
> > > last_value | bigint | 68
> > > start_value | bigint | 1
> > > increment_by | bigint | 1
> > > max_value | bigint | 9223372036854775807
> > > min_value | bigint | 1
> > > cache_value | bigint | 1
> > > log_cnt | bigint | 32
> > > is_cycled | boolean | f
> > > is_called | boolean | t
> > >
> > > my_database96=# select * from my_sequence;
> > > sequence_name | last_value | start_value | increment_by | max_value |
> > > min_value | cache_value | log_cnt | is_cycled | is_called
> > > ---------------+------------+-------------+--------------+---------------------+
> > > -----------+-------------+---------+-----------+-----------
> > > my_sequence | 68 | 1 | 1 | 9223372036854775807 |
> > > 1 | 1 | 32 | f | t
> > > (1 行)
> > >
> > >
> > > --
> > >
> > > ・postgresql10-10.7-2PGDG.rhel7.x86_64 の psql の場合
> > >
> > > $ psql -U postgres -h my_server10 my_database10
> > > psql (10.7)
> > > "help" でヘルプを表示します。
> > > my_database10=# \d my_sequence
> > > シーケンス "public.my_sequence"
> > > 型 | 開始 | 最小 | 最大 | 増分 | 循環? | キャッシュ
> > > --------+------+------+---------------------+------+--------+------------
> > > bigint | 1 | 1 | 9223372036854775807 | 1 | no | 1
> > >
> > > my_database10=# select * from my_sequence;
> > > last_value | log_cnt | is_called
> > > ------------+---------+-----------
> > > 68 | 32 | t
> > > (1 行)
> > >
> > > --
pgsql-jp メーリングリストの案内