`Ctrl`+`K`

# 7.3.42. `object_list`

## 7.3.42.1. 概要

バージョン 6.0.7 で追加.

`object_list` はデータベース内のオブジェクトの一覧を返します。オブジェクトの情報はデータベース内のメタデータから取得します。 `object_list` はオブジェクトの実体を開きません。そのため、 `object_list` は多くのテーブル・カラムがあるデータベースに対しても軽い処理のコマンドです。

通常、 `object_list` より schema の方が便利なコマンドです。なぜなら、 schema は `object_list` より多くの情報を返すからです。

## 7.3.42.2. 構文

このコマンドに引数はありません:

    object_list

## 7.3.42.3. 使い方

以下は出力例を示すためのサンプルスキーマです。

実行例:

    table_create Memos TABLE_HASH_KEY ShortText
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Memos content COLUMN_SCALAR Text
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    table_create Terms TABLE_PAT_KEY ShortText \
      --default_tokenizer TokenBigram \
      --normalizer NormalizerAuto
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Terms memos_content_index \
      COLUMN_INDEX|WITH_POSITION \
      Memos content
    # [[0, 1337566253.89858, 0.000355720520019531], true]

このデータベースに対する `object_list` コマンドの出力は次の通りです。

実行例:

    object_list
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "UInt64": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_UINT",
    #         "value": 0
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 8,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 11,
    #       "name": "UInt64"
    #     },
    #     "Int32": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_INT",
    #         "value": 8
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 4,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 8,
    #       "name": "Int32"
    #     },
    #     "Int16": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_INT",
    #         "value": 8
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 2,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 6,
    #       "name": "Int16"
    #     },
    #     "Float": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_FLOAT",
    #         "value": 16
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 8,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 12,
    #       "name": "Float"
    #     },
    #     "LongText": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_VAR_SIZE",
    #         "value": 16384
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 2147483648,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 16,
    #       "name": "LongText"
    #     },
    #     "TokyoGeoPoint": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_GEO_POINT",
    #         "value": 24
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 8,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 17,
    #       "name": "TokyoGeoPoint"
    #     },
    #     "Text": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_VAR_SIZE",
    #         "value": 16384
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 65536,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 15,
    #       "name": "Text"
    #     },
    #     "ShortText": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_VAR_SIZE",
    #         "value": 16384
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 4096,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 14,
    #       "name": "ShortText"
    #     },
    #     "Object": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_UINT",
    #         "value": 0
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 8,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 2,
    #       "name": "Object"
    #     },
    #     "Terms.memos_content_index": {
    #       "opened": true,
    #       "sources": [
    #         {
    #           "id": 257,
    #           "name": "Memos.content"
    #         }
    #       ],
    #       "range": {
    #         "id": 256,
    #         "name": "Memos"
    #       },
    #       "flags": {
    #         "names": "COLUMN_INDEX|WITH_POSITION|PERSISTENT",
    #         "value": 33282
    #       },
    #       "n_elements": 4,
    #       "path": "/tmp/groonga-databases/commands_object_list.0000103",
    #       "type": {
    #         "id": 72,
    #         "name": "column:index"
    #       },
    #       "id": 259,
    #       "name": "Terms.memos_content_index"
    #     },
    #     "UInt8": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_UINT",
    #         "value": 0
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 1,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 5,
    #       "name": "UInt8"
    #     },
    #     "UInt32": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_UINT",
    #         "value": 0
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 4,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 9,
    #       "name": "UInt32"
    #     },
    #     "Terms": {
    #       "opened": true,
    #       "token_filters": [],
    #       "range": {
    #         "id": 0,
    #         "name": null
    #       },
    #       "flags": {
    #         "names": "TABLE_PAT_KEY|PERSISTENT",
    #         "value": 49153
    #       },
    #       "n_elements": 5,
    #       "path": "/tmp/groonga-databases/commands_object_list.0000102",
    #       "type": {
    #         "id": 49,
    #         "name": "table:pat_key"
    #       },
    #       "id": 258,
    #       "name": "Terms"
    #     },
    #     "UInt16": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_UINT",
    #         "value": 0
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 2,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 7,
    #       "name": "UInt16"
    #     },
    #     "Bool": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_UINT",
    #         "value": 0
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 1,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 3,
    #       "name": "Bool"
    #     },
    #     "Memos.content": {
    #       "opened": true,
    #       "range": {
    #         "id": 15,
    #         "name": "Text"
    #       },
    #       "flags": {
    #         "names": "COLUMN_SCALAR|PERSISTENT",
    #         "value": 49152
    #       },
    #       "n_elements": 4,
    #       "path": "/tmp/groonga-databases/commands_object_list.0000101",
    #       "type": {
    #         "id": 65,
    #         "name": "column:var_size"
    #       },
    #       "id": 257,
    #       "name": "Memos.content"
    #     },
    #     "Time": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_INT",
    #         "value": 8
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 8,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 13,
    #       "name": "Time"
    #     },
    #     "Int64": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_INT",
    #         "value": 8
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 8,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 10,
    #       "name": "Int64"
    #     },
    #     "WGS84GeoPoint": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_GEO_POINT",
    #         "value": 24
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 8,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 18,
    #       "name": "WGS84GeoPoint"
    #     },
    #     "Memos": {
    #       "opened": true,
    #       "token_filters": [],
    #       "range": {
    #         "id": 0,
    #         "name": null
    #       },
    #       "flags": {
    #         "names": "TABLE_HASH_KEY|PERSISTENT",
    #         "value": 49152
    #       },
    #       "n_elements": 5,
    #       "path": "/tmp/groonga-databases/commands_object_list.0000100",
    #       "type": {
    #         "id": 48,
    #         "name": "table:hash_key"
    #       },
    #       "id": 256,
    #       "name": "Memos"
    #     },
    #     "Int8": {
    #       "opened": true,
    #       "flags": {
    #         "names": "KEY_INT",
    #         "value": 8
    #       },
    #       "n_elements": 4,
    #       "path": null,
    #       "size": 1,
    #       "type": {
    #         "id": 32,
    #         "name": "type"
    #       },
    #       "id": 4,
    #       "name": "Int8"
    #     }
    #   }
    # ]

