SQLiteではレジスタ型仮想マシンのバイト命令がBTreeを操作している。 またバイトコード生成はLALR(1)構文解析器の(cmd)非終端記号の還元時(reduce)に生成されていた。 仮想マシンは仮想データベースエンジン(VDBE)と呼ばれておりBTreeコンポーネントを操作する。 今回はバイトコード実行時のVDBEの挙動を調べる。 命令(OpCode)や変数が多くて辛いため、簡単なSQLを実際に追いながら命令や変数を説明する形で進める。 仮想マシンの動きを追う準備 仮想マシンの動きを追う2.8をベースにしている資料がある。 今更だけど、これを読むのが早い気がする。ただ3系と2系では一部の命令(ResultRow, Callback)が異なる。 各命令資料はOpCodeにまとまっている。 用語の事前準備 まずは頻出する概念の説明をしておく。 仮想データベースエンジン(VDBE) 命令