データベース管理システム(2)

(続き)

fetch( DB_t* dbp, char** data, int* datalen );

のインターフェースが気になってきた。でかいデータがたまたま入力出来たとして、でかさゆえに取り出せない可能性はないだろうか。そのとき救済的な措置が必要ではないか、と思い至った。たとえば細切れにして取り出すとかの手段を提供した方がよいのではないかと。そこで、戻り値をいじくることにした。

戻り値
COMPLETE:データ取得成功。次回の fetch() は次のデータが対象。
INCOMPLETE:データは途中まで取得。次回の fetch() は現在のデータの未取得部分が対象。
NOTFOUND:対象データなし。DBファイル終端に到達。
ERROR:エラー。

さて、NOTFOUND のとき、次の操作はどうしようか。seek() かまたは、 close_db() → open_db() して、改めて、fetch() かな。ERROR のときはもうどうしようもない。close_db() → open_db() して、もしかしたら、続行できるかもしれないが、その保証はできない。ユーザはプロセスをいったん終了して再実行、といったところかな。それでだめなら、OSの再起動!