SQLite3 Virtual DataBase Engine

An instance of the virtual machine.

This structure contains the complete state of the virtual machine.

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

评论区

加载中...

相关推荐

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 )

SQLite3 Virtual DataBase Engine - HelloWorld