7.3.64. table_rename

7.3.64.1. 概要

table_rename コマンドはテーブル名を変更します。

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

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

  • 現在のテーブル名で名前を変更しようとしているテーブルにアクセスする操作(たとえば select )を開始します。以降、現在のテーブル名を 古いテーブル名 と呼ぶことにします。これは、今、このテーブル名を変更しようとしているからです。

  • table_rename を実行します。 select は実行中です。

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

7.3.64.2. 構文

このコマンドには2つの引数があります。

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

table_rename name new_name

7.3.64.3. 使い方

以下は table_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]
table_rename Users Players
# [[0, 1337566253.89858, 0.000355720520019531], true]
table_list
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   [
#     [
#       [
#         "id",
#         "UInt32"
#       ],
#       [
#         "name",
#         "ShortText"
#       ],
#       [
#         "path",
#         "ShortText"
#       ],
#       [
#         "flags",
#         "ShortText"
#       ],
#       [
#         "domain",
#         "ShortText"
#       ],
#       [
#         "range",
#         "ShortText"
#       ],
#       [
#         "default_tokenizer",
#         "ShortText"
#       ],
#       [
#         "normalizer",
#         "ShortText"
#       ]
#     ],
#     [
#       256,
#       "Players",
#       "/tmp/groonga-databases/commands_table_rename.0000100",
#       "TABLE_PAT_KEY|PERSISTENT",
#       "ShortText",
#       null,
#       null,
#       null
#     ]
#   ]
# ]
select Players
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   [
#     [
#       [
#         3
#       ],
#       [
#         [
#           "_id",
#           "UInt32"
#         ],
#         [
#           "_key",
#           "ShortText"
#         ],
#         [
#           "score",
#           "Int32"
#         ]
#       ],
#       [
#         1,
#         "Alice",
#         2
#       ],
#       [
#         2,
#         "Bob",
#         0
#       ],
#       [
#         3,
#         "Carlos",
#         -1
#       ]
#     ]
#   ]
# ]

7.3.64.4. 引数

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

7.3.64.4.1. 必須引数

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

7.3.64.4.1.1. name

名前を変更するテーブルの名前を指定します。

7.3.64.4.1.2. new_name

新しいテーブル名を指定します。

7.3.64.5. 戻り値

このコマンドが成功したときは以下のようにボディは true になります:

[HEADER, true]

このコマンドが失敗すると、 HEADER にエラーの詳細が含まれます。

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