7.3.14. column_rename¶
7.3.14.1. 概要¶
column_rename コマンドはカラム名を変更します。
これは軽い操作です。名前とカラムオブジェクト間の関係を変更するだけです。カラムの値をコピーしません。
これは危険な操作です。 column_rename を実行している間、読み取り操作を含む全ての操作を停止しなければいけません。以下のケースが起こった場合、Groongaプロセスはクラッシュするかもしれません。
現在のカラム名で名前を変更しようとしているカラムにアクセスする操作(たとえば
select)を開始します。以降、現在のカラム名を古いカラム名と呼ぶことにします。これは、今、このカラム名を変更しようとしているからです。
column_renameを実行します。selectは実行中です。
selectは古いカラム名で名前が変更されたカラムにアクセスします。しかし、カラムはすでに新しいカラム名に変更されているため、selectは古いカラム名でカラムを見つけることができません。このときGroongaプロセスがクラッシュするかもしれません。
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 の引数について説明します。