Skip to main content
`Ctrl`+`K`

# 7.3.14. `column_rename`

## 7.3.14.1. 概要

`column_rename` コマンドはカラム名を変更します。

これは軽い操作です。名前とカラムオブジェクト間の関係を変更するだけです。カラムの値をコピーしません。

これは危険な操作です。 `column_rename` を実行している間、読み取り操作を含む全ての操作を停止しなければいけません。以下のケースが起こった場合、Groongaプロセスはクラッシュするかもしれません。

> - 現在のカラム名で名前を変更しようとしているカラムにアクセスする操作（たとえば `select` ）を開始します。以降、現在のカラム名を `古いカラム名` と呼ぶことにします。これは、今、このカラム名を変更しようとしているからです。

> - `column_rename` を実行します。 `select` は実行中です。

> - `select` は古いカラム名で名前が変更されたカラムにアクセスします。しかし、カラムはすでに新しいカラム名に変更されているため、 `select` は古いカラム名でカラムを見つけることができません。このときGroongaプロセスがクラッシュするかもしれません。

## 7.3.14.2. 構文

このコマンドの引数は3つです。

すべての引数は必須です:

    column_rename table name new_name

## 7.3.14.3. 使い方

以下は `column_rename` コマンドの簡単な使用例です。

実行例:

    table_create Users TABLE_PAT_KEY ShortText
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Users score COLUMN_SCALAR Int32
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    load --table Users
    [
    {"_key": "Alice",  "score": 2},
    {"_key": "Bob",    "score": 0},
    {"_key": "Carlos", "score": -1}
    ]
    # [[0, 1337566253.89858, 0.000355720520019531], 3]
    column_rename Users score point
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_list Users
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         "id",
    #         "UInt32"
    #       ],
    #       [
    #         "name",
    #         "ShortText"
    #       ],
    #       [
    #         "path",
    #         "ShortText"
    #       ],
    #       [
    #         "type",
    #         "ShortText"
    #       ],
    #       [
    #         "flags",
    #         "ShortText"
    #       ],
    #       [
    #         "domain",
    #         "ShortText"
    #       ],
    #       [
    #         "range",
    #         "ShortText"
    #       ],
    #       [
    #         "source",
    #         "ShortText"
    #       ]
    #     ],
    #     [
    #       256,
    #       "_key",
    #       "",
    #       "",
    #       "COLUMN_SCALAR",
    #       "Users",
    #       "ShortText",
    #       []
    #     ],
    #     [
    #       257,
    #       "point",
    #       "/tmp/groonga-databases/commands_column_rename.0000101",
    #       "fix",
    #       "COLUMN_SCALAR|PERSISTENT",
    #       "Users",
    #       "Int32",
    #       []
    #     ]
    #   ]
    # ]
    select Users
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         3
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "point",
    #           "Int32"
    #         ]
    #       ],
    #       [
    #         1,
    #         "Alice",
    #         2
    #       ],
    #       [
    #         2,
    #         "Bob",
    #         0
    #       ],
    #       [
    #         3,
    #         "Carlos",
    #         -1
    #       ]
    #     ]
    #   ]
    # ]

## 7.3.14.4. 引数

このセクションでは `column_rename` の引数について説明します。

### 7.3.14.4.1. 必須引数

すべての引数は必須です。

#### 7.3.14.4.1.1. `table`

名前を変更したいカラムが所属するテーブルの名前を指定します。

#### 7.3.14.4.1.2. `name`

名前を変更するカラムの名前を指定します。

#### 7.3.14.4.1.3. `new_name`

新しいカラム名を指定します。

## 7.3.14.5. 戻り値

    [HEADER, SUCCEEDED_OR_NOT]

`HEADER`

> `HEADER` については 出力形式 を参照してください。

`SUCCEEDED_OR_NOT`

> コマンドの実行が成功するとtrueを返します。失敗するとfalseを返します。