-C Ensure\svacuum\shandles\stable\snames\swith\sspaces\sin\sthem.\s(CVS\s1491)
-D 2004-05-29T10:43:07
+C Transform\sOP_HexBlob\sand\sOP_String8\sto\sOP_Blob\sand\sOP_String\sthe\sfirst\stime\sthey\sare\sexecuted.\s(CVS\s1492)
+D 2004-05-29T11:24:50
F Makefile.in ab7b0d5118e2da97bac66be8684a1034e3500f5a
F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
F src/auth.c 5c2f0bea4729c98c2be3b69d6b466fc51448fe79
F src/btree.c 7832e4247f0d14dfe25dcf85647ddde71b614170
F src/btree.h b65140b5ae891f30d2a39e64b9f0343225553545
-F src/build.c f97826762d40dbde5f25ebaa009976078ba8b7ff
+F src/build.c fd36c4a603e23df35aa7f57772d965e1865e39e0
F src/date.c 0eb922af5c5f5e2455f8dc2f98023ed3e04a857e
F src/delete.c 72f8febf6170cda830f509c8f9dffbed3df3596c
F src/encode.c a876af473d1d636faa3dca51c7571f2e007eea37
-F src/expr.c 1f7b853b097806ff6b0a3edd884c9b6675698745
+F src/expr.c 416e8970fd0f0b66ac8b4d9f58f6f73239e47568
F src/func.c 1fe0763675eb38b6e3992d3edfbec2271798b658
F src/hash.c 440c2f8cb373ee1b4e13a0988489c7cd95d55b6f
F src/hash.h 762d95f1e567664d1eafc1687de755626be962fb
-F src/insert.c dd117e8b3f50e943e6cf5fbcf4bbdc0b907b0b4c
+F src/insert.c 0c7966dba4cd5698e393e824f162d520e96b1978
F src/legacy.c ad23746f15f67e34577621b1875f639c94839e1f
F src/main.c 79f8142ee2dbf0e3b1f60251515fcf4a1339e784
F src/md5.c d2c738fedfb27f73cefcf2b0ac1f9f21894b073e
F src/pager.c 6ff6b906427d4824099140776cb8768f922f3dc5
F src/pager.h 78a00ac280899bcba1a89dc51585dcae6b7b3253
F src/parse.y facaa7d07885fb9d53ec8fd676705715d3942b0f
-F src/pragma.c 0c17b613d719c62a0dbad659b7d8a6e7ce7e9733
+F src/pragma.c 84e778a73eb6a14c1a328d75f70355cb51c22803
F src/printf.c ef750e8e2398ca7e8b58be991075f08c6a7f0e53
F src/random.c eff68e3f257e05e81eae6c4d50a51eb88beb4ff3
-F src/select.c ee54bf2faa76f5e30832fd589a1f10c485047469
+F src/select.c 0297717eb7331604687c2e29c147d3a311359df1
F src/shell.c ed4d237b3e52a0a42512bfcc53530e46de20c28f
F src/sqlite.h.in edc6408c7f53c2104f781a76b926036e17018ec9
F src/sqliteInt.h 01f9250ee3a1ab681b7ed91ad2b3748c2f230521
F src/test4.c 34848a9fd31aa65857b20a8bfc03aff77d8c3426
F src/test5.c 9a1f15133f6955f067c5246e564723b5f23ff221
F src/tokenize.c 50a87c7414de54a008427c9fed22e4e86efb6844
-F src/trigger.c 6a0751fd7d3d723f414ac1f877f16b1c0ba4722b
-F src/update.c 96461bcf4e946697e83c09c77c7e61b545a2f66e
+F src/trigger.c 258ed8f9583c6b80e5af401cb9cce345c0c689c3
+F src/update.c 259f06e7b22c684b2d3dda54a18185892d6e9573
F src/utf.c f8604999a54483533ac20a63879074f01b0df384
F src/util.c 4df9d9b0d930d81ec581bcb68748e7c48bdc8c7d
F src/vacuum.c 82ce1fc8ecc2e1aa284c13fe38446709f9936c63
-F src/vdbe.c ea010d63dfdf84b7d23781144fe2cd11add2c1bd
+F src/vdbe.c c9658279c8d46760afab9714fd988ef052d02b88
F src/vdbe.h e73f890e0f2a6c42b183d7d6937947930fe4fdeb
F src/vdbeInt.h c2bcd6e5a6e6a3753e4c5a368629c3a625719bfc
F src/vdbeapi.c 0c5d64c81871cb4fe5407e639604ee95738b6942
-F src/vdbeaux.c bbcf1bb953526130495b01b23751cf756cfed2fb
+F src/vdbeaux.c 79dbad52ba653c0f26adcab1a054432669775b0d
F src/vdbemem.c c97c145ff6d9fc5b4236704c04a65849117e6214
-F src/where.c efe5d25fe18cd7381722457898cd863e84097a0c
+F src/where.c 444a7c3a8b1eb7bba072e489af628555d21d92a4
F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242
F test/attach.test 0dd7cf9bf9bc915bce2da4fb616c4ea9c3da64af
F test/attach2.test 5472d442bb2ef1ee587e0ae7472bb68b52509a38
F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da
F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
-P 4feb4b9a71ce7a92924d2358a7ccecb4cca19223
-R 1c8a97ac5a9accf91dcf49ffc08fac99
+P 0a6689be843e695902fbfef863f128915545499e
+R 1d952e495024dd4407d89b7b9acbc34c
U danielk1977
-Z a1f2191b7711706a5263dea1c2c73086
+Z 654311e7b543692762f3cae151122ce2
-0a6689be843e695902fbfef863f128915545499e
\ No newline at end of file
+3225de8902b0e7e60c4d9f3a5ef51bc74f57d364
\ No newline at end of file
** ROLLBACK
** PRAGMA
**
-** $Id: build.c,v 1.199 2004/05/29 10:23:19 danielk1977 Exp $
+** $Id: build.c,v 1.200 2004/05/29 11:24:50 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
sqlite3OpenMasterTable(v, iDb);
sqlite3VdbeAddOp(v, OP_NewRecno, 0, 0);
sqlite3VdbeAddOp(v, OP_Dup, 0, 0);
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
sqlite3VdbeAddOp(v, OP_PutIntKey, 0, 0);
}
}
}
p->tnum = 0;
sqlite3VdbeAddOp(v, OP_Pull, 1, 0);
- sqlite3VdbeOp3(v, OP_String, 0, 0, p->pSelect==0?"table":"view", P3_STATIC);
- sqlite3VdbeOp3(v, OP_String, 0, 0, p->zName, 0);
- sqlite3VdbeOp3(v, OP_String, 0, 0, p->zName, 0);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, p->pSelect==0?"table":"view", P3_STATIC);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, p->zName, 0);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, p->zName, 0);
sqlite3VdbeAddOp(v, OP_Dup, 4, 0);
if( pSelect ){
char *z = createTableStmt(p);
n = z ? strlen(z) : 0;
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
sqlite3VdbeChangeP3(v, -1, z, n);
sqliteFree(z);
}else{
if( p->pSelect ){
- sqlite3VdbeOp3(v, OP_String, 0, 0, "CREATE VIEW ", P3_STATIC);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, "CREATE VIEW ", P3_STATIC);
}else{
- sqlite3VdbeOp3(v, OP_String, 0, 0, "CREATE TABLE ", P3_STATIC);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, "CREATE TABLE ", P3_STATIC);
}
assert( pEnd!=0 );
n = Addr(pEnd->z) - Addr(pParse->sNameToken.z) + 1;
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
sqlite3VdbeChangeP3(v, -1, pParse->sNameToken.z, n);
sqlite3VdbeAddOp(v, OP_Concat, 2, 0);
}
if( v ){
static VdbeOpList dropTable[] = {
{ OP_Rewind, 0, ADDR(10), 0},
- { OP_String, 0, 0, 0}, /* 1 */
+ { OP_String8, 0, 0, 0}, /* 1 */
{ OP_MemStore, 1, 1, 0},
{ OP_MemLoad, 1, 0, 0}, /* 3 */
{ OP_Column, 0, 2, 0},
sqlite3OpenMasterTable(v, iDb);
}
sqlite3VdbeAddOp(v, OP_NewRecno, 0, 0);
- sqlite3VdbeOp3(v, OP_String, 0, 0, "index", P3_STATIC);
- sqlite3VdbeOp3(v, OP_String, 0, 0, pIndex->zName, 0);
- sqlite3VdbeOp3(v, OP_String, 0, 0, pTab->zName, 0);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, "index", P3_STATIC);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, pIndex->zName, 0);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, pTab->zName, 0);
sqlite3VdbeOp3(v, OP_CreateIndex, 0, iDb,(char*)&pIndex->tnum,P3_POINTER);
pIndex->tnum = 0;
if( pTblName ){
sqlite3VdbeOp3(v, OP_OpenWrite, 1, 0,
(char*)&pIndex->keyInfo, P3_KEYINFO);
}
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
if( pStart && pEnd ){
sqlite3VdbeChangeP3(v, -1, "CREATE INDEX ", P3_STATIC);
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
n = Addr(pEnd->z) - Addr(pName->z) + 1;
sqlite3VdbeChangeP3(v, -1, pName->z, n);
sqlite3VdbeAddOp(v, OP_Concat, 2, 0);
if( v ){
static VdbeOpList dropIndex[] = {
{ OP_Rewind, 0, ADDR(9), 0},
- { OP_String, 0, 0, 0}, /* 1 */
+ { OP_String8, 0, 0, 0}, /* 1 */
{ OP_MemStore, 1, 1, 0},
{ OP_MemLoad, 1, 0, 0}, /* 3 */
{ OP_Column, 0, 1, 0},
** This file contains routines used for analyzing expressions and
** for generating VDBE code that evaluates expressions in SQLite.
**
-** $Id: expr.c,v 1.131 2004/05/28 08:21:06 drh Exp $
+** $Id: expr.c,v 1.132 2004/05/29 11:24:50 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
/* Evaluate the expression and insert it into the temp table */
sqlite3ExprCode(pParse, pE2);
sqlite3VdbeOp3(v, OP_MakeKey, 1, 0, affStr, P3_STATIC);
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
sqlite3VdbeAddOp(v, OP_PutStrKey, pExpr->iTable, 0);
}
}
case TK_RSHIFT: op = OP_ShiftRight; break;
case TK_REM: op = OP_Remainder; break;
case TK_FLOAT: op = OP_Real; break;
- case TK_STRING: op = OP_String; break;
+ case TK_STRING: op = OP_String8; break;
case TK_BLOB: op = OP_HexBlob; break;
default: break;
}
break;
}
case TK_NULL: {
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
break;
}
case TK_VARIABLE: {
addr = sqlite3VdbeCurrentAddr(v);
sqlite3VdbeAddOp(v, OP_NotNull, -1, addr+4); /* addr + 0 */
sqlite3VdbeAddOp(v, OP_Pop, 2, 0);
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
sqlite3VdbeAddOp(v, OP_Goto, 0, addr+7);
sqlite3VdbeOp3(v, OP_MakeKey, 1, 0, affStr, P3_STATIC); /* addr + 4 */
sqlite3VdbeAddOp(v, OP_Found, pExpr->iTable, addr+7);
if( pExpr->pRight ){
sqlite3ExprCode(pParse, pExpr->pRight);
}else{
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
}
sqlite3VdbeResolveLabel(v, expr_end_label);
break;
** This file contains C code routines that are called by the parser
** to handle INSERT statements in SQLite.
**
-** $Id: insert.c,v 1.107 2004/05/26 10:11:06 danielk1977 Exp $
+** $Id: insert.c,v 1.108 2004/05/29 11:24:50 danielk1977 Exp $
*/
#include "sqliteInt.h"
}
}
if( pColumn && j>=pColumn->nId ){
- sqlite3VdbeOp3(v, OP_String, 0, 0, pTab->aCol[i].zDflt, P3_STATIC);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, pTab->aCol[i].zDflt, P3_STATIC);
}else if( useTempTable ){
sqlite3VdbeAddOp(v, OP_Column, srcTab, j);
}else if( pSelect ){
** Whenever this column is read, the record number will be substituted
** in its place. So will fill this column with a NULL to avoid
** taking up data space with information that will never be used. */
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
continue;
}
if( pColumn==0 ){
}
}
if( pColumn && j>=pColumn->nId ){
- sqlite3VdbeOp3(v, OP_String, 0, 0, pTab->aCol[i].zDflt, P3_STATIC);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, pTab->aCol[i].zDflt, P3_STATIC);
}else if( useTempTable ){
sqlite3VdbeAddOp(v, OP_Column, srcTab, j);
}else if( pSelect ){
break;
}
case OE_Replace: {
- sqlite3VdbeOp3(v, OP_String, 0, 0, pTab->aCol[i].zDflt, P3_STATIC);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, pTab->aCol[i].zDflt, P3_STATIC);
sqlite3VdbeAddOp(v, OP_Push, nCol-i, 0);
break;
}
*************************************************************************
** This file contains code used to implement the PRAGMA command.
**
-** $Id: pragma.c,v 1.33 2004/05/28 16:00:22 drh Exp $
+** $Id: pragma.c,v 1.34 2004/05/29 11:24:50 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
sqlite3ViewGetColumnNames(pParse, pTab);
for(i=0; i<pTab->nCol; i++){
sqlite3VdbeAddOp(v, OP_Integer, i, 0);
- sqlite3VdbeOp3(v, OP_String, 0, 0, pTab->aCol[i].zName, 0);
- sqlite3VdbeOp3(v, OP_String, 0, 0,
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, pTab->aCol[i].zName, 0);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0,
pTab->aCol[i].zType ? pTab->aCol[i].zType : "numeric", 0);
sqlite3VdbeAddOp(v, OP_Integer, pTab->aCol[i].notNull, 0);
- sqlite3VdbeOp3(v, OP_String, 0, 0,
+ sqlite3VdbeOp3(v, OP_String8, 0, 0,
pTab->aCol[i].zDflt, P3_STATIC);
sqlite3VdbeAddOp(v, OP_Integer, pTab->aCol[i].isPrimKey, 0);
sqlite3VdbeAddOp(v, OP_Callback, 6, 0);
sqlite3VdbeAddOp(v, OP_Integer, i, 0);
sqlite3VdbeAddOp(v, OP_Integer, cnum, 0);
assert( pTab->nCol>cnum );
- sqlite3VdbeOp3(v, OP_String, 0, 0, pTab->aCol[cnum].zName, 0);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, pTab->aCol[cnum].zName, 0);
sqlite3VdbeAddOp(v, OP_Callback, 3, 0);
}
}
sqlite3VdbeSetColName(v, 2, "unique", P3_STATIC);
while(pIdx){
sqlite3VdbeAddOp(v, OP_Integer, i, 0);
- sqlite3VdbeOp3(v, OP_String, 0, 0, pIdx->zName, 0);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, pIdx->zName, 0);
sqlite3VdbeAddOp(v, OP_Integer, pIdx->onError!=OE_None, 0);
sqlite3VdbeAddOp(v, OP_Callback, 3, 0);
++i;
for(j=0; j<pFK->nCol; j++){
sqlite3VdbeAddOp(v, OP_Integer, i, 0);
sqlite3VdbeAddOp(v, OP_Integer, j, 0);
- sqlite3VdbeOp3(v, OP_String, 0, 0, pFK->zTo, 0);
- sqlite3VdbeOp3(v, OP_String, 0, 0,
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, pFK->zTo, 0);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0,
pTab->aCol[pFK->aCol[j].iFrom].zName, 0);
- sqlite3VdbeOp3(v, OP_String, 0, 0, pFK->aCol[j].zCol, 0);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, pFK->aCol[j].zCol, 0);
sqlite3VdbeAddOp(v, OP_Callback, 5, 0);
}
++i;
if( db->aDb[i].pBt==0 ) continue;
assert( db->aDb[i].zName!=0 );
sqlite3VdbeAddOp(v, OP_Integer, i, 0);
- sqlite3VdbeOp3(v, OP_String, 0, 0, db->aDb[i].zName, 0);
- sqlite3VdbeOp3(v, OP_String, 0, 0,
+ sqlite3VdbeOp3(v, OP_String8, 0, 0, db->aDb[i].zName, 0);
+ sqlite3VdbeOp3(v, OP_String8, 0, 0,
sqlite3BtreeGetFilename(db->aDb[i].pBt), 0);
sqlite3VdbeAddOp(v, OP_Callback, 3, 0);
}
{ OP_MemLoad, 0, 0, 0},
{ OP_Integer, 0, 0, 0},
{ OP_Ne, 0, 0, 0}, /* 2 */
- { OP_String, 0, 0, "ok"},
+ { OP_String8, 0, 0, "ok"},
{ OP_Callback, 1, 0, 0},
};
}
sqlite3VdbeAddOp(v, OP_IntegrityCk, cnt, i);
sqlite3VdbeAddOp(v, OP_Dup, 0, 1);
- addr = sqlite3VdbeOp3(v, OP_String, 0, 0, "ok", P3_STATIC);
+ addr = sqlite3VdbeOp3(v, OP_String8, 0, 0, "ok", P3_STATIC);
sqlite3VdbeAddOp(v, OP_Eq, 0, addr+6);
- sqlite3VdbeOp3(v, OP_String, 0, 0,
+ sqlite3VdbeOp3(v, OP_String8, 0, 0,
sqlite3MPrintf("*** in database %s ***\n", db->aDb[i].zName),
P3_DYNAMIC);
sqlite3VdbeAddOp(v, OP_Pull, 1, 0);
int k, jmp2;
static VdbeOpList idxErr[] = {
{ OP_MemIncr, 0, 0, 0},
- { OP_String, 0, 0, "rowid "},
+ { OP_String8, 0, 0, "rowid "},
{ OP_Recno, 1, 0, 0},
- { OP_String, 0, 0, " missing from index "},
- { OP_String, 0, 0, 0}, /* 4 */
+ { OP_String8, 0, 0, " missing from index "},
+ { OP_String8, 0, 0, 0}, /* 4 */
{ OP_Concat, 4, 0, 0},
{ OP_Callback, 1, 0, 0},
};
{ OP_MemLoad, 2, 0, 0},
{ OP_Eq, 0, 0, 0}, /* 7 */
{ OP_MemIncr, 0, 0, 0},
- { OP_String, 0, 0, "wrong # of entries in index "},
- { OP_String, 0, 0, 0}, /* 10 */
+ { OP_String8, 0, 0, "wrong # of entries in index "},
+ { OP_String8, 0, 0, 0}, /* 10 */
{ OP_Concat, 2, 0, 0},
{ OP_Callback, 1, 0, 0},
};
** This file contains C code routines that are called by the parser
** to handle SELECT statements in SQLite.
**
-** $Id: select.c,v 1.181 2004/05/28 13:13:02 danielk1977 Exp $
+** $Id: select.c,v 1.182 2004/05/29 11:24:50 danielk1977 Exp $
*/
#include "sqliteInt.h"
sqlite3VdbeAddOp(v, OP_Distinct, distinct, sqlite3VdbeCurrentAddr(v)+3);
sqlite3VdbeAddOp(v, OP_Pop, pEList->nExpr+1, 0);
sqlite3VdbeAddOp(v, OP_Goto, 0, iContinue);
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
sqlite3VdbeAddOp(v, OP_PutStrKey, distinct, 0);
}
case SRT_Union: {
sqlite3VdbeAddOp(v, OP_MakeRecord, nColumn, NULL_ALWAYS_DISTINCT);
sqlite3VdbeChangeP3(v, -1, aff, P3_STATIC);
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
sqlite3VdbeAddOp(v, OP_PutStrKey, iParm, 0);
break;
}
aff = sqlite3CompareAffinity(pEList->a[0].pExpr, aff);
affStr = sqlite3AffinityString(aff);
sqlite3VdbeOp3(v, OP_MakeKey, 1, 0, affStr, P3_STATIC);
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
sqlite3VdbeAddOp(v, OP_PutStrKey, (iParm&0x0000FFFF), 0);
}
sqlite3VdbeChangeP2(v, addr2, sqlite3VdbeCurrentAddr(v));
sqlite3VdbeAddOp(v, OP_Pop, 1, 0);
sqlite3VdbeAddOp(v, OP_Goto, 0, sqlite3VdbeCurrentAddr(v)+3);
sqlite3VdbeOp3(v, OP_MakeKey, 1, 0, "n", P3_STATIC);
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
sqlite3VdbeAddOp(v, OP_PutStrKey, (iParm&0x0000FFFF), 0);
break;
}
}
}
if( pGroupBy==0 ){
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
sqlite3VdbeAddOp(v, OP_AggFocus, 0, 0);
}
}
/* Initialize the memory cell to NULL
*/
if( eDest==SRT_Mem ){
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
sqlite3VdbeAddOp(v, OP_MemStore, iParm, 1);
}
if( !db->init.busy ){
static VdbeOpList insertTrig[] = {
{ OP_NewRecno, 0, 0, 0 },
- { OP_String, 0, 0, "trigger" },
- { OP_String, 0, 0, 0 }, /* 2: trigger name */
- { OP_String, 0, 0, 0 }, /* 3: table name */
+ { OP_String8, 0, 0, "trigger" },
+ { OP_String8, 0, 0, 0 }, /* 2: trigger name */
+ { OP_String8, 0, 0, 0 }, /* 3: table name */
{ OP_Integer, 0, 0, 0 },
- { OP_String, 0, 0, "CREATE TRIGGER "},
- { OP_String, 0, 0, 0 }, /* 6: SQL */
+ { OP_String8, 0, 0, "CREATE TRIGGER "},
+ { OP_String8, 0, 0, 0 }, /* 6: SQL */
{ OP_Concat, 2, 0, 0 },
{ OP_MakeRecord, 5, 0, "tttit" },
{ OP_PutIntKey, 0, 0, 0 },
int base;
static VdbeOpList dropTrigger[] = {
{ OP_Rewind, 0, ADDR(9), 0},
- { OP_String, 0, 0, 0}, /* 1 */
+ { OP_String8, 0, 0, 0}, /* 1 */
{ OP_Column, 0, 1, 0},
{ OP_Ne, 0, ADDR(8), 0},
- { OP_String, 0, 0, "trigger"},
+ { OP_String8, 0, 0, "trigger"},
{ OP_Column, 0, 0, 0},
{ OP_Ne, 0, ADDR(8), 0},
{ OP_Delete, 0, 0, 0},
** This file contains C code routines that are called by the parser
** to handle UPDATE statements.
**
-** $Id: update.c,v 1.80 2004/05/26 10:11:06 danielk1977 Exp $
+** $Id: update.c,v 1.81 2004/05/29 11:24:50 danielk1977 Exp $
*/
#include "sqliteInt.h"
}
for(i=0; i<pTab->nCol; i++){
if( i==pTab->iPKey ){
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
continue;
}
j = aXRef[i];
*/
for(i=0; i<pTab->nCol; i++){
if( i==pTab->iPKey ){
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
continue;
}
j = aXRef[i];
** in this file for details. If in doubt, do not deviate from existing
** commenting and indentation practices when changing or adding code.
**
-** $Id: vdbe.c,v 1.346 2004/05/29 02:37:19 danielk1977 Exp $
+** $Id: vdbe.c,v 1.347 2004/05/29 11:24:50 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include "os.h"
break;
}
-#if 0
/* Opcode: String8 * * P3
**
-** This opcode does not exist at vdbe execution time.
+** P3 points to a nul terminated UTF-8 string. This opcode is transformed
+** into an OP_String before it is executed for the first time.
*/
case OP_String8: {
- break;
+ pOp->opcode = OP_String;
+
+ if( db->enc!=TEXT_Utf8 && pOp->p3 ){
+ if( db->enc==TEXT_Utf16le ){
+ pOp->p3 = sqlite3utf8to16le(pOp->p3, -1);
+ }else{
+ pOp->p3 = sqlite3utf8to16be(pOp->p3, -1);
+ }
+ if( !pOp->p3 ) goto no_mem;
+ }
+
+ /* Fall through to the next case, OP_String */
}
-#endif
/* Opcode: String * * P3
**
if( pOp->p3 ){
pTos->flags = MEM_Str|MEM_Static|MEM_Term;
pTos->z = pOp->p3;
- pTos->n = strlen(pTos->z);
- pTos->enc = TEXT_Utf8;
- sqlite3VdbeChangeEncoding(pTos, db->enc);
-/*
if( db->enc==TEXT_Utf8 ){
pTos->n = strlen(pTos->z);
}else{
pTos->n = sqlite3utf16ByteLen(pTos->z, -1);
}
pTos->enc = db->enc;
-*/
}else{
pTos->flags = MEM_Null;
}
break;
}
-#if 0
/* Opcode: HexBlob * * P3
**
-** This opcode does not exist at vdbe execution time.
+** P3 is an SQL hex encoding of a blob. The blob is pushed
+** onto the vdbe stack.
+**
+** The first time this instruction executes, in transforms
+** itself into a 'Blob' opcode with a binary blob as P3.
*/
case OP_HexBlob: {
- break;
+ pOp->opcode = OP_Blob;
+ pOp->p1 = strlen(pOp->p3)/2;
+ if( pOp->p1 ){
+ char *zBlob = sqlite3HexToBlob(pOp->p3);
+ if( !zBlob ) goto no_mem;
+ if( pOp->p3type==P3_DYNAMIC ){
+ sqliteFree(pOp->p3);
+ }
+ pOp->p3 = zBlob;
+ pOp->p3type = P3_DYNAMIC;
+ }else{
+ pOp->p3type = P3_STATIC;
+ pOp->p3 = "";
+ }
+
+ /* Fall through to the next case, OP_Blob. */
}
-#endif
/* Opcode: Blob P1 * P3
**
return rc;
}
-/*
-** If pOp is an OP_HexBlob opcode, then transform it to an OP_Blob
-** opcode.
-*/
-static int translateOp(Op *pOp, u8 enc){
-
- if( pOp->opcode==OP_HexBlob ){
- pOp->p1 = strlen(pOp->p3)/2;
- if( pOp->p1 ){
- char *zBlob = sqlite3HexToBlob(pOp->p3);
- if( !zBlob ) return SQLITE_NOMEM;
- if( pOp->p3type==P3_DYNAMIC ){
- sqliteFree(pOp->p3);
- }
- pOp->p3 = zBlob;
- pOp->p3type = P3_DYNAMIC;
- }else{
- pOp->p3type = P3_STATIC;
- pOp->p3 = "";
- }
- pOp->opcode = OP_Blob;
- }
-
- else if( pOp->opcode==OP_String8 ){
- if( pOp->p3 ){
- void *z = 0;
- switch( enc ){
- case TEXT_Utf16be:
- z = sqlite3utf8to16be(pOp->p3, -1);
- if( !z ) return SQLITE_NOMEM;
- break;
- case TEXT_Utf16le:
- z = sqlite3utf8to16be(pOp->p3, -1);
- if( !z ) return SQLITE_NOMEM;
- break;
- }
- if( z ){
- if( pOp->p3type==P3_DYNAMIC ) sqliteFree( pOp->p3 );
-
- }
- }
- pOp->opcode = OP_String;
- }
-
- return SQLITE_OK;
-}
-
/*
** Prepare a virtual machine for execution. This involves things such
** as allocating stack space and initializing the program counter.
}
}
#endif
- if( !isExplain ){
- int i;
- for(i=0; i<p->nOp; i++){
- translateOp(&p->aOp[i], p->db->enc);
- }
- }
}
** This module contains C code that generates VDBE code used to process
** the WHERE clause of SQL statements.
**
-** $Id: where.c,v 1.100 2004/05/20 22:16:30 drh Exp $
+** $Id: where.c,v 1.101 2004/05/29 11:24:50 danielk1977 Exp $
*/
#include "sqliteInt.h"
if( i>0 && (pTabList->a[i-1].jointype & JT_LEFT)!=0 ){
if( !pParse->nMem ) pParse->nMem++;
pLevel->iLeftJoin = pParse->nMem++;
- sqlite3VdbeAddOp(v, OP_String, 0, 0);
+ sqlite3VdbeAddOp(v, OP_String8, 0, 0);
sqlite3VdbeAddOp(v, OP_MemStore, pLevel->iLeftJoin, 1);
}