## 7.3.42.4. 引数

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

### 7.3.42.4.1. 必須引数

必須の引数はありません。

### 7.3.42.4.2. 省略可能引数

省略可能な引数はありません。

## 7.3.42.5. 戻り値

`object_list` はデータベース内のオブジェクトの情報一覧を返します。:

    [HEADER, OBJECTS]

### 7.3.42.5.1. `HEADER`

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

### 7.3.42.5.2. `OBJECTS`

`OBJECTS` はオブジェクト名とオブジェクト詳細のペアの集合です。:

    {
      "OBJECT_1": OBJECT_1,
      "OBJECT_2": OBJECT_2,
      ...,
      "OBJECT_n": OBJECT_n,
    }

各 `OBJECT` は共通のプロパティとオブジェクトの種類固有のプロパティを持っています。

### 7.3.42.5.3. `OBJECT` （共通のプロパティ）

以下は共通のプロパティです。:

    {
      "id":         ID,
      "name":       NAME,
      "opened":     OPENED,
      "value_size": N_BYTES,
      "n_elements": N_ELEMENTS,
      "type":       OBJECT_TYPE,
      "flags":      FLAGS,
      "path":       PATH
    }

名前 | 説明
--- | ---
`id` | このオブジェクトのID。
`name` | このオブジェクトの名前。
`opened` | このオブジェクトが開かれているかどうか。 `true` または `false` 。もし、このオブジェクトが開かれていれば値は `true` になります。そうでなければ値は `false` になります。
`value_size` | このメタデータのバイト数。数値。 これはこのメタデータが壊れているときだけ現れます。もしこのプロパティが現れたら、 `type` 、 `n_elements` 、 `flags` 、 `path` は現れません。なぜなら、これらのプロパティは壊れたメタデータからは取得できないからです。
`n_elements` | このメタデータ中の内部的な要素の数。数値。
`type` | このオブジェクトの種類。詳細は OBJECT_TYPE を参照してください。
`flags` | このオブジェクトのフラグ。詳細は FLAGS を参照してください。
`path` | このオブジェクトのデータを格納しているパス。データを持たないオブジェクトでは `null` になります。たとえば、コマンドオブジェクトはデータを持ちません。

### 7.3.42.5.4. `OBJECT_TYPE`

`OBJECT_TYPE` はオブジェクトの種類を表します。たとえば、パトリシアトライテーブル、ハッシュテーブル、インデックスカラムなどがオブジェクトの種類です。

`OBJECT_TYPE` は次のプロパティを持ちます。:

    {
      "id":   ID,
      "name": NAME
    }

名前 | 説明
--- | ---
`id` | この種類のID。
`name` | この種類の名前。たとえば、 TABLE_HASH_KEY は `"table:hash_key"` 、 ベクターカラム は `"column:var_size"` 、 インデックスカラム は `"column:index"` となります。

### 7.3.42.5.5. `FLAGS`

`FLAGS` はオブジェクトのフラグを表します。フラグの多くは table_create あるいは column_create で指定したフラグになるでしょう。いくつかのフラグは内部的に追加されたものです。

