Skip to main content
`Ctrl`+`K`

# 7.3.43. `object_remove`

## 7.3.43.1. 概要

バージョン 6.0.0 で追加.

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

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

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

## 7.3.43.2. 構文

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

    object_remove name
                  [force=no]

## 7.3.43.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 Users` は `Users` テーブルを作る前は `false` を返します。

`object_remove Users` は `Users` テーブルを作った後は `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.43.4. 引数

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

### 7.3.43.4.1. 必須引数

必須の引数は1つです。

#### 7.3.43.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.43.4.2. 省略可能引数

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

#### 7.3.43.4.2.1. `force`

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

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

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

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

## 7.3.43.5. 戻り値

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

    [HEADER, true]

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

    [HEADER, false]

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

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