]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Change the way an Expr that has been converted to TK_REGISTER stores its original...
authordan <dan@noemail.net>
Wed, 19 Aug 2009 17:17:00 +0000 (17:17 +0000)
committerdan <dan@noemail.net>
Wed, 19 Aug 2009 17:17:00 +0000 (17:17 +0000)
FossilOrigin-Name: 71ea9d0e148fbd3d633651c61c81044e37cf88b9

manifest
manifest.uuid
src/expr.c
src/sqliteInt.h
src/vdbemem.c

index d114685acf38210c741b091106b42610372c4aa2..9a8b84c337a1d7788b6a47c56e9216f4227f5593 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\san\sassert()\sfailure\sthat\smay\sfollow\san\sOOM\serror.
-D 2009-08-19T16:34:31
+C Change\sthe\sway\san\sExpr\sthat\shas\sbeen\sconverted\sto\sTK_REGISTER\sstores\sits\soriginal\sopcode.\sThe\sprevious\smethod,\soverloading\sExpr.iColumn,\sdid\snot\swork\sin\sall\scases.
+D 2009-08-19T17:17:01
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in 0f7761c5d1c62ae7a841e3393ffaff1fa0f5c00a
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -114,7 +114,7 @@ F src/callback.c cb68b21b0d4ae7d11ae0e487933bce3323784dcf
 F src/complete.c 5ad5c6cd4548211867c204c41a126d73a9fbcea0
 F src/date.c ab5f7137656652a48434d64f96bdcdc823bb23b3
 F src/delete.c dcf07632d8ca3d4086df8b65ea907a47278e6382
-F src/expr.c 1dac211523b00d504c35e72b6d28d97621895420
+F src/expr.c 335d3008417050a6992ecf2c78819f2911a7cb18
 F src/fault.c dc88c821842157460750d2d61a8a8b4197d047ff
 F src/func.c e536218d193b8d326aab91120bc4c6f28aa2b606
 F src/global.c 271952d199a8cc59d4ce840b3bbbfd2f30c8ba32
@@ -163,7 +163,7 @@ F src/select.c 67b0778c9585905c8aa75aaa469e76ef3c1d315a
 F src/shell.c db2643650b9268df89a4bedca3f1c6d9e786f1bb
 F src/sqlite.h.in 3ccf717d82101f19548d0b1243f0a6f4854d51ee
 F src/sqlite3ext.h 1db7d63ab5de4b3e6b83dd03d1a4e64fef6d2a17
-F src/sqliteInt.h a9516142b907d890150847edbe3c9831acd9acb1
+F src/sqliteInt.h 36a21a90b67f9a14868bd56086b997726dfb0a34
 F src/sqliteLimit.h ffe93f5a0c4e7bd13e70cd7bf84cfb5c3465f45d
 F src/status.c 237b193efae0cf6ac3f0817a208de6c6c6ef6d76
 F src/table.c cc86ad3d6ad54df7c63a3e807b5783c90411a08d
@@ -211,7 +211,7 @@ F src/vdbeInt.h 831c254a6eef237ef4664c8381a0137586567007
 F src/vdbeapi.c 0ab8ada7260b32031ca97f338caecf0812460624
 F src/vdbeaux.c 4956536a636468fd07284028c39aab65ea99777e
 F src/vdbeblob.c a3f3e0e877fc64ea50165eec2855f5ada4477611
-F src/vdbemem.c afd6ce02945e659f65642f290a37ccf4a88c4dcb
+F src/vdbemem.c 6075cc7f8ea3064c3229ad30dd0f23903ea4e035
 F src/vtab.c aedd76e8670d5a5379f93804398d3ba960125547
 F src/walker.c 1edca756275f158b80f20eb6f104c8d3fcc96a04
 F src/where.c 2e61e33f3649ef5940ef63ed285d37d03bc03dc5
@@ -747,7 +747,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl 672f81d693a03f80f5ae60bfefacd8a349e76746
-P 740a93e89c5f12672d72de7b3c55807deac613d4
-R 0c503f3d121dc88e27c6f16947df7b7a
+P 14a715c5639b2bc69b129485ca32e96366dab4c4
+R 89df65d7caba8e808134aaf6a22f2021
 U dan
-Z 349f817f99fd27db57dd3a92eb75a026
+Z dfc672a723805ae86ee20de2e2eef473
index 0ccacc36488081a3eb3596df61fa0ea6f4458ad1..149d082b5793a206da3b7c9237a0823200e82587 100644 (file)
@@ -1 +1 @@
-14a715c5639b2bc69b129485ca32e96366dab4c4
\ No newline at end of file
+71ea9d0e148fbd3d633651c61c81044e37cf88b9
\ No newline at end of file
index a9a4f82a319fc5b7e852449e5051693dcbe73189..60787faa28c4bcc7e9c03f5033eb4afca101971b 100644 (file)
@@ -2836,7 +2836,7 @@ static int evalConstExpr(Walker *pWalker, Expr *pExpr){
     int r2;
     r2 = sqlite3ExprCodeTarget(pParse, pExpr, r1);
     if( NEVER(r1!=r2) ) sqlite3ReleaseTempReg(pParse, r1);
-    pExpr->iColumn = pExpr->op;
+    pExpr->op2 = pExpr->op;
     pExpr->op = TK_REGISTER;
     pExpr->iTable = r2;
     return WRC_Prune;
index 0835d2b9f154a52f178cf2bbe3dce34130d1537b..0185861db081556454d837574d05919bf87b4e41 100644 (file)
@@ -1577,11 +1577,11 @@ struct Expr {
 
   int iTable;            /* TK_COLUMN: cursor number of table holding column
                          ** TK_REGISTER: register number */
-  i16 iColumn;           /* TK_COLUMN: column index.  -1 for rowid
-                         ** TK_REGISTER: original value of Expr.op */
+  i16 iColumn;           /* TK_COLUMN: column index.  -1 for rowid */
   i16 iAgg;              /* Which entry in pAggInfo->aCol[] or ->aFunc[] */
   i16 iRightJoinTable;   /* If EP_FromJoin, the right table of the join */
-  u16 flags2;            /* Second set of flags.  EP2_... */
+  u8 flags2;             /* Second set of flags.  EP2_... */
+  u8 op2;                /* If a TK_REGISTER, the original value of Expr.op */
   AggInfo *pAggInfo;     /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */
   Table *pTab;           /* Table for TK_COLUMN expressions. */
 #if SQLITE_MAX_EXPR_DEPTH>0
index 1a7108f8f62f319666106c73c24bd6b87ffc303f..afa49d54913b9d05c8f8a3dd0a5112d5fdffa02d 100644 (file)
@@ -1000,7 +1000,7 @@ int sqlite3ValueFromExpr(
   }
   op = pExpr->op;
   if( op==TK_REGISTER ){
-    op = pExpr->iColumn;
+    op = pExpr->op2;
   }
 
   if( op==TK_STRING || op==TK_FLOAT || op==TK_INTEGER ){