私は、MySQL 用の独自のストレージ エンジンに取り組んでいます。これまでのところ、このストレージ エンジンは信頼性が高く正確に動作しますが、小さな (~100 MB) テーブルに対してのみ...セグメンテーション違反につながる:
select * from item order by i_author;
そこで、MySQL をデバッグ モードでコンパイルしたところ、filesort.cc の merge_buffers 関数でアサーション エラーが発生していることがわかりました。
/* The following will fire if there is not enough space in sort_buffer */
DBUG_ASSERT(maxcount!=0);
正直なところ、このエラーを解消するためにストレージ エンジンで何を変更できるかわかりません。最初は、構成パラメーター sort_buffer_sizeを変更する必要があるように見えましたが、これをテーブルのサイズよりも大きく設定しても、このエラーで何かが変わります。
MySQLストレージエンジンの書き方を知っている人は、これを解決する方法を知っていますか?