sql: rework OP_OpenWrite/OpenRead
After new DDL SQL implementation has been introduced, OP_OpenWrite, OP_OpenRead and OP_ReopenIdx opcodes can be refactored. Firstly, if schema versions at compile time and runtime don't match, finish VDBE execution with appropriate message error. Exception is the situation when fifth pointer is set to OPFLAG_FRESH_PTR, which means that space pointer has been fetched during runtime right before that. Secondly, there is no need to fetch number of columns in index from KeyInfo: iterator yields the full tuple, so it would always be equal to the number of fields in a whole space. Finally, now we always can pass space pointer to these opcodes regardless of DML routine. In case of OP_ReopenIdx opcode space and index from given cursor is checked on equality to those given in arguments. If they match, this opcode will become no-op.
Loading
Please register or sign in to comment