]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Transform OP_HexBlob and OP_String8 to OP_Blob and OP_String the first time they...
authordanielk1977 <danielk1977@noemail.net>
Sat, 29 May 2004 11:24:50 +0000 (11:24 +0000)
committerdanielk1977 <danielk1977@noemail.net>
Sat, 29 May 2004 11:24:50 +0000 (11:24 +0000)
FossilOrigin-Name: 3225de8902b0e7e60c4d9f3a5ef51bc74f57d364

12 files changed:
manifest
manifest.uuid
src/build.c
src/expr.c
src/insert.c
src/pragma.c
src/select.c
src/trigger.c
src/update.c
src/vdbe.c
src/vdbeaux.c
src/where.c

index e0c7eec100066ec91f6a64ff46aff70ffcb6ddf1..14c75d36512f3e6e88bdcf385a6b9a0762635659 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-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
@@ -26,15 +26,15 @@ F src/attach.c c315c58cb16fd6e913b3bfa6412aedecb4567fa5
 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
@@ -49,10 +49,10 @@ F src/os_win.h 5d41af24caaef6c13a2d8e2399caa1c57d45c84d
 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
@@ -64,18 +64,18 @@ F src/test3.c 5e4a6d596f982f6f47a5f9f75ede9b4a3b739968
 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
@@ -204,7 +204,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
 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
index 4fbca860fd3616d57732da3adfff0683747611b8..05c6a5bd28606408537a45bcf5ec87e59785bdba 100644 (file)
@@ -1 +1 @@
-0a6689be843e695902fbfef863f128915545499e
\ No newline at end of file
+3225de8902b0e7e60c4d9f3a5ef51bc74f57d364
\ No newline at end of file
index ace0a6bc7f1d5f9d411dd72c1c9c62b95c6e1d81..5699c5d3d43b9ed6e6d3578a066a4e66f2eae3ce 100644 (file)
@@ -23,7 +23,7 @@
 **     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>
@@ -618,7 +618,7 @@ void sqlite3StartTable(
     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);
   }
 }
@@ -1080,25 +1080,25 @@ void sqlite3EndTable(Parse *pParse, Token *pEnd, Select *pSelect){
     }
     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);
     }
@@ -1392,7 +1392,7 @@ void sqlite3DropTable(Parse *pParse, SrcList *pName, int isView){
   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},
