7.3.42. object_remove

7.3.42.1. 概要

バージョン 6.0.0 で追加.

object_remove はオブジェクトを削除します。テーブル・カラム・コマンドなどあらゆるオブジェクトを削除できます。通常は table_removecolumn_remove といった対象オブジェクト専用のコマンドを使うべきです。

object_remove はあらゆるオブジェクトを削除できるため危険です。 object_remove を使うときは注意してください。

object_remove には「強制モード」があります。「強制モード」を使うと壊れたオブジェクトを削除できます。「強制モード」は grndb が報告した問題を解決するために有用です。

7.3.42.2. 構文

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

object_remove name
              [force=no]

7.3.42.3. 使い方

name で指定したデータベース内のオブジェクトを削除できます。

実行例:

object_remove Users
# [
#   [
#     -22,
#     1337566253.89858,
#     0.000355720520019531,
#     "[object][remove] target object doesn't exist: <Users>",
#     [
#       [
#         "command_object_remove",
#         "proc_object.c",
#         118
#       ]
#     ]
#   ],
#   false
# ]
table_create Users TABLE_HASH_KEY ShortText
# [[0, 1337566253.89858, 0.000355720520019531], true]
object_remove Users
# [[0, 1337566253.89858, 0.000355720520019531], true]

object_remove UsersUsers テーブルを作る前は false を返します。

object_remove UsersUsers テーブルを作った後は true を返します。

デフォルトでは壊れたオブジェクトを削除することはできません。

実行例:

table_create Users TABLE_HASH_KEY ShortText
# [[0, 1337566253.89858, 0.000355720520019531], true]
thread_limit 1
# [[0, 1337566253.89858, 0.000355720520019531], 1]
database_unmap
# [[0, 1337566253.89858, 0.000355720520019531], true]
% echo "BROKEN" > ${DB_PATH}.0000100

object_remove Users
# [
#   [
#     -22,
#     1337566253.89858,
#     0.000355720520019531,
#     "[object][remove] failed to open the target object: <Users>",
#     [
#       [
#         "command_object_remove",
#         "proc_object.c",
#         113
#       ]
#     ]
#   ],
#   false
# ]
object_exist Users
# [[0, 1337566253.89858, 0.000355720520019531], true]

force yes を指定することで壊れたオブジェクトを削除できます。

実行例:

object_remove Users --force yes
# [
#   [
#     -65,
#     1337566253.89858,
#     0.000355720520019531,
#     "[io][open] file size is too small: <7>(required: >= 64): </tmp/groonga-databases/commands_object_remove.0000100>",
#     [
#       [
#         "grn_io_open",
#         "io.c",
#         604
#       ]
#     ]
#   ],
#   false
# ]
object_exist Users
# [[0, 1337566253.89858, 0.000355720520019531], false]

--force yes は「強制モード」を有効にするという意味です。「強制モード」では壊れたオブジェクトを削除することができます。

7.3.42.4. 引数

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

7.3.42.4.1. 必須引数

必須の引数は1つです。

7.3.42.4.1.1. name

削除するテーブルの名前を指定します。

カラムを削除したいときは、次のように テーブル名.カラム名 という書式を使ってください。

実行例:

table_create Logs TABLE_NO_KEY
# [[0, 1337566253.89858, 0.000355720520019531], true]
column_create Logs timestamp COLUMN_SCALAR Time
# [[0, 1337566253.89858, 0.000355720520019531], true]
object_remove Logs.timestamp
# [[0, 1337566253.89858, 0.000355720520019531], true]

Logs.timestamp 内の Logs がテーブル名で timestamp がカラム名です。

7.3.42.4.2. 省略可能引数

省略可能な引数が1つあります。

7.3.42.4.2.1. force

「強制モード」でオブジェクトを削除するかどうかを指定します。

デフォルトでは壊れたオブジェクトを削除できません。しかし、「強制モード」を使えば壊れたオブジェクトを削除できます。

force の値は yes または no でなければいけません。 yes は「強制モード」を有効にするという意味です。 no は「強制モード」を無効にするという意味です。

デフォルト値は no です。デフォルトでは「強制モード」は無効ということです。

7.3.42.5. 戻り値

エラーなしでデータベース内に指定した名前のオブジェクトを削除したときはボディは true になります。例:

[HEADER, true]

このコマンドを実行している最中になにかしらエラーが発生したときはボディは false になります。例:

[HEADER, false]

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

false が「このコマンドはオブジェクトを削除できなかった」ということを表すわけではないことに注意してください。「強制モード」を有効にすると、オブジェクトが壊れていても削除します。この場合、オブジェクトは削除されますが、ボディは false になります。