3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PostgreSQL 16 全部ぬこAdvent Calendar 2022

Day 5

PG16:Tab completion for identity columns in ALTER TABLE

Last updated at Posted at 2022-12-04

はじめに

にゃーん。趣味でポスグレをやっている者だ。

この記事はPostgreSQL 16 全部ぬこ Advent Calendar 2022 5日目の記事です。

今回はpsqlの小ネタ、ALTER TABLEコマンドのタブ補完の追加について書いてみます。

概要

項目 内容
タイトル Tab completion for identity columns in ALTER TABLE
Topic Clients
ステータス commited
Last Modified 2022-11-01
概要 ALTER TABLEコマンド のIDENTITY列への操作に関するタブ補完を追加。

変更内容

ALTER TABLEコマンドのIDENTITY列に関するいくつかのタブ補完が強化されました。

タブ補完確認のための設定

以下のような単純なテーブルを作成します。
idという列にはNOT NULL制約をつけておきます。

=# CREATE TABLE foo (id int NOT NULL, data text);
CREATE TABLE
=# \d foo
                Table "public.foo"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 id     | integer |           | not null |
 data   | text    |           |          |

=# 

この状態で以下の以下のALTER TABLEのタブ補完機能の差を見てみます。

PostgreSQL 15まで

ALTER TABLE foo ALTER COLUMN id SET

この状態でTABを押すと以下の補完候補が出力されます。

(            COMPRESSION  DEFAULT      NOT NULL     STATISTICS   STORAGE

PostgreSQL 16

ALTER TABLE foo ALTER COLUMN id SET

この状態でTABを押すと以下の補完候補が出力されます。

(            COMPRESSION  DEFAULT      INCREMENT    MINVALUE     NOT NULL     STATISTICS
CACHE        CYCLE        GENERATED    MAXVALUE     NO           START        STORAGE

PostgreSQL 15と比較すると、INCREMENT, MINVALUE, CYCLE, GENERATED, MAXVALUE, NO, STARTという語がTAB補完の候補として増えています。

おわりに

PostgreSQL 16でもpsqlへの改善は継続します。今回上げたコミットのように、タブ補完については、まだまだ強化の余地が残っているのかもしれませんね。
そして、改めてALTER TABLEコマンドは複雑ということを思い知らされました・・・。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?