1 | /* Automatically generated. Do not edit */ |
2 | /* See the tool/mkopcodeh.tcl script for details */ |
3 | #define OP_Savepoint 0 |
4 | #define OP_AutoCommit 1 |
5 | #define OP_Transaction 2 |
6 | #define OP_Checkpoint 3 |
7 | #define OP_JournalMode 4 |
8 | #define OP_Vacuum 5 |
9 | #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 /* jump, synopsis: Start at P2 */ |
12 | #define OP_Goto 9 /* jump */ |
13 | #define OP_Gosub 10 /* jump */ |
14 | #define OP_InitCoroutine 11 /* jump */ |
15 | #define OP_Yield 12 /* jump */ |
16 | #define OP_MustBeInt 13 /* jump */ |
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 /* jump, synopsis: key=r[P3@P4] */ |
25 | #define OP_SeekLE 22 /* jump, synopsis: key=r[P3@P4] */ |
26 | #define OP_SeekGE 23 /* jump, synopsis: key=r[P3@P4] */ |
27 | #define OP_SeekGT 24 /* jump, 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 /* jump, synopsis: intkey=r[P3] */ |
34 | #define OP_NotExists 31 /* jump, synopsis: intkey=r[P3] */ |
35 | #define OP_Last 32 /* jump */ |
36 | #define OP_IfSmaller 33 /* jump */ |
37 | #define OP_SorterSort 34 /* jump */ |
38 | #define OP_Sort 35 /* jump */ |
39 | #define OP_Rewind 36 /* jump */ |
40 | #define OP_SorterNext 37 /* jump */ |
41 | #define OP_Prev 38 /* jump */ |
42 | #define OP_Next 39 /* jump */ |
43 | #define OP_IdxLE 40 /* jump, synopsis: key=r[P3@P4] */ |
44 | #define OP_IdxGT 41 /* jump, synopsis: key=r[P3@P4] */ |
45 | #define OP_IdxLT 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_IdxGE 45 /* jump, synopsis: key=r[P3@P4] */ |
49 | #define OP_RowSetRead 46 /* jump, synopsis: r[P3]=rowset(P1) */ |
50 | #define OP_RowSetTest 47 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */ |
51 | #define OP_Program 48 /* jump */ |
52 | #define OP_FkIfZero 49 /* jump, synopsis: if fkctr[P1]==0 goto P2 */ |
53 | #define OP_IsNull 50 /* jump, same as TK_ISNULL, synopsis: if r[P1]==NULL goto P2 */ |
54 | #define OP_NotNull 51 /* jump, same as TK_NOTNULL, synopsis: if r[P1]!=NULL goto P2 */ |
55 | #define OP_Ne 52 /* jump, same as TK_NE, synopsis: IF r[P3]!=r[P1] */ |
56 | #define OP_Eq 53 /* jump, same as TK_EQ, synopsis: IF r[P3]==r[P1] */ |
57 | #define OP_Gt 54 /* jump, same as TK_GT, synopsis: IF r[P3]>r[P1] */ |
58 | #define OP_Le 55 /* jump, same as TK_LE, synopsis: IF r[P3]<=r[P1] */ |
59 | #define OP_Lt 56 /* jump, same as TK_LT, synopsis: IF r[P3]<r[P1] */ |
60 | #define OP_Ge 57 /* jump, same as TK_GE, synopsis: IF r[P3]>=r[P1] */ |
61 | #define OP_ElseEq 58 /* jump, same as TK_ESCAPE */ |
62 | #define OP_IfPos 59 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */ |
63 | #define OP_IfNotZero 60 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */ |
64 | #define OP_DecrJumpZero 61 /* jump, synopsis: if (--r[P1])==0 goto P2 */ |
65 | #define OP_IncrVacuum 62 /* jump */ |
66 | #define OP_VNext 63 /* jump */ |
67 | #define OP_Filter 64 /* jump, synopsis: if key(P3@P4) not in filter(P1) goto P2 */ |
68 | #define OP_PureFunc 65 /* synopsis: r[P3]=func(r[P2@NP]) */ |
69 | #define OP_Function 66 /* synopsis: r[P3]=func(r[P2@NP]) */ |
70 | #define OP_Return 67 |
71 | #define OP_EndCoroutine 68 |
72 | #define OP_HaltIfNull 69 /* synopsis: if r[P3]=null halt */ |
73 | #define OP_Halt 70 |
74 | #define OP_Integer 71 /* synopsis: r[P2]=P1 */ |
75 | #define OP_Int64 72 /* synopsis: r[P2]=P4 */ |
76 | #define OP_String 73 /* synopsis: r[P2]='P4' (len=P1) */ |
77 | #define OP_BeginSubrtn 74 /* synopsis: r[P2]=NULL */ |
78 | #define OP_Null 75 /* synopsis: r[P2..P3]=NULL */ |
79 | #define OP_SoftNull 76 /* synopsis: r[P1]=NULL */ |
80 | #define OP_Blob 77 /* synopsis: r[P2]=P4 (len=P1) */ |
81 | #define OP_Variable 78 /* synopsis: r[P2]=parameter(P1,P4) */ |
82 | #define OP_Move 79 /* synopsis: r[P2@P3]=r[P1@P3] */ |
83 | #define OP_Copy 80 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */ |
84 | #define OP_SCopy 81 /* synopsis: r[P2]=r[P1] */ |
85 | #define OP_IntCopy 82 /* synopsis: r[P2]=r[P1] */ |
86 | #define OP_FkCheck 83 |
87 | #define OP_ResultRow 84 /* synopsis: output=r[P1@P2] */ |
88 | #define OP_CollSeq 85 |
89 | #define OP_AddImm 86 /* synopsis: r[P1]=r[P1]+P2 */ |
90 | #define OP_RealAffinity 87 |
91 | #define OP_Cast 88 /* synopsis: affinity(r[P1]) */ |
92 | #define OP_Permutation 89 |
93 | #define OP_Compare 90 /* synopsis: r[P1@P3] <-> r[P2@P3] */ |
94 | #define OP_IsTrue 91 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */ |
95 | #define OP_ZeroOrNull 92 /* synopsis: r[P2] = 0 OR NULL */ |
96 | #define OP_Offset 93 /* synopsis: r[P3] = sqlite_offset(P1) */ |
97 | #define OP_Column 94 /* synopsis: r[P3]=PX cursor P1 column P2 */ |
98 | #define OP_TypeCheck 95 /* synopsis: typecheck(r[P1@P2]) */ |
99 | #define OP_Affinity 96 /* synopsis: affinity(r[P1@P2]) */ |
100 | #define OP_MakeRecord 97 /* synopsis: r[P3]=mkrec(r[P1@P2]) */ |
101 | #define OP_Count 98 /* synopsis: r[P2]=count() */ |
102 | #define OP_ReadCookie 99 |
103 | #define OP_SetCookie 100 |
104 | #define OP_ReopenIdx 101 /* synopsis: root=P2 iDb=P3 */ |
105 | #define OP_BitAnd 102 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */ |
106 | #define OP_BitOr 103 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */ |
107 | #define OP_ShiftLeft 104 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */ |
108 | #define OP_ShiftRight 105 /* same as TK_RSHIFT, synopsis: r[P3]=r[P2]>>r[P1] */ |
109 | #define OP_Add 106 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */ |
110 | #define OP_Subtract 107 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */ |
111 | #define OP_Multiply 108 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */ |
112 | #define OP_Divide 109 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */ |
113 | #define OP_Remainder 110 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */ |
114 | #define OP_Concat 111 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */ |
115 | #define OP_OpenRead 112 /* synopsis: root=P2 iDb=P3 */ |
116 | #define OP_OpenWrite 113 /* synopsis: root=P2 iDb=P3 */ |
117 | #define OP_BitNot 114 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */ |
118 | #define OP_OpenDup 115 |
119 | #define OP_OpenAutoindex 116 /* synopsis: nColumn=P2 */ |
120 | #define OP_String8 117 /* same as TK_STRING, synopsis: r[P2]='P4' */ |
121 | #define OP_OpenEphemeral 118 /* synopsis: nColumn=P2 */ |
122 | #define OP_SorterOpen 119 |
123 | #define OP_SequenceTest 120 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */ |
124 | #define OP_OpenPseudo 121 /* synopsis: P3 columns in r[P2] */ |
125 | #define OP_Close 122 |
126 | #define OP_ColumnsUsed 123 |
127 | #define OP_SeekScan 124 /* synopsis: Scan-ahead up to P1 rows */ |
128 | #define OP_SeekHit 125 /* synopsis: set P2<=seekHit<=P3 */ |
129 | #define OP_Sequence 126 /* synopsis: r[P2]=cursor[P1].ctr++ */ |
130 | #define OP_NewRowid 127 /* synopsis: r[P2]=rowid */ |
131 | #define OP_Insert 128 /* synopsis: intkey=r[P3] data=r[P2] */ |
132 | #define OP_RowCell 129 |
133 | #define OP_Delete 130 |
134 | #define OP_ResetCount 131 |
135 | #define OP_SorterCompare 132 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */ |
136 | #define OP_SorterData 133 /* synopsis: r[P2]=data */ |
137 | #define OP_RowData 134 /* synopsis: r[P2]=data */ |
138 | #define OP_Rowid 135 /* synopsis: r[P2]=PX rowid of P1 */ |
139 | #define OP_NullRow 136 |
140 | #define OP_SeekEnd 137 |
141 | #define OP_IdxInsert 138 /* synopsis: key=r[P2] */ |
142 | #define OP_SorterInsert 139 /* synopsis: key=r[P2] */ |
143 | #define OP_IdxDelete 140 /* synopsis: key=r[P2@P3] */ |
144 | #define OP_DeferredSeek 141 /* synopsis: Move P3 to P1.rowid if needed */ |
145 | #define OP_IdxRowid 142 /* synopsis: r[P2]=rowid */ |
146 | #define OP_FinishSeek 143 |
147 | #define OP_Destroy 144 |
148 | #define OP_Clear 145 |
149 | #define OP_ResetSorter 146 |
150 | #define OP_CreateBtree 147 /* synopsis: r[P2]=root iDb=P1 flags=P3 */ |
151 | #define OP_SqlExec 148 |
152 | #define OP_ParseSchema 149 |
153 | #define OP_LoadAnalysis 150 |
154 | #define OP_DropTable 151 |
155 | #define OP_DropIndex 152 |
156 | #define OP_Real 153 /* same as TK_FLOAT, synopsis: r[P2]=P4 */ |
157 | #define OP_DropTrigger 154 |
158 | #define OP_IntegrityCk 155 |
159 | #define OP_RowSetAdd 156 /* synopsis: rowset(P1)=r[P2] */ |
160 | #define OP_Param 157 |
161 | #define OP_FkCounter 158 /* synopsis: fkctr[P1]+=P2 */ |
162 | #define OP_MemMax 159 /* synopsis: r[P1]=max(r[P1],r[P2]) */ |
163 | #define OP_OffsetLimit 160 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */ |
164 | #define OP_AggInverse 161 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */ |
165 | #define OP_AggStep 162 /* synopsis: accum=r[P3] step(r[P2@P5]) */ |
166 | #define OP_AggStep1 163 /* synopsis: accum=r[P3] step(r[P2@P5]) */ |
167 | #define OP_AggValue 164 /* synopsis: r[P3]=value N=P2 */ |
168 | #define OP_AggFinal 165 /* synopsis: accum=r[P1] N=P2 */ |
169 | #define OP_Expire 166 |
170 | #define OP_CursorLock 167 |
171 | #define OP_CursorUnlock 168 |
172 | #define OP_TableLock 169 /* synopsis: iDb=P1 root=P2 write=P3 */ |
173 | #define OP_VBegin 170 |
174 | #define OP_VCreate 171 |
175 | #define OP_VDestroy 172 |
176 | #define OP_VOpen 173 |
177 | #define OP_VInitIn 174 /* synopsis: r[P2]=ValueList(P1,P3) */ |
178 | #define OP_VColumn 175 /* synopsis: r[P3]=vcolumn(P2) */ |
179 | #define OP_VRename 176 |
180 | #define OP_Pagecount 177 |
181 | #define OP_MaxPgcnt 178 |
182 | #define OP_ClrSubtype 179 /* synopsis: r[P1].subtype = 0 */ |
183 | #define OP_FilterAdd 180 /* synopsis: filter(P1) += key(P3@P4) */ |
184 | #define OP_Trace 181 |
185 | #define OP_CursorHint 182 |
186 | #define OP_ReleaseReg 183 /* synopsis: release r[P1@P2] mask P3 */ |
187 | #define OP_Noop 184 |
188 | #define OP_Explain 185 |
189 | #define OP_Abortable 186 |
190 | |
191 | /* Properties such as "out2" or "jump" that are specified in |
192 | ** comments following the "case" for each opcode in the vdbe.c |
193 | ** are encoded into bitvectors as follows: |
194 | */ |
195 | #define OPFLG_JUMP 0x01 /* jump: P2 holds jmp target */ |
196 | #define OPFLG_IN1 0x02 /* in1: P1 is an input */ |
197 | #define OPFLG_IN2 0x04 /* in2: P2 is an input */ |
198 | #define OPFLG_IN3 0x08 /* in3: P3 is an input */ |
199 | #define OPFLG_OUT2 0x10 /* out2: P2 is an output */ |
200 | #define OPFLG_OUT3 0x20 /* out3: P3 is an output */ |
201 | #define OPFLG_INITIALIZER {\ |
202 | /* 0 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00,\ |
203 | /* 8 */ 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x01, 0x01,\ |
204 | /* 16 */ 0x03, 0x03, 0x01, 0x12, 0x01, 0x09, 0x09, 0x09,\ |
205 | /* 24 */ 0x09, 0x01, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,\ |
206 | /* 32 */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\ |
207 | /* 40 */ 0x01, 0x01, 0x01, 0x26, 0x26, 0x01, 0x23, 0x0b,\ |
208 | /* 48 */ 0x01, 0x01, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\ |
209 | /* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x03, 0x03, 0x01, 0x01,\ |
210 | /* 64 */ 0x01, 0x00, 0x00, 0x02, 0x02, 0x08, 0x00, 0x10,\ |
211 | /* 72 */ 0x10, 0x10, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00,\ |
212 | /* 80 */ 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x02, 0x02,\ |
213 | /* 88 */ 0x02, 0x00, 0x00, 0x12, 0x1e, 0x20, 0x00, 0x00,\ |
214 | /* 96 */ 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x26, 0x26,\ |
215 | /* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,\ |
216 | /* 112 */ 0x00, 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00,\ |
217 | /* 120 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10,\ |
218 | /* 128 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,\ |
219 | /* 136 */ 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x10, 0x00,\ |
220 | /* 144 */ 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,\ |
221 | /* 152 */ 0x00, 0x10, 0x00, 0x00, 0x06, 0x10, 0x00, 0x04,\ |
222 | /* 160 */ 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ |
223 | /* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,\ |
224 | /* 176 */ 0x00, 0x10, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00,\ |
225 | /* 184 */ 0x00, 0x00, 0x00,} |
226 | |
227 | /* The resolve3P2Values() routine is able to run faster if it knows |
228 | ** the value of the largest JUMP opcode. The smaller the maximum |
229 | ** JUMP opcode the better, so the mkopcodeh.tcl script that |
230 | ** generated this include file strives to group all JUMP opcodes |
231 | ** together near the beginning of the list. |
232 | */ |
233 | #define SQLITE_MX_JUMP_OPCODE 64 /* Maximum JUMP opcode */ |
234 | |