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
については 出力形式 を参照してください。