AryaWu/sqlite
0
1/* Automatically generated. Do not edit */2/* See the tool/mkopcodeh.tcl script for details */3#define OP_Savepoint 04#define OP_AutoCommit 15#define OP_Transaction 26#define OP_Checkpoint 37#define OP_JournalMode 48#define OP_Vacuum 59#define OP_VFilter 6 /* jump, synopsis: iplan=r[P3] zplan='P4' */10#define OP_VUpdate 7 /* synopsis: data=r[P3@P2] */11#define OP_Init 8 /* jump0, synopsis: Start at P2 */12#define OP_Goto 9 /* jump */13#define OP_Gosub 10 /* jump */14#define OP_InitCoroutine 11 /* jump0 */15#define OP_Yield 12 /* jump0 */16#define OP_MustBeInt 13 /* jump0 */17#define OP_Jump 14 /* jump */18#define OP_Once 15 /* jump */19#define OP_If 16 /* jump */20#define OP_IfNot 17 /* jump */21#define OP_IsType 18 /* jump, synopsis: if typeof(P1.P3) in P5 goto P2 */22#define OP_Not 19 /* same as TK_NOT, synopsis: r[P2]= !r[P1] */23#define OP_IfNullRow 20 /* jump, synopsis: if P1.nullRow then r[P3]=NULL, goto P2 */24#define OP_SeekLT 21 /* jump0, synopsis: key=r[P3@P4] */25#define OP_SeekLE 22 /* jump0, synopsis: key=r[P3@P4] */26#define OP_SeekGE 23 /* jump0, synopsis: key=r[P3@P4] */27#define OP_SeekGT 24 /* jump0, synopsis: key=r[P3@P4] */28#define OP_IfNotOpen 25 /* jump, synopsis: if( !csr[P1] ) goto P2 */29#define OP_IfNoHope 26 /* jump, synopsis: key=r[P3@P4] */30#define OP_NoConflict 27 /* jump, synopsis: key=r[P3@P4] */31#define OP_NotFound 28 /* jump, synopsis: key=r[P3@P4] */32#define OP_Found 29 /* jump, synopsis: key=r[P3@P4] */33#define OP_SeekRowid 30 /* jump0, synopsis: intkey=r[P3] */34#define OP_NotExists 31 /* jump, synopsis: intkey=r[P3] */35#define OP_Last 32 /* jump0 */36#define OP_IfSizeBetween 33 /* jump */37#define OP_SorterSort 34 /* jump */38#define OP_Sort 35 /* jump */39#define OP_Rewind 36 /* jump0 */40#define OP_IfEmpty 37 /* jump, synopsis: if( empty(P1) ) goto P2 */41#define OP_SorterNext 38 /* jump */42#define OP_Prev 39 /* jump */43#define OP_Next 40 /* jump */44#define OP_IdxLE 41 /* jump, synopsis: key=r[P3@P4] */45#define OP_IdxGT 42 /* jump, synopsis: key=r[P3@P4] */46#define OP_Or 43 /* same as TK_OR, synopsis: r[P3]=(r[P1] || r[P2]) */47#define OP_And 44 /* same as TK_AND, synopsis: r[P3]=(r[P1] && r[P2]) */48#define OP_IdxLT 45 /* jump, synopsis: key=r[P3@P4] */49#define OP_IdxGE 46 /* jump, synopsis: key=r[P3@P4] */50#define OP_RowSetRead 47 /* jump, synopsis: r[P3]=rowset(P1) */51#define OP_RowSetTest 48 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */52#define OP_Program 49 /* jump0 */53#define OP_FkIfZero 50 /* jump, synopsis: if fkctr[P1]==0 goto P2 */54#define OP_IsNull 51 /* jump, same as TK_ISNULL, synopsis: if r[P1]==NULL goto P2 */55#define OP_NotNull 52 /* jump, same as TK_NOTNULL, synopsis: if r[P1]!=NULL goto P2 */56#define OP_Ne 53 /* jump, same as TK_NE, synopsis: IF r[P3]!=r[P1] */57#define OP_Eq 54 /* jump, same as TK_EQ, synopsis: IF r[P3]==r[P1] */58#define OP_Gt 55 /* jump, same as TK_GT, synopsis: IF r[P3]>r[P1] */59#define OP_Le 56 /* jump, same as TK_LE, synopsis: IF r[P3]<=r[P1] */60#define OP_Lt 57 /* jump, same as TK_LT, synopsis: IF r[P3]<r[P1] */61#define OP_Ge 58 /* jump, same as TK_GE, synopsis: IF r[P3]>=r[P1] */62#define OP_ElseEq 59 /* jump, same as TK_ESCAPE */63#define OP_IfPos 60 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */64#define OP_IfNotZero 61 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */65#define OP_DecrJumpZero 62 /* jump, synopsis: if (--r[P1])==0 goto P2 */66#define OP_IncrVacuum 63 /* jump */67#define OP_VNext 64 /* jump */68#define OP_Filter 65 /* jump, synopsis: if key(P3@P4) not in filter(P1) goto P2 */69#define OP_PureFunc 66 /* synopsis: r[P3]=func(r[P2@NP]) */70#define OP_Function 67 /* synopsis: r[P3]=func(r[P2@NP]) */71#define OP_Return 6872#define OP_EndCoroutine 6973#define OP_HaltIfNull 70 /* synopsis: if r[P3]=null halt */74#define OP_Halt 7175#define OP_Integer 72 /* synopsis: r[P2]=P1 */76#define OP_Int64 73 /* synopsis: r[P2]=P4 */77#define OP_String 74 /* synopsis: r[P2]='P4' (len=P1) */78#define OP_BeginSubrtn 75 /* synopsis: r[P2]=NULL */79#define OP_Null 76 /* synopsis: r[P2..P3]=NULL */80#define OP_SoftNull 77 /* synopsis: r[P1]=NULL */81#define OP_Blob 78 /* synopsis: r[P2]=P4 (len=P1) */82#define OP_Variable 79 /* synopsis: r[P2]=parameter(P1) */83#define OP_Move 80 /* synopsis: r[P2@P3]=r[P1@P3] */84#define OP_Copy 81 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */85#define OP_SCopy 82 /* synopsis: r[P2]=r[P1] */86#define OP_IntCopy 83 /* synopsis: r[P2]=r[P1] */87#define OP_FkCheck 8488#define OP_ResultRow 85 /* synopsis: output=r[P1@P2] */89#define OP_CollSeq 8690#define OP_AddImm 87 /* synopsis: r[P1]=r[P1]+P2 */91#define OP_RealAffinity 8892#define OP_Cast 89 /* synopsis: affinity(r[P1]) */93#define OP_Permutation 9094#define OP_Compare 91 /* synopsis: r[P1@P3] <-> r[P2@P3] */95#define OP_IsTrue 92 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */96#define OP_ZeroOrNull 93 /* synopsis: r[P2] = 0 OR NULL */97#define OP_Offset 94 /* synopsis: r[P3] = sqlite_offset(P1) */98#define OP_Column 95 /* synopsis: r[P3]=PX cursor P1 column P2 */99#define OP_TypeCheck 96 /* synopsis: typecheck(r[P1@P2]) */100#define OP_Affinity 97 /* synopsis: affinity(r[P1@P2]) */101#define OP_MakeRecord 98 /* synopsis: r[P3]=mkrec(r[P1@P2]) */102#define OP_Count 99 /* synopsis: r[P2]=count() */103#define OP_ReadCookie 100104#define OP_SetCookie 101105#define OP_ReopenIdx 102 /* synopsis: root=P2 iDb=P3 */106#define OP_BitAnd 103 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */107#define OP_BitOr 104 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */108#define OP_ShiftLeft 105 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */109#define OP_ShiftRight 106 /* same as TK_RSHIFT, synopsis: r[P3]=r[P2]>>r[P1] */110#define OP_Add 107 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */111#define OP_Subtract 108 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */112#define OP_Multiply 109 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */113#define OP_Divide 110 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */114#define OP_Remainder 111 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */115#define OP_Concat 112 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */116#define OP_OpenRead 113 /* synopsis: root=P2 iDb=P3 */117#define OP_OpenWrite 114 /* synopsis: root=P2 iDb=P3 */118#define OP_BitNot 115 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */119#define OP_OpenDup 116120#define OP_OpenAutoindex 117 /* synopsis: nColumn=P2 */121#define OP_String8 118 /* same as TK_STRING, synopsis: r[P2]='P4' */122#define OP_OpenEphemeral 119 /* synopsis: nColumn=P2 */123#define OP_SorterOpen 120124#define OP_SequenceTest 121 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */125#define OP_OpenPseudo 122 /* synopsis: P3 columns in r[P2] */126#define OP_Close 123127#define OP_ColumnsUsed 124128#define OP_SeekScan 125 /* synopsis: Scan-ahead up to P1 rows */129#define OP_SeekHit 126 /* synopsis: set P2<=seekHit<=P3 */130#define OP_Sequence 127 /* synopsis: r[P2]=cursor[P1].ctr++ */131#define OP_NewRowid 128 /* synopsis: r[P2]=rowid */132#define OP_Insert 129 /* synopsis: intkey=r[P3] data=r[P2] */133#define OP_RowCell 130134#define OP_Delete 131135#define OP_ResetCount 132136#define OP_SorterCompare 133 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */137#define OP_SorterData 134 /* synopsis: r[P2]=data */138#define OP_RowData 135 /* synopsis: r[P2]=data */139#define OP_Rowid 136 /* synopsis: r[P2]=PX rowid of P1 */140#define OP_NullRow 137141#define OP_SeekEnd 138142#define OP_IdxInsert 139 /* synopsis: key=r[P2] */143#define OP_SorterInsert 140 /* synopsis: key=r[P2] */144#define OP_IdxDelete 141 /* synopsis: key=r[P2@P3] */145#define OP_DeferredSeek 142 /* synopsis: Move P3 to P1.rowid if needed */146#define OP_IdxRowid 143 /* synopsis: r[P2]=rowid */147#define OP_FinishSeek 144148#define OP_Destroy 145149#define OP_Clear 146150#define OP_ResetSorter 147151#define OP_CreateBtree 148 /* synopsis: r[P2]=root iDb=P1 flags=P3 */152#define OP_SqlExec 149153#define OP_ParseSchema 150154#define OP_LoadAnalysis 151155#define OP_DropTable 152156#define OP_DropIndex 153157#define OP_Real 154 /* same as TK_FLOAT, synopsis: r[P2]=P4 */158#define OP_DropTrigger 155159#define OP_IntegrityCk 156160#define OP_RowSetAdd 157 /* synopsis: rowset(P1)=r[P2] */161#define OP_Param 158162#define OP_FkCounter 159 /* synopsis: fkctr[P1]+=P2 */163#define OP_MemMax 160 /* synopsis: r[P1]=max(r[P1],r[P2]) */164#define OP_OffsetLimit 161 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */165#define OP_AggInverse 162 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */166#define OP_AggStep 163 /* synopsis: accum=r[P3] step(r[P2@P5]) */167#define OP_AggStep1 164 /* synopsis: accum=r[P3] step(r[P2@P5]) */168#define OP_AggValue 165 /* synopsis: r[P3]=value N=P2 */169#define OP_AggFinal 166 /* synopsis: accum=r[P1] N=P2 */170#define OP_Expire 167171#define OP_CursorLock 168172#define OP_CursorUnlock 169173#define OP_TableLock 170 /* synopsis: iDb=P1 root=P2 write=P3 */174#define OP_VBegin 171175#define OP_VCreate 172176#define OP_VDestroy 173177#define OP_VOpen 174178#define OP_VCheck 175179#define OP_VInitIn 176 /* synopsis: r[P2]=ValueList(P1,P3) */180#define OP_VColumn 177 /* synopsis: r[P3]=vcolumn(P2) */181#define OP_VRename 178182#define OP_Pagecount 179183#define OP_MaxPgcnt 180184#define OP_ClrSubtype 181 /* synopsis: r[P1].subtype = 0 */185#define OP_GetSubtype 182 /* synopsis: r[P2] = r[P1].subtype */186#define OP_SetSubtype 183 /* synopsis: r[P2].subtype = r[P1] */187#define OP_FilterAdd 184 /* synopsis: filter(P1) += key(P3@P4) */188#define OP_Trace 185189#define OP_CursorHint 186190#define OP_ReleaseReg 187 /* synopsis: release r[P1@P2] mask P3 */191#define OP_Noop 188192#define OP_Explain 189193#define OP_Abortable 190194 195/* Properties such as "out2" or "jump" that are specified in196** comments following the "case" for each opcode in the vdbe.c197** are encoded into bitvectors as follows:198*/199#define OPFLG_JUMP 0x01 /* jump: P2 holds jmp target */200#define OPFLG_IN1 0x02 /* in1: P1 is an input */201#define OPFLG_IN2 0x04 /* in2: P2 is an input */202#define OPFLG_IN3 0x08 /* in3: P3 is an input */203#define OPFLG_OUT2 0x10 /* out2: P2 is an output */204#define OPFLG_OUT3 0x20 /* out3: P3 is an output */205#define OPFLG_NCYCLE 0x40 /* ncycle:Cycles count against P1 */206#define OPFLG_JUMP0 0x80 /* jump0: P2 might be zero */207#define OPFLG_INITIALIZER {\208/* 0 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x41, 0x00,\209/* 8 */ 0x81, 0x01, 0x01, 0x81, 0x83, 0x83, 0x01, 0x01,\210/* 16 */ 0x03, 0x03, 0x01, 0x12, 0x01, 0xc9, 0xc9, 0xc9,\211/* 24 */ 0xc9, 0x01, 0x49, 0x49, 0x49, 0x49, 0xc9, 0x49,\212/* 32 */ 0xc1, 0x01, 0x41, 0x41, 0xc1, 0x01, 0x01, 0x41,\213/* 40 */ 0x41, 0x41, 0x41, 0x26, 0x26, 0x41, 0x41, 0x23,\214/* 48 */ 0x0b, 0x81, 0x01, 0x03, 0x03, 0x0b, 0x0b, 0x0b,\215/* 56 */ 0x0b, 0x0b, 0x0b, 0x01, 0x03, 0x03, 0x03, 0x01,\216/* 64 */ 0x41, 0x01, 0x00, 0x00, 0x02, 0x02, 0x08, 0x00,\217/* 72 */ 0x10, 0x10, 0x10, 0x00, 0x10, 0x00, 0x10, 0x10,\218/* 80 */ 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x02,\219/* 88 */ 0x02, 0x02, 0x00, 0x00, 0x12, 0x1e, 0x20, 0x40,\220/* 96 */ 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x40, 0x26,\221/* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,\222/* 112 */ 0x26, 0x40, 0x00, 0x12, 0x40, 0x40, 0x10, 0x40,\223/* 120 */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x10,\224/* 128 */ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,\225/* 136 */ 0x50, 0x00, 0x40, 0x04, 0x04, 0x00, 0x40, 0x50,\226/* 144 */ 0x40, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\227/* 152 */ 0x00, 0x00, 0x10, 0x00, 0x00, 0x06, 0x10, 0x00,\228/* 160 */ 0x04, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\229/* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10,\230/* 176 */ 0x50, 0x40, 0x00, 0x10, 0x10, 0x02, 0x12, 0x12,\231/* 184 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}232 233/* The resolve3P2Values() routine is able to run faster if it knows234** the value of the largest JUMP opcode. The smaller the maximum235** JUMP opcode the better, so the mkopcodeh.tcl script that236** generated this include file strives to group all JUMP opcodes237** together near the beginning of the list.238*/239#define SQLITE_MX_JUMP_OPCODE 65 /* Maximum JUMP opcode */240 