An instance of the virtual machine.
This structure contains the completestate of the virtual machine.
structVdbe{ sqlite3*db;/*Thedatabaseconnectionthatownsthisstatement*/ Op*aOp;/*Spacetoholdthevirtualmachine'sprogram*/ Mem*aMem;/*Thememorylocations*/ Mem**apArg;/*Argumentstocurrentlyexecutinguserfunction*/ Mem*aColName;/*Columnnamestoreturn*/ Mem*pResultSet;/*Pointertoanarrayofresults*/ Parse*pParse;/*ParsingcontextusedtocreatethisVdbe*/ intnMem;/*Numberofmemorylocationscurrentlyallocated*/ intnOp;/*Numberofinstructionsintheprogram*/ intnCursor;/*NumberofslotsinapCsr[]*/ u32magic;/*Magicnumberforsanitychecking*/ char*zErrMsg;/*Errormessagewrittenhere*/ Vdbe*pPrev,*pNext;/*LinkedlistofVDBEswiththesameVdbe.db*/ VdbeCursor**apCsr;/*Oneelementofthisarrayforeachopencursor*/ Mem*aVar;/*ValuesfortheOP_Variableopcode.*/ char**azVar;/*Nameofvariables*/ ynVarnVar;/*NumberofentriesinaVar[]*/ ynVarnzVar;/*NumberofentriesinazVar[]*/ u32cacheCtr;/*VdbeCursorrowcachegenerationcounter*/ intpc;/*Theprogramcounter*/ intrc;/*Valuetoreturn*/ #ifdefsqlITE_DEBUG intrcApp;/*errcodesetbysqlite3_result_error_code()*/ #endif u16nResColumn;/*Numberofcolumnsinonerowoftheresultset*/ u8errorAction;/*RecoveryactiontodoincaSEOfanerror*/ u8minWriteFileFormat;/*Minimumfileformatforwritabledatabasefiles*/ bftexplain:2;/*TrueifEXPLAINpresentonsqlcommand*/ bftchangeCntOn:1;/*Truetoupdatethechange-counter*/ bftexpired:1;/*TrueiftheVMneedstoberecompiled*/ bftrunOnlyOnce:1;/*Automaticallyexpireonreset*/ bftusesStmtJournal:1;/*Trueifusesastatementjournal*/ bftreadOnly:1;/*Trueforstatementsthatdonotwrite*/ bftbIsReader:1;/*Trueforstatementsthatread*/ bftisPrepareV2:1;/*Trueifpreparedwithprepare_v2()*/ bftdoingRerun:1;/*Trueifrerunningafteranauto-reprepare*/ intnChange;/*Numberofdbchangesmadesincelastreset*/ yDbMaskbtreeMask;/*Bitmaskofdb->aDb[]entriesreferenced*/ yDbMasklockMask;/*SubsetofbtreeMaskthatrequiresalock*/ intiStatement;/*Statementnumber(or0ifhasnotopenedstmt)*/ u32aCounter[5];/*Countersusedbysqlite3_stmt_status()*/ #ifndefsqlITE_OMIT_TRACE i64startTime;/*Timewhenquerystarted-usedforprofiling*/ #endif i64iCurrentTime;/*Valueofjulianday('now')forthisstatement*/ i64nFkConstraint;/*Numberofimm.FKconstraintsthisVM*/ i64nStmtDefCons;/*Numberofdef.constraintswhenstmtstarted*/ i64nStmtDefImmCons;/*Numberofdef.immconstraintswhenstmtstarted*/ char*zsql;/*Textofthesqlstatementthatgeneratedthis*/ void*pFree;/*Freethiswhendeletingthevdbe*/ VdbeFrame*pFrame;/*Parentframe*/ VdbeFrame*pDelFrame;/*ListofframeobjectstofreeonVMreset*/ intnFrame;/*NumberofframesinpFramelist*/ u32expmask;/*BindingtothesevarsinvalidatesVM*/ SubProgram*pProgram;/*Linkedlistofallsub-programsusedbyVM*/ intnOnceFlag;/*SizeofarrayaOnceFlag[]*/ u8*aOnceFlag;/*FlagsforOP_Once*/ AuxData*pAuxData;/*Linkedlistofauxdataallocations*/ #ifdefsqlITE_ENABLE_STMT_SCANSTATUS i64*anExec;/*Numberoftimeseachophasbeenexecuted*/ intnScan;/*EntriesinaScan[]*/ ScanStatus*aScan;/*Scandefinitionsforsqlite3_stmt_scanstatus()*/ #endif };原文链接:https://www.f2er.com/sqlite/199664.html