@@ -1839,9 +1839,9 @@ void sqlite3CreateIndex(
       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 ){
@@ -1852,10 +1852,10 @@ void sqlite3CreateIndex(
       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);
@@ -1944,7 +1944,7 @@ void sqlite3DropIndex(Parse *pParse, SrcList *pName){
   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},
index 02f254bd8565450173f1560e5889a7121f4106a1..1e87ed8189f8eccce11e929d7c637c628d60f879 100644 (file)
@@ -12,7 +12,7 @@
 ** 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>
@@ -867,7 +867,7 @@ int sqlite3ExprResolveIds(
           /* 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);
         }
       }
@@ -1107,7 +1107,7 @@ void sqlite3ExprCode(Parse *pParse, Expr *pExpr){
     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;
   }
@@ -1138,7 +1138,7 @@ void sqlite3ExprCode(Parse *pParse, Expr *pExpr){
       break;
     }
     case TK_NULL: {
-      sqlite3VdbeAddOp(v, OP_String, 0, 0);
+      sqlite3VdbeAddOp(v, OP_String8, 0, 0);
       break;
     }
     case TK_VARIABLE: {
@@ -1259,7 +1259,7 @@ void sqlite3ExprCode(Parse *pParse, Expr *pExpr){
       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);
@@ -1318,7 +1318,7 @@ void sqlite3ExprCode(Parse *pParse, Expr *pExpr){
       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;
index 4741d968d16a0417092cf15ba95b4f2eb33b9e49..d798102f4ec5b9311e55f5a8bdc1b84644275e65 100644 (file)
@@ -12,7 +12,7 @@
 ** 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"
 
@@ -466,7 +466,7 @@ void sqlite3Insert(
         }
       }
       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 ){
@@ -537,7 +537,7 @@ void sqlite3Insert(
         ** 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 ){
@@ -548,7 +548,7 @@ void sqlite3Insert(
         }
       }
       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 ){
@@ -774,7 +774,7 @@ void sqlite3GenerateConstraintChecks(
         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;
       }
index 19552f24554b2cd150753ef4264accb49a7e5054..1c50d37aa0f2a657ed05a670127f66921f2964dd 100644 (file)
@@ -11,7 +11,7 @@
 *************************************************************************
 ** 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>
@@ -380,11 +380,11 @@ void sqlite3Pragma(Parse *pParse, Token *pLeft, Token *pRight, int minusFlag){
       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);
@@ -408,7 +408,7 @@ void sqlite3Pragma(Parse *pParse, Token *pLeft, Token *pRight, int minusFlag){
         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);
       }
     }
@@ -430,7 +430,7 @@ void sqlite3Pragma(Parse *pParse, Token *pLeft, Token *pRight, int minusFlag){
       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;
@@ -460,10 +460,10 @@ void sqlite3Pragma(Parse *pParse, Token *pLeft, Token *pRight, int minusFlag){
         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;
@@ -482,8 +482,8 @@ void sqlite3Pragma(Parse *pParse, Token *pLeft, Token *pRight, int minusFlag){
       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);
     }
@@ -572,7 +572,7 @@ void sqlite3Pragma(Parse *pParse, Token *pLeft, Token *pRight, int minusFlag){
       { 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},
     };
 
@@ -600,9 +600,9 @@ void sqlite3Pragma(Parse *pParse, Token *pLeft, Token *pRight, int minusFlag){
       }
       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);
@@ -635,10 +635,10 @@ void sqlite3Pragma(Parse *pParse, Token *pLeft, Token *pRight, int minusFlag){
           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},
           };
@@ -661,8 +661,8 @@ void sqlite3Pragma(Parse *pParse, Token *pLeft, Token *pRight, int minusFlag){
              { 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},
           };
index d0cbf3c0097725999778cf4e0d5e488d0f8c2eb6..9bb23b32bc69c9bbca3b8f3ab414b04baf143eed 100644 (file)
@@ -12,7 +12,7 @@
 ** 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"
 
@@ -395,7 +395,7 @@ static int selectInnerLoop(
     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);
   }
 
@@ -406,7 +406,7 @@ static int selectInnerLoop(
     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;
     }
@@ -459,7 +459,7 @@ static int selectInnerLoop(
         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));
@@ -579,7 +579,7 @@ static void generateSortTail(
       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;
     }
@@ -2343,7 +2343,7 @@ int sqlite3Select(
       }
     }
     if( pGroupBy==0 ){
-      sqlite3VdbeAddOp(v, OP_String, 0, 0);
+      sqlite3VdbeAddOp(v, OP_String8, 0, 0);
       sqlite3VdbeAddOp(v, OP_AggFocus, 0, 0);
     }
   }
@@ -2351,7 +2351,7 @@ int sqlite3Select(
   /* 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);
   }
 
index fa701e2d6694fe68cc47cf483f517e1ee9e5059d..bb449984736dd97de58dba311f925117d7628fb7 100644 (file)
@@ -209,12 +209,12 @@ void sqlite3FinishTrigger(
   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          },
@@ -474,10 +474,10 @@ void sqlite3DropTriggerPtr(Parse *pParse, Trigger *pTrigger, int nested){
     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},
index 88c683f5641c4c5fee916199b4de6b21a7646983..c38f09b869bb2717feb75f39e8d7f92ea7fb040c 100644 (file)
@@ -12,7 +12,7 @@
 ** 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"
 
@@ -279,7 +279,7 @@ void sqlite3Update(
     }
     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];
@@ -363,7 +363,7 @@ void sqlite3Update(
     */
     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];
index 6199d02dcce931c01ba01f0ea96d8402f5b2a497..19ea33fc7ed0d05faf8d705826f693f51b2ec422 100644 (file)
@@ -43,7 +43,7 @@
 ** 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"
@@ -694,15 +694,25 @@ case OP_Real: {
   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
 **
@@ -715,32 +725,44 @@ case OP_String: {
   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
 **
index 4bb52261de83014116efd6d9a7aa1d4e664432cb..0652d70b6af58db27432ed47612fa65a28882666 100644 (file)
@@ -606,53 +606,6 @@ int sqlite3VdbeList(
   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.
@@ -724,12 +677,6 @@ void sqlite3VdbeMakeReady(
     }
   }
 #endif
-  if( !isExplain ){
-    int i;
-    for(i=0; i<p->nOp; i++){
-      translateOp(&p->aOp[i], p->db->enc);
-    }
-  }
 }
 
 
index 29143aff6d45978cbd5d8a05f2b532dc93b2a0ef..166e29927d24a31200081c47a539b4248938e02a 100644 (file)
@@ -12,7 +12,7 @@
 ** 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"
 
@@ -704,7 +704,7 @@ WhereInfo *sqlite3WhereBegin(
     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);
     }