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

- English

# 7.3.4. リターンコード

## 7.3.4.1. 概要

リターンコードは処理が成功したかどうかを示すために使われます。もし、処理が成功していなければリターンコードはエラーの種類を示します。

リターンコードはCのAPIでもクエリーAPIでも使われます。CのAPIでは `grn_ctx_t::rc` でリターンコードを確認できます。クエリーAPIではヘッダー要素を見るとリターンコードを確認できます。クエリーAPIでのヘッダー要素については 出力形式 を参照してください。

## 7.3.4.2. 一覧

以下はリターンコードの一覧です。 `GRN_SUCCESS` (= 0) は処理が成功したことを示しています。負の値のリターンコードはエラーの種類を表しています。 `GRN_END_OF_DATA` は特別なリターンコードです。このリターンコードはCのAPIでだけ使われていて、クエリーAPIにはでてきません。

- 0: `GRN_SUCCESS`
- 1: `GRN_END_OF_DATA`
- -1: `GRN_UNKNOWN_ERROR`
- -2: `GRN_OPERATION_NOT_PERMITTED`
- -3: `GRN_NO_SUCH_FILE_OR_DIRECTORY`
- -4: `GRN_NO_SUCH_PROCESS`
- -5: `GRN_INTERRUPTED_FUNCTION_CALL`
- -6: `GRN_INPUT_OUTPUT_ERROR`
- -7: `GRN_NO_SUCH_DEVICE_OR_ADDRESS`
- -8: `GRN_ARG_LIST_TOO_LONG`
- -9: `GRN_EXEC_FORMAT_ERROR`
- -10: `GRN_BAD_FILE_DESCRIPTOR`
- -11: `GRN_NO_CHILD_PROCESSES`
- -12: `GRN_RESOURCE_TEMPORARILY_UNAVAILABLE`
- -13: `GRN_NOT_ENOUGH_SPACE`
- -14: `GRN_PERMISSION_DENIED`
- -15: `GRN_BAD_ADDRESS`
- -16: `GRN_RESOURCE_BUSY`
- -17: `GRN_FILE_EXISTS`
- -18: `GRN_IMPROPER_LINK`
- -19: `GRN_NO_SUCH_DEVICE`
- -20: `GRN_NOT_A_DIRECTORY`
- -21: `GRN_IS_A_DIRECTORY`
- -22: `GRN_INVALID_ARGUMENT`
- -23: `GRN_TOO_MANY_OPEN_FILES_IN_SYSTEM`
- -24: `GRN_TOO_MANY_OPEN_FILES`
- -25: `GRN_INAPPROPRIATE_I_O_CONTROL_OPERATION`
- -26: `GRN_FILE_TOO_LARGE`
- -27: `GRN_NO_SPACE_LEFT_ON_DEVICE`
- -28: `GRN_INVALID_SEEK`
- -29: `GRN_READ_ONLY_FILE_SYSTEM`
- -30: `GRN_TOO_MANY_LINKS`
- -31: `GRN_BROKEN_PIPE`
- -32: `GRN_DOMAIN_ERROR`
- -33: `GRN_RESULT_TOO_LARGE`
- -34: `GRN_RESOURCE_DEADLOCK_AVOIDED`
- -35: `GRN_NO_MEMORY_AVAILABLE`
- -36: `GRN_FILENAME_TOO_LONG`
- -37: `GRN_NO_LOCKS_AVAILABLE`
- -38: `GRN_FUNCTION_NOT_IMPLEMENTED`
- -39: `GRN_DIRECTORY_NOT_EMPTY`
- -40: `GRN_ILLEGAL_BYTE_SEQUENCE`
- -41: `GRN_SOCKET_NOT_INITIALIZED`
- -42: `GRN_OPERATION_WOULD_BLOCK`
- -43: `GRN_ADDRESS_IS_NOT_AVAILABLE`
- -44: `GRN_NETWORK_IS_DOWN`
- -45: `GRN_NO_BUFFER`
- -46: `GRN_SOCKET_IS_ALREADY_CONNECTED`
- -47: `GRN_SOCKET_IS_NOT_CONNECTED`
- -48: `GRN_SOCKET_IS_ALREADY_SHUTDOWNED`
- -49: `GRN_OPERATION_TIMEOUT`
- -50: `GRN_CONNECTION_REFUSED`
- -51: `GRN_RANGE_ERROR`
- -52: `GRN_TOKENIZER_ERROR`
- -53: `GRN_FILE_CORRUPT`
- -54: `GRN_INVALID_FORMAT`
- -55: `GRN_OBJECT_CORRUPT`
- -56: `GRN_TOO_MANY_SYMBOLIC_LINKS`
- -57: `GRN_NOT_SOCKET`
- -58: `GRN_OPERATION_NOT_SUPPORTED`
- -59: `GRN_ADDRESS_IS_IN_USE`
- -60: `GRN_ZLIB_ERROR`
- -61: `GRN_LZO_ERROR`
- -62: `GRN_STACK_OVER_FLOW`
- -63: `GRN_SYNTAX_ERROR`
- -64: `GRN_RETRY_MAX`
- -65: `GRN_INCOMPATIBLE_FILE_FORMAT`
- -66: `GRN_UPDATE_NOT_ALLOWED`
- -67: `GRN_TOO_SMALL_OFFSET`
- -68: `GRN_TOO_LARGE_OFFSET`
- -69: `GRN_TOO_SMALL_LIMIT`
- -70: `GRN_CAS_ERROR`
- -71: `GRN_UNSUPPORTED_COMMAND_VERSION`

## 7.3.4.3. 参考

- 出力形式 はクエリーAPIでのレスポンスの中でどこにリターンコードがあるかを説明しています。

- GQTP: GQTPプロトコルもステータスとしてリターンコードを使っていますが、ステータスは2バイトの符号なし整数です。そのため、GQTPプロトコルでは、負の値のリターンコードは正の値のステータスになります。GQTPプロトコルのステータスの値を2バイトの符号付き整数として扱うとステータスをリターンコードに変換できます。