-C Refactoring\sthe\sVM.\s\sThe\sP3\sparameter\sis\schanged\sto\sP4.\s\sA\sP5\sparameter\sis\nadded\s(though\snot\scurrently\sused.)\s\sAdd\sroutines\ssqlite3VdbeAddOpX()\swhere\nX\sis\sone\sof\s0,\s1,\s2,\s3,\sor\s4.\s(CVS\s4660)
-D 2008-01-03T00:01:24
+C Revamp\ssqlite3VdbeAddOpList()\sso\sthat\sthe\sstructure\sholds\sinteger\svalues\nfor\sP1,\sP2,\sand\sP3.\s(CVS\s4661)
+D 2008-01-03T01:28:59
F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
F Makefile.in 30789bf70614bad659351660d76b8e533f3340e9
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
F src/pager.c 0cb6ccea4b9615627d61d7c4417cedc45776d429
F src/pager.h f504f7ae84060fee0416a853e368d3d113c3d6fa
F src/parse.y 2ae06e8d3190faace49c5b82e7cea1fc60d084a1
-F src/pragma.c 036e49b88c4f5079a8d9d536a7cc2928583f163f
+F src/pragma.c 61b9d171a6d53d36a77c66cb921d47a5c09a8441
F src/prepare.c 31ce0903040ec6f71da10c74869e10137890d981
F src/printf.c eb27822ba2eec669161409ca31279a24c26ac910
F src/random.c 4a22746501bf36b0a088c66e38dde5daba6a35da
F src/test_tclvar.c b2d1115e4d489179d3f029e765211b2ad527ba59
F src/test_thread.c e297dd41db0b249646e69f97d36ec13e56e8b730
F src/tokenize.c a4e04438c11fed2c67ec47fe3edbef9cca2d1b48
-F src/trigger.c 3267e5d6e3c1e8b688db5844278d71acc0f00996
+F src/trigger.c e7642cf61056655905aaba8db1ca51d299a1003b
F src/update.c 39ac597c81b1d7d0396d5571d620bfa694f21151
F src/utf.c ef4b7d83bae533b76c3e1bf635b113fdad86a736
F src/util.c 05f31144bbd3f1a24f4139ae029c42545cb72624
F src/vacuum.c 3f34f278809bf3eb0b62ec46ff779e9c385b28f0
F src/vdbe.c fd5f6fc98eda1c1664cb1bfd09479ec3fb642139
-F src/vdbe.h c50dd0ad14ae4a2cc0b69f61263dcc732274d231
+F src/vdbe.h 0d29000e30e60714f8de9fd4373ec8569c728e07
F src/vdbeInt.h 2985f1369273e635898cf5952237efcb3fdb21f3
F src/vdbeapi.c bf615ff2cf2b121f1609cbadd4f52720289733b5
-F src/vdbeaux.c 5601e73eaf893c14effb0b2fd921128b605d83c3
+F src/vdbeaux.c cd0a3f702bb90a76adba3581005a9dc7853565f9
F src/vdbeblob.c 82f51cdf9b0c0af729732fde48c824e498c0a1ca
F src/vdbefifo.c 334c838c8f42d61a94813d136019ee566b5dc2f6
F src/vdbemem.c 123994fcd344993d2fb050a83b91b341bbbd08b4
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P ad528735e41ce2ec2e680b12e562d4ddb6650985
-R ace653b10b899d3bff1e4800e5ac3a83
+P 027875e4d4c4bd7686dc880c6917a968049b2fec
+R bafbb97261d5cb777f4a74b378e386c4
U drh
-Z fe84d7f6c2377b705fae1be2a7ddde3c
+Z 286f034de62a5f2d303f92883ddc5640
-027875e4d4c4bd7686dc880c6917a968049b2fec
\ No newline at end of file
+4dc507d87b242619fe32606452227900e16a6de7
\ No newline at end of file
*************************************************************************
** This file contains code used to implement the PRAGMA command.
**
-** $Id: pragma.c,v 1.155 2008/01/03 00:01:24 drh Exp $
+** $Id: pragma.c,v 1.156 2008/01/03 01:28:59 drh Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
{ OP_MemLoad, 0, 0, 0},
{ OP_Integer, 0, 0, 0},
{ OP_Ne, 0, 0, 0}, /* 2 */
- { OP_String8, 0, 0, "ok"},
+ { OP_String8, 0, 0, 0}, /* 3 */
{ OP_Callback, 1, 0, 0},
};
int jmp2;
static const VdbeOpList idxErr[] = {
{ OP_MemIncr, -1, 0, 0},
- { OP_String8, 0, 0, "rowid "},
+ { OP_String8, 0, 0, 0}, /* 1 */
{ OP_Rowid, 1, 0, 0},
- { OP_String8, 0, 0, " missing from index "},
+ { OP_String8, 0, 0, 0}, /* 3 */
{ OP_String8, 0, 0, 0}, /* 4 */
{ OP_Concat, 2, 0, 0},
{ OP_Callback, 1, 0, 0},
sqlite3GenerateIndexKey(v, pIdx, 1);
jmp2 = sqlite3VdbeAddOp2(v, OP_Found, j+2, 0);
addr = sqlite3VdbeAddOpList(v, ArraySize(idxErr), idxErr);
+ sqlite3VdbeChangeP4(v, addr+1, "rowid ", P4_STATIC);
+ sqlite3VdbeChangeP4(v, addr+3, " missing from index ", P4_STATIC);
sqlite3VdbeChangeP4(v, addr+4, pIdx->zName, P4_STATIC);
sqlite3VdbeJumpHere(v, jmp2);
}
{ OP_MemLoad, 2, 0, 0},
{ OP_Eq, 0, 0, 0}, /* 6 */
{ OP_MemIncr, -1, 0, 0},
- { OP_String8, 0, 0, "wrong # of entries in index "},
+ { OP_String8, 0, 0, 0}, /* 8 */
{ OP_String8, 0, 0, 0}, /* 9 */
{ OP_Concat, 0, 0, 0},
{ OP_Callback, 1, 0, 0},
sqlite3VdbeChangeP1(v, addr+3, j+2);
sqlite3VdbeChangeP2(v, addr+3, addr+2);
sqlite3VdbeJumpHere(v, addr+6);
+ sqlite3VdbeChangeP4(v, addr+8,
+ "wrong # of entries in index ", P4_STATIC);
sqlite3VdbeChangeP4(v, addr+9, pIdx->zName, P4_STATIC);
}
}
}
addr = sqlite3VdbeAddOpList(v, ArraySize(endCode), endCode);
sqlite3VdbeChangeP1(v, addr+1, mxErr);
+ sqlite3VdbeChangeP4(v, addr+3, "ok", P4_STATIC);
sqlite3VdbeJumpHere(v, addr+2);
}else
#endif /* SQLITE_OMIT_INTEGRITY_CHECK */
if( !db->init.busy ){
static const VdbeOpList insertTrig[] = {
{ OP_NewRowid, 0, 0, 0 },
- { OP_String8, 0, 0, "trigger" },
+ { OP_String8, 0, 0, 0 }, /* 1: "trigger" */
{ OP_String8, 0, 0, 0 }, /* 2: trigger name */
{ OP_String8, 0, 0, 0 }, /* 3: table name */
{ OP_Integer, 0, 0, 0 },
- { OP_String8, 0, 0, "CREATE TRIGGER "},
+ { OP_String8, 0, 0, 0 }, /* 5: "CREATE TRIGGER " */
{ OP_String8, 0, 0, 0 }, /* 6: SQL */
{ OP_Concat, 0, 0, 0 },
- { OP_MakeRecord, 5, 0, "aaada" },
+ { OP_MakeRecord, 5, 0, 0 }, /* 8: "aaada" */
{ OP_Insert, 0, 0, 0 },
};
int addr;
sqlite3BeginWriteOperation(pParse, 0, iDb);
sqlite3OpenMasterTable(pParse, iDb);
addr = sqlite3VdbeAddOpList(v, ArraySize(insertTrig), insertTrig);
+ sqlite3VdbeChangeP4(v, addr+1, "trigger", P4_STATIC);
sqlite3VdbeChangeP4(v, addr+2, pTrig->name, 0);
- sqlite3VdbeChangeP4(v, addr+3, pTrig->table, 0);
+ sqlite3VdbeChangeP4(v, addr+3, pTrig->table, 0);
+ sqlite3VdbeChangeP4(v, addr+5, "CREATE TRIGGER ", P4_STATIC);
sqlite3VdbeChangeP4(v, addr+6, (char*)pAll->z, pAll->n);
+ sqlite3VdbeChangeP4(v, addr+8, "aaada", P4_STATIC);
sqlite3ChangeCookie(db, v, iDb);
sqlite3VdbeAddOp2(v, OP_Close, 0, 0);
sqlite3VdbeAddOp4(v, OP_ParseSchema, iDb, 0, 0, sqlite3MPrintf(
{ OP_String8, 0, 0, 0}, /* 1 */
{ OP_Column, 0, 1, 0},
{ OP_Ne, 0, ADDR(8), 0},
- { OP_String8, 0, 0, "trigger"},
+ { OP_String8, 0, 0, 0}, /* 4: "trigger" */
{ OP_Column, 0, 0, 0},
{ OP_Ne, 0, ADDR(8), 0},
{ OP_Delete, 0, 0, 0},
sqlite3OpenMasterTable(pParse, iDb);
base = sqlite3VdbeAddOpList(v, ArraySize(dropTrigger), dropTrigger);
sqlite3VdbeChangeP4(v, base+1, pTrigger->name, 0);
+ sqlite3VdbeChangeP4(v, base+4, "trigger", P4_STATIC);
sqlite3ChangeCookie(db, v, iDb);
sqlite3VdbeAddOp2(v, OP_Close, 0, 0);
sqlite3VdbeAddOp4(v, OP_DropTrigger, iDb, 0, 0, pTrigger->name, 0);
** or VDBE. The VDBE implements an abstract machine that runs a
** simple program to access and modify the underlying database.
**
-** $Id: vdbe.h,v 1.118 2008/01/03 00:01:25 drh Exp $
+** $Id: vdbe.h,v 1.119 2008/01/03 01:28:59 drh Exp $
*/
#ifndef _SQLITE_VDBE_H_
#define _SQLITE_VDBE_H_
struct VdbeOpList {
u8 opcode; /* What operation to perform */
signed char p1; /* First operand */
- short int p2; /* Second parameter (often the jump destination) */
- char *p3; /* Third parameter */
+ signed char p2; /* Second parameter (often the jump destination) */
+ signed char p3; /* Third parameter */
+ char *p4; /* Fourth parameter */
};
typedef struct VdbeOpList VdbeOpList;
pOut->opcode = pIn->opcode;
pOut->p1 = pIn->p1;
pOut->p2 = p2<0 ? addr + ADDR(p2) : p2;
- pOut->p4.p = pIn->p3;
- pOut->p4type = pIn->p3 ? P4_STATIC : P4_NOTUSED;
+ pOut->p3 = pIn->p3;
+ pOut->p4type = P4_NOTUSED;
+ pOut->p4.p = 0;
+ pOut->p5 = 0;
#ifdef SQLITE_DEBUG
if( sqlite3_vdbe_addop_trace ){
sqlite3VdbePrintOp(0, i+addr, &p->aOp[i+addr]);