CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
opcodes.h240 linesDownload Raw Back to root
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