`FLAGS` は以下のプロパティを持っています。:

    {
      "value": VALUE,
      "names": NAMES
    }

名前 | 説明
--- | ---
`value` | フラグの値。数値。
`names` | 各フラグの名前一覧。文字列。各フラグ名は `TABLE_HASH_KEY|PERSISTENT` というように `|` で区切られています。

### 7.3.42.5.6. `OBJECT` （ `"type"` というオブジェクトの種類に固有のプロパティ）

`"type"` というオブジェクトの種類に固有の `OBJECT` 中のプロパティは次の通りです。:

    {
      "size": SIZE
    }

名前 | 説明
--- | ---
`size` | 型のサイズ。型が固定サイズの型だった場合は各値のサイズになります。型が可変長サイズの型だった場合は各値の最大サイズになります。

### 7.3.42.5.7. `OBJECT` （ `"proc"` というオブジェクトの種類に固有のプロパティ）

以下は `"proc"` という種類のオブジェクト一覧です。

> - コマンド

> - 関数

> - ノーマライザー

> - トークナイザー

> - トークンフィルター

`"proc"` というオブジェクトの種類に固有の `OBJECT` 中のプロパティは次の通りです。:

    {
      "plugin_id": PLUGIN_ID
    }

名前 | 説明
--- | ---
`plugin_id` | `"proc"` オブジェクトのプラグインID。この `"proc"` オブジェクトがプラグインで定義されている場合は値は `1` 以上の数値になります。組み込みの `"proc"` オブジェクトのプラグインIDは `0` になります。

### 7.3.42.5.8. `OBJECT` （ `"table:*"` というオブジェクトの種類に固有のプロパティ）

`"table:*"` というオブジェクトの種類に固有の `OBJECT` 中のプロパティは次の通りです。:

    {
      "range":         RANGE,
      "token_filters": TOKEN_FILTERS
    }

名前 | 説明
--- | ---
`range` | このテーブルの値の型。詳細は RANGE を参照してください。
`token_filters` | このテーブルのトークンフィルター一覧。詳細は TOKEN_FILTERS を参照してください。

### 7.3.42.5.9. `RANGE`

`RANGE` はこの値域の型を表します。

`RANGE` は次のプロパティを持ちます。:

    {
      "id":   ID,
      "name": NAME
    }

名前 | 説明
--- | ---
`id` | この値域の型のID。数値。オブジェクトが値域を持たない場合、IDは `0` になります。
`name` | この値域の型の名前。文字列または `null` 。このオブジェクトが値域を持たない場合は、名前は `null` になります。

### 7.3.42.5.10. `TOKEN_FILTERS`

`TOKEN_FILTERS` はこのテーブルのトークンフィルターの一覧を表します。

`TOKEN_FILTERS` は `TOKEN_FILTER` の配列になります。:

    [
      TOKEN_FILTER_1,
      TOKEN_FILTER_2,
      ...,
      TOKEN_FILTER_n
    ]

`TOKEN_FILTER` は次のプロパティを持ちます。:

    {
      "id":   ID,
      "NAME": NAME
    }

名前 | 説明
--- | ---
`id` | このトークンフィルターのID。数値。
`name` | このトークンフィルターの名前。文字列。

### 7.3.42.5.11. `OBJECT` （ `"column:*"` というオブジェクトの種類に固有のプロパティ）

`"column:*"` というオブジェクトの種類に固有の `OBJECT` 中のプロパティは次の通りです。:

    {
      "range": RANGE
    }

名前 | 説明
--- | ---
`range` | このカラムの値の型。詳細は RANGE を参照してください。

### 7.3.42.5.12. `OBJECT` （ `"column:index"` というオブジェクトの種類に固有のプロパティ）

`"column:index"` というオブジェクトの種類に固有の `OBJECT` 中のプロパティは次の通りです。:

    {
      "sources": SOURCES
    }

名前 | 説明
--- | ---
`sources` | このインデックスカラムのソース一覧。詳細は SOURCES を参照してください。

### 7.3.42.5.13. `SOURCES`

`SOURCES` はこのインデックスカラムのソースの一覧を表します。

`SOURCES` は `SOURCE` の配列です。:

    [
      SOURCE_1,
      SOURCE_2,
      ...,
      SOURCE_n
    ]

`SOURCE` は次のプロパティを持ちます。:

    {
      "id":   ID,
      "NAME": NAME
    }

名前 | 説明
--- | ---
`id` | このソーステーブルまたはソースカラムのID。数値。
`name` | このソーステーブルまたはソースカラムの名前。文字列。

## 7.3.42.6. 参考

> - schema