From de58ddb709e70da7a83d028c0d41682566ebe3b4 Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 5 Jan 2009 22:30:38 +0000 Subject: [PATCH] The fix in (6111) was not quite right. This version works better. (CVS 6113) FossilOrigin-Name: 5f80140a2df48fd43a7cbc0990de0205004541b0 --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/vdbe.c | 6 ++++-- src/vdbemem.c | 3 +-- test/fuzz.test | 19 ++++++++++++++++++- 5 files changed, 32 insertions(+), 14 deletions(-) diff --git a/manifest b/manifest index cb27c2d6cd..63fbef302b 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Reenable\sfuzz\stesting\sfor\sall.test.\s\sMake\ssure\sthe\squery\sflattener\scopies\nover\saggregate\sinformation\sfrom\sexpressions\son\souter\squery\sterms\swhile\nflattening.\s(CVS\s6112) -D 2009-01-05T19:36:30 +C The\sfix\sin\s(6111)\swas\snot\squite\sright.\s\sThis\sversion\sworks\sbetter.\s(CVS\s6113) +D 2009-01-05T22:30:39 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 05461a9b5803d5ad10c79f989801e9fd2cc3e592 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -198,13 +198,13 @@ F src/update.c 8c4925f9ca664effc8a1faaad67449d2074567b1 F src/utf.c 1da9c832dba0fa8f865b5b902d93f420a1ee4245 F src/util.c ea62608f66f33a7e8322de83024ae37c415c0c7f F src/vacuum.c 383d6297bddc011ab04a9eed110db6eaf523e8e9 -F src/vdbe.c d30c6c3e022ff0c4ff0202adfcaf38b89cb642ee +F src/vdbe.c 4e9b83e758a43882a29fe5cde479acb1db04f7dd F src/vdbe.h 03516f28bf5aca00a53c4dccd6c313f96adb94f6 F src/vdbeInt.h 5530e45fc64c1572f123aca384096e1b84cf834b F src/vdbeapi.c 85c33cfbfa56249cbe627831610afafba754477d F src/vdbeaux.c f8bf57ba0f7ec1fc1fe3997be1cb30d08553fa5c F src/vdbeblob.c b0dcebfafedcf9c0addc7901ad98f6f986c08935 -F src/vdbemem.c f9c859ac17e2e05a0f249868ce4f191f69edd31d +F src/vdbemem.c 19f94b504d3da44b31aef200fa6c8e07862de2e8 F src/vtab.c e39e011d7443a8d574b1b9cde207a35522e6df43 F src/walker.c 488c2660e13224ff70c0c82761118efb547f8f0d F src/where.c b25a7ecf75cfdd7de430934f62f9e17083b9b806 @@ -372,7 +372,7 @@ F test/fts3expr.test 000f05df771e203187ceac49ad21c303c720b783 F test/fts3expr2.test 8501de895a4c0631e7226c9bac055cd49c9f6646 F test/fts3near.test dc196dd17b4606f440c580d45b3d23aa975fd077 F test/func.test a50f0a4b69ac251debe1dce3ba29da7476dc8c52 -F test/fuzz.test 2b61d118b522ac13b6fec307352ec31edd060da2 +F test/fuzz.test d61b2331e96377e841933f6f7e09c19b98507358 F test/fuzz2.test ea38692ce2da99ad79fe0be5eb1a452c1c4d37bb F test/fuzz3.test aec64345184d1662bd30e6a17851ff659d596dc5 F test/fuzz_common.tcl a87dfbb88c2a6b08a38e9a070dabd129e617b45b @@ -692,7 +692,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e -P b2131e868a3a948ba81f7458270493085da1ae60 -R 1fa18bdeafa91fbbe120bff65ee7745c +P e02323b3629545a3e7e7db0d4edc76807ae903aa +R 6a1cebd9a416c70b164dcd586784c60c U drh -Z 20ff9d208929f79b9a7e14a4a2f0a57a +Z c2d25fe5d548e72eabbcd21f487ef164 diff --git a/manifest.uuid b/manifest.uuid index 4855773cb3..ef7067da75 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e02323b3629545a3e7e7db0d4edc76807ae903aa \ No newline at end of file +5f80140a2df48fd43a7cbc0990de0205004541b0 \ No newline at end of file diff --git a/src/vdbe.c b/src/vdbe.c index fd6a7928aa..18f40b13a0 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -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.809 2009/01/05 18:02:27 drh Exp $ +** $Id: vdbe.c,v 1.810 2009/01/05 22:30:39 drh Exp $ */ #include "sqliteInt.h" #include @@ -1522,8 +1522,10 @@ case OP_ToBlob: { /* same as TK_TO_BLOB, in1 */ if( (pIn1->flags & MEM_Blob)==0 ){ applyAffinity(pIn1, SQLITE_AFF_TEXT, encoding); assert( pIn1->flags & MEM_Str || db->mallocFailed ); + MemSetTypeFlag(pIn1, MEM_Blob); + }else{ + pIn1->flags &= ~(MEM_TypeMask&~MEM_Blob); } - MemSetTypeFlag(pIn1, MEM_Blob); UPDATE_MAX_BLOBSIZE(pIn1); break; } diff --git a/src/vdbemem.c b/src/vdbemem.c index 6c586a7038..f97d4a9507 100644 --- a/src/vdbemem.c +++ b/src/vdbemem.c @@ -15,7 +15,7 @@ ** only within the VDBE. Interface routines refer to a Mem using the ** name sqlite_value ** -** $Id: vdbemem.c,v 1.133 2008/12/10 19:26:24 drh Exp $ +** $Id: vdbemem.c,v 1.134 2009/01/05 22:30:39 drh Exp $ */ #include "sqliteInt.h" #include @@ -464,7 +464,6 @@ void sqlite3VdbeMemSetNull(Mem *pMem){ */ void sqlite3VdbeMemSetZeroBlob(Mem *pMem, int n){ sqlite3VdbeMemRelease(pMem); - MemSetTypeFlag(pMem, MEM_Blob); pMem->flags = MEM_Blob|MEM_Zero; pMem->type = SQLITE_BLOB; pMem->n = 0; diff --git a/test/fuzz.test b/test/fuzz.test index 5f06cd095a..44bbee588d 100644 --- a/test/fuzz.test +++ b/test/fuzz.test @@ -19,7 +19,7 @@ # # The most complicated trees are for SELECT statements. # -# $Id: fuzz.test,v 1.15 2009/01/05 19:36:30 drh Exp $ +# $Id: fuzz.test,v 1.16 2009/01/05 22:30:39 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -248,6 +248,23 @@ do_test fuzz-1.16.4 { } } {} +do_test fuzz-1.17 { + catchsql { + SELECT 'hardware', 56.1 NOTNULL, random()&0 + FROM ( + SELECT ALL lower(~ EXISTS ( + SELECT 1 NOT IN (SELECT ALL 1) + )), CAST(456 AS integer), -2147483647 + FROM ( + SELECT DISTINCT -456, CAST(1 AS integer) ISNULL + FROM (SELECT ALL 2147483647, typeof(2147483649)) + ) + ) + GROUP BY CAST(CAST('experiments' AS blob) AS blob) + HAVING random() + } +} {0 {hardware 1 0}} + #---------------------------------------------------------------- # Test some fuzzily generated expressions. #