mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
Enhancements to the new sqlite3_stmt_explain() interface implementation and
documentation. FossilOrigin-Name: dc98ac6b6de27fc096a715e650067154a545709cf1eecd6c2722ab30a91c2d1d
This commit is contained in:
@@ -1863,11 +1863,16 @@ int sqlite3_stmt_isexplain(sqlite3_stmt *pStmt){
|
||||
int sqlite3_stmt_explain(sqlite3_stmt *pStmt, int eMode){
|
||||
Vdbe *v = (Vdbe*)pStmt;
|
||||
int rc;
|
||||
if( v->eVdbeState!=VDBE_READY_STATE ) return SQLITE_BUSY;
|
||||
if( v->explain==eMode ) return SQLITE_OK;
|
||||
if( v->zSql==0 || eMode<0 || eMode>2 ) return SQLITE_ERROR;
|
||||
sqlite3_mutex_enter(v->db->mutex);
|
||||
if( v->nMem>=10 && (eMode!=2 || v->haveEqpOps) ){
|
||||
if( v->explain==eMode ){
|
||||
rc = SQLITE_OK;
|
||||
}else if( eMode<0 || eMode>2 ){
|
||||
rc = SQLITE_ERROR;
|
||||
}else if( (v->prepFlags & SQLITE_PREPARE_SAVESQL)==0 ){
|
||||
rc = SQLITE_ERROR;
|
||||
}else if( v->eVdbeState!=VDBE_READY_STATE ){
|
||||
rc = SQLITE_BUSY;
|
||||
}else if( v->nMem>=10 && (eMode!=2 || v->haveEqpOps) ){
|
||||
/* No reprepare necessary */
|
||||
v->explain = eMode;
|
||||
rc = SQLITE_OK;
|
||||
|
Reference in New Issue
Block a user