# 7.25.9. `grn_db`

## 7.25.9.1. 概要

TODO...

## 7.25.9.2. 例

TODO...

## 7.25.9.3. リファレンス

TODO...

type grn_db

  TODO...

type grn_db_create_optarg

  `grn_db_create()` のオプションを指定するために使います。

char **grn_db_create_optarg.builtin_type_names

  組み込み型の名前となるnul終端文字列の配列を指定する。

int grn_db_create_optarg.n_builtin_type_names

  n_builtin_type_namesには、optarg.builtin_type_namesで指定する文字列の数を 指定する。配列のoffsetはenum型grn_builtin_typeの値に対応する。

grn_obj *grn_db_create(grn_ctx *ctx, const char *path, grn_db_create_optarg *optarg)

  新たなdbを作成します。

  パラメータ:

    - ctx -- 初期化済みの `grn_ctx` を指定します。

    - path -- 作成するdbを格納するファイルパスを指定します。NULLならtemporary dbとなります。NULL以外のパスを指定した場合はpersistent dbとなります。

    - optarg --

      Currently, it is not used. It is just ignored.

      作成するdbの組み込み型の名前を変更する時に指定します。

      optarg.builtin_type_namesには、組み込み型の名前となるnull終端文字列の配列を指定します。optarg.n_builtin_type_namesには、optarg.builtin_type_namesで指定する文字列の数を指定します。配列のoffsetはenum型grn_builtin_typeの値に対応します。

grn_obj *grn_db_open(grn_ctx *ctx, const char *path)

  既存のdbを開きます。

  パラメータ:

    - path -- 開こうとするdbを格納するファイルパスを指定します。

void grn_db_touch(grn_ctx *ctx, grn_obj *db)

  dbの内容の最終更新時刻を現在時刻にします。

  最終更新時刻はキャッシュが有効かどうかの判断などに利用されます。

  パラメータ:

    - db -- 内容が変更されたdbを指定します。

grn_obj *grn_obj_db(grn_ctx *ctx, grn_obj *obj)

  objの属するdbを返します。

  パラメータ:

    - obj -- 対象objectを指定します。

grn_rc grn_db_recover(grn_ctx *ctx, grn_obj *db)

  注釈

  これは実験的なAPIです。

  注釈

  This is a dangerous API. You must not use this API when other thread or process opens the target database. If you use this API against shared database, the database may be broken.

  バージョン 4.0.9 で追加.

  Checks the passed database and recovers it if it is broken and it can be recovered.

  This API uses lock existence for checking whether the database is broken or not.

  以下は復旧可能なケースです。

  > - Index column is broken. The index column must have source column.

  以下は復旧できないケースです。

  > - Object name management feature is broken.

  > - Table is broken.

  > - Data column is broken.

  Object name management feature is used for managing table name, column name and so on. If the feature is broken, the database can't be recovered. Please re-create the database from backup.

  Table and data column can be recovered by removing an existence lock and re-add data.

  パラメータ:

    - db -- 復旧対象のデータベース。

  戻り値:

    成功時は `GRN_SUCCESS` 、エラー時は `GRN_SUCCESS` 以外。

grn_rc grn_db_unmap(grn_ctx *ctx, grn_obj *db)

  注釈

  これは実験的なAPIです。

  注釈

  This is a thread unsafe API. You can't touch the database while this API is running.

  バージョン 5.0.7 で追加.

  Unmaps all opened tables and columns in the passed database. Resources used by these opened tables and columns are freed.

  Normally, this API isn't useless. Because resources used by opened tables and columns are managed by OS automatically.

  パラメータ:

    - db -- 復旧対象のデータベース。

  戻り値:

    成功時は `GRN_SUCCESS` 、エラー時は `GRN_SUCCESS` 以外。