SQlite源码分析

函数sqlite3VdbeReset

          在一次运行处理后清除这个VDBE的内存资源等信息但是并不是直接将其删除。将任何出现的错误信息赋值给参数*pzErrMsg。最后返回结果代码。在这个程序运行过后,VDBE已经准备好被下一次的执行。从另一个方面来看,sqlite3VdbeReset函数重新将虚拟机的状态从VDBE_MAGIC_RUN或者VDBE_MAGIC_HALT设置为VDBE_MAGIC_INIT状态。如果说VM程序没有完全执行结束或者在执行的过程中遇到了一个错误异常,那么可以认为当前VM并没有被很好的停止当前的状态。那么,我们马上将其停机。如果VDBE处于部分运行的状态,那么需要将错误代码和错误信息从VDBE中转到主数据库结构中。虽然VDBE已经被设置为运行状态但是没有处理任何程序指令,那么保持主数据库错误信息。同时也会保存在VDBE运行是产生的分析信息:opcode:表示具体执行什么样的操作,cnt:指令会被执行多少次,cycles:执行当前执行所花费的所有时间,nOp:所有操作指令的个数,在debug模式下能够看到相关的信息。