SQLite3 Virtual DataBase Engine

An instance of the virtual machine.

This structure contains the complete state of the virtual machine.

struct Vdbe {   sqlite3 *db;            /* The database connection that owns this statement */   Op *aOp;                /* Space to hold the virtual machine's program */   Mem *aMem;              /* The memory locations */   Mem **apArg;            /* Arguments to currently executing user function */   Mem *aColName;          /* Column names to return */   Mem *pResultSet;        /* Pointer to an array of results */   Parse *pParse;          /* Parsing context used to create this Vdbe */   int nMem;               /* Number of memory locations currently allocated */   int nOp;                /* Number of instructions in the program */   int nCursor;            /* Number of slots in apCsr[] */   u32 magic;              /* Magic number for sanity checking */   char *zErrMsg;          /* Error message written here */   Vdbe *pPrev,*pNext;     /* Linked list of VDBEs with the same Vdbe.db */   VdbeCursor **apCsr;     /* One element of this array for each open cursor */   Mem *aVar;              /* Values for the OP_Variable opcode. */   char **azVar;           /* Name of variables */   ynVar nVar;             /* Number of entries in aVar[] */   ynVar nzVar;            /* Number of entries in azVar[] */   u32 cacheCtr;           /* VdbeCursor row cache generation counter */   int pc;                 /* The program counter */   int rc;                 /* Value to return */    #ifdef SQLITE_DEBUG   int rcApp;              /* errcode set by sqlite3_result_error_code() */ #endif   u16 nResColumn;         /* Number of columns in one row of the result set */   u8 errorAction;         /* Recovery action to do in case of an error */   u8 minWriteFileFormat;  /* Minimum file format for writable database files */   bft explain:2;          /* True if EXPLAIN present on SQL command */   bft changeCntOn:1;      /* True to update the change-counter */   bft expired:1;          /* True if the VM needs to be recompiled */   bft runOnlyOnce:1;      /* Automatically expire on reset */   bft usesStmtJournal:1;  /* True if uses a statement journal */   bft readOnly:1;         /* True for statements that do not write */   bft bIsReader:1;        /* True for statements that read */   bft isPrepareV2:1;      /* True if prepared with prepare_v2() */   bft doingRerun:1;       /* True if rerunning after an auto-reprepare */   int nChange;            /* Number of db changes made since last reset */   yDbMask btreeMask;      /* Bitmask of db->aDb[] entries referenced */   yDbMask lockMask;       /* Subset of btreeMask that requires a lock */   int iStatement;         /* Statement number (or 0 if has not opened stmt) */   u32 aCounter[5];        /* Counters used by sqlite3_stmt_status() */    #ifndef SQLITE_OMIT_TRACE   i64 startTime;          /* Time when query started - used for profiling */ #endif   i64 iCurrentTime;       /* Value of julianday('now') for this statement */   i64 nFkConstraint;      /* Number of imm. FK constraints this VM */   i64 nStmtDefCons;       /* Number of def. constraints when stmt started */   i64 nStmtDefImmCons;    /* Number of def. imm constraints when stmt started */   char *zSql;             /* Text of the SQL statement that generated this */   void *pFree;            /* Free this when deleting the vdbe */   VdbeFrame *pFrame;      /* Parent frame */   VdbeFrame *pDelFrame;   /* List of frame objects to free on VM reset */   int nFrame;             /* Number of frames in pFrame list */   u32 expmask;            /* Binding to these vars invalidates VM */   SubProgram *pProgram;   /* Linked list of all sub-programs used by VM */   int nOnceFlag;          /* Size of array aOnceFlag[] */   u8 *aOnceFlag;          /* Flags for OP_Once */   AuxData *pAuxData;      /* Linked list of auxdata allocations */    #ifdef SQLITE_ENABLE_STMT_SCANSTATUS   i64 *anExec;            /* Number of times each op has been executed */   int nScan;              /* Entries in aScan[] */   ScanStatus *aScan;      /* Scan definitions for sqlite3_stmt_scanstatus() */ #endif };
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )