# groonga - オープンソースのカラムストア機能付き全文検索エンジン

- English

# 7.3.40. `object_inspect`

## 7.3.40.1. 概要

バージョン 6.0.0 で追加.

`object_inspect` はオブジェクトを調査します。オブジェクトの詳細を確認することができます。

例：

> - オブジェクトがテーブルの場合、テーブル内のレコード数を確認できます。

> - オブジェクトがカラムの場合、値の型を確認できます。

## 7.3.40.2. 構文

このコマンドの引数は1つで省略できます:

    object_inspect [name=null]

## 7.3.40.3. 使い方

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

実行例:

    table_create Users TABLE_HASH_KEY ShortText
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    load --table Users
    [
    {"_key": "Alice"}
    ]
    # [[0, 1337566253.89858, 0.000355720520019531], 1]
    object_inspect Users
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "name": "Users",
    #     "n_records": 1,
    #     "value": {
    #       "type": null
    #     },
    #     "key": {
    #       "total_size": 5,
    #       "max_total_size": 4294967295,
    #       "type": {
    #         "size": 4096,
    #         "type": {
    #           "id": 32,
    #           "name": "type"
    #         },
    #         "id": 14,
    #         "name": "ShortText"
    #       }
    #     },
    #     "type": {
    #       "id": 48,
    #       "name": "table:hash_key"
    #     },
    #     "id": 256
    #   }
    # ]

`object_inspect Users` は以下の情報を返します。

> - テーブル名： `"name": Users`

> - 総キーサイズ： `"key": {"total_size": 5}` （ `"Alice"` は5バイトのデータです。）

> - 最大総キーサイズ： `"key": {"max_total_size": 4294967295}`

> - などなど。

`name` を指定しないとデータベースを調査できます。

実行例:

    object_inspect
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "name_table": {
    #       "name": "",
    #       "n_records": 256,
    #       "value": null,
    #       "key": {
    #         "type": null
    #       },
    #       "type": {
    #         "id": 50,
    #         "name": "table:dat_key"
    #       },
    #       "id": 0
    #     },
    #     "type": {
    #       "id": 55,
    #       "name": "db"
    #     }
    #   }
    # ]

`object_inspect` は以下の情報を返します。

> - オブジェクトの名前管理をしているテーブルの種類： `"key": {"type": {"name": "table:dat_key"}}`

> - などなど。

## 7.3.40.4. 引数

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

### 7.3.40.4.1. 必須引数

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

### 7.3.40.4.2. 省略可能引数

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

#### 7.3.40.4.2.1. `name`

調査対象のオブジェクト名を指定してください。

`name` を指定しないとデータベースを調査します。

## 7.3.40.5. 戻り値

このコマンドはボディとしてオブジェクト（たとえばテーブル）の詳細を含んだオブジェクト（ネストしたキーと値のペア）を返します。:

    [HEADER, object]

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

オブジェクトの詳細のフォーマットはオブジェクトの種類に依存します。たとえば、テーブルはキーの情報を含みますが、関数はキーの情報を含みません。

### 7.3.40.5.1. データベース

データベースを調査すると次の情報を返します。:

    {
      "type": {
        "id": DATABASE_TYPE_ID,
        "name": DATABASE_TYPE_NAME
      },
      "name_table": DATABASE_NAME_TABLE
    }

#### 7.3.40.5.1.1. `DATABASE_TYPE_ID`

`DATABASE_TYPE_ID` は常に `55` です。

#### 7.3.40.5.1.2. `DATABASE_TYPE_NAME`

`DATABASE_TYPE_NAME` は常に `"db"` です。

#### 7.3.40.5.1.3. `DATABASE_NAME_TABLE`

`DATABASE_NAME_TABLE` はデータベース内のオブジェクト名を管理するテーブルです。このテーブルは TABLE_PAT_KEY または TABLE_DAT_KEY です。通常、 TABLE_DAT_KEY です。

フォーマットの詳細は テーブル を参照してください。

### 7.3.40.5.2. テーブル

テーブルを調査すると次の情報を返します。:

    {
      "name": TABLE_NAME,
      "type": {
        "id": TABLE_TYPE_ID,
        "name": TABLE_TYPE_NAME
      },
      "key": {
        "type": TABLE_KEY_TYPE,
        "total_size": TABLE_KEY_TOTAL_SIZE
        "max_total_size": TABLE_KEY_MAX_TOTAL_SIZE
      },
      "value": {
        "type": TABLE_VALUE_TYPE,
      },
      "n_records": TABLE_N_RECORDS
    }

いくつか例外があります。

> - TABLE_NO_KEY はキーの情報を返しません。なぜならキーを持っていないからです。

> - TABLE_DAT_KEY は値の情報を返しません。なぜなら値を持っていないからです。

#### 7.3.40.5.2.1. `TABLE_NAME`

調査対象のテーブルの名前。

#### 7.3.40.5.2.2. `TABLE_TYPE_ID`

調査対象のテーブルの種類のID

以下は種類のIDのリストです。

テーブルの種類 | ID
--- | ---
TABLE_HASH_KEY | `48`
TABLE_PAT_KEY | `49`
TABLE_DAT_KEY | `50`
TABLE_NO_KEY | `51`

#### 7.3.40.5.2.3. `TABLE_TYPE_NAME`

調査対象のテーブルの種類の名前。

以下は種類の名前のリストです。

テーブルの種類 | 名前
--- | ---
TABLE_HASH_KEY | `"table:hash_key"`
TABLE_PAT_KEY | `"table:pat_key"`
TABLE_DAT_KEY | `"table:dat_key"`
TABLE_NO_KEY | `"table:no_key"`

#### 7.3.40.5.2.4. `TABLE_KEY_TYPE`

調査対象のテーブルのキーの型。

フォーマットの詳細は 型 を参照してください。

#### 7.3.40.5.2.5. `TABLE_KEY_TOTAL_SIZE`

調査対象のテーブルの総キーサイズ。単位はバイト。

#### 7.3.40.5.2.6. `TABLE_KEY_MAX_TOTAL_SIZE`

調査対象のテーブルの最大総キーサイズ。単位はバイト。

#### 7.3.40.5.2.7. `TABLE_VALUE_TYPE`

調査対象のテーブルの値の型。

フォーマットの詳細は 型 を参照してください。

#### 7.3.40.5.2.8. `TABLE_N_RECORDS`

調査対象のテーブルのレコード数。

64bitの正の整数です。

#### 7.3.40.5.2.9. 型

型を調査すると次の情報を返します。

    {
      "id": TYPE_ID,
      "name": TYPE_NAME,
      "type": {
        "id": TYPE_ID_OF_TYPE,
        "name": TYPE_NAME_OF_TYPE
      },
      "size": TYPE_SIZE
    }

#### 7.3.40.5.2.10. `TYPE_ID`

対象の型のIDです。

以下は組み込みの型のIDのリストです。

型 | ID
--- | ---
Bool | `3`
Int8 | `4`
UInt8 | `5`
Int16 | `6`
UInt16 | `7`
Int32 | `8`
UInt32 | `9`
Int64 | `10`
UInt64 | `11`
Float | `12`
Time | `13`
ShortText | `14`
Text | `15`
LongText | `16`
TokyoGeoPoint | `17`
WGS84GeoPoint | `18`

#### 7.3.40.5.2.11. `TYPE_NAME`

調査対象の型の名前。

以下は組み込みの型の名前のリストです。

> - Bool
> - Int8
> - UInt8
> - Int16
> - UInt16
> - Int32
> - UInt32
> - Int64
> - UInt64
> - Float
> - Time
> - ShortText
> - Text
> - LongText
> - TokyoGeoPoint
> - WGS84GeoPoint

#### 7.3.40.5.2.12. `TYPE_ID_OF_TYPE`

`TYPE_ID_OF_TYPE` は常に `32` です。

#### 7.3.40.5.2.13. `TYPE_NAME_OF_TYPE`

`TYPE_NAME_OF_TYPE` は常に `type` です。

#### 7.3.40.5.2.14. `TYPE_SIZE`

`TYPE_SIZE` は調査対象の型のサイズです。単位はバイトです。調査対象の型が可変長型の場合は、サイズは最大サイズという意味です。