From: dan Date: Mon, 27 Nov 2017 17:56:14 +0000 (+0000) Subject: Fix a faulty NEVER assert() that could fail for SQLITE_ENABLE_STAT4 builds X-Git-Tag: version-3.22.0~177 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7ac2d48eba5973fea8998ad80523ea5537b2b53f;p=thirdparty%2Fsqlite.git Fix a faulty NEVER assert() that could fail for SQLITE_ENABLE_STAT4 builds that use foreign keys. FossilOrigin-Name: 465350e55ddaf30cfba7874653301de7238a9dc2bc5e1f800fc95de9360679f6 --- diff --git a/manifest b/manifest index d1e9d5f842..24f6855872 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\san\sCSV\soutput\squoting\sproblem\sin\sthe\scommand-line\sshell\son\sWindows. -D 2017-11-26T02:14:18.907 +C Fix\sa\sfaulty\sNEVER\sassert()\sthat\scould\sfail\sfor\sSQLITE_ENABLE_STAT4\sbuilds\nthat\suse\sforeign\skeys. +D 2017-11-27T17:56:14.310 F Makefile.in 6a879cbf01e37f9eac131414955f71774b566502d9a57ded1b8585b507503cb8 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc e5d7606238f55816da99f719969598df5b091aa2e9a6935c9412fcae8f53fc44 @@ -546,7 +546,7 @@ F src/vdbeInt.h 1fe00770144c12c4913128f35262d11527ef3284561baaab59b947a41c08d0d9 F src/vdbeapi.c 9c670ca0dcc1cd86373aa353b747b26fe531ca5cd4331690c611d1f03842e2a1 F src/vdbeaux.c b02a1f842c0e916285643b8475b7189f10b76f9e7edb5e2353a913c7980f90b5 F src/vdbeblob.c f5c70f973ea3a9e915d1693278a5f890dc78594300cf4d54e64f2b0917c94191 -F src/vdbemem.c 2ef9e66b301a1e575e32966c4c0fd4844e8eea37a2f02bae78c4f68f50a6ab30 +F src/vdbemem.c 6e6082377183b8fd8d6f2bce45250b4c2e89bfeb534a094cd8612dae8aaa2fda F src/vdbesort.c 731a09e5cb9e96b70c394c1b7cf3860fbe84acca7682e178615eb941a3a0ef2f F src/vdbetrace.c 48e11ebe040c6b41d146abed2602e3d00d621d7ebe4eb29b0a0f1617fd3c2f6c F src/vtab.c 0e4885495172e1bdf54b12cce23b395ac74ef5729031f15e1bc1e3e6b360ed1a @@ -787,7 +787,7 @@ F test/fkey3.test 76d475c80b84ee7a5d062e56ccb6ea68882e2b49 F test/fkey4.test 86446017011273aad8f9a99c1a65019e7bd9ca9d F test/fkey5.test 24dd28eb3d9f1b5a174f47e9899ace5facb08373a4223593c8c631e6cf9f7d5a F test/fkey6.test d078a1e323a740062bed38df32b8a736fd320dc0 -F test/fkey7.test 72e915890ee4a005daaf3002cb208e8fe973ac13 +F test/fkey7.test 24076d43d3449f12f25503909ca4bfb5fc5fefd5af1f930723a496343eb28454 F test/fkey8.test e5372e32cdb4481f121ec3550703eeb7b4e0762c F test/fkey_malloc.test 594a7ea1fbab553c036c70813cd8bd9407d63749 F test/fordelete.test eb93a2f34137bb87bdab88fcab06c0bd92719aff @@ -1678,7 +1678,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 24d7058e2799133dd681d2fef341025ca50554861bb4cd39e93ee87ae1d8a605 -R 8e5988afe15fc17639c16180584a05a2 -U drh -Z 78b26e27b3171f1fcd46be47e5730c56 +P 6500cdbd36b0169f37fe363c49182b3e30477a51bb521c2a964555cd086a5589 +R 0247a4bb86c66f994a19293f6b9d8594 +U dan +Z a556263a76630f97a74cefb44456d7c1 diff --git a/manifest.uuid b/manifest.uuid index 9e0d368055..51e3848821 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -6500cdbd36b0169f37fe363c49182b3e30477a51bb521c2a964555cd086a5589 \ No newline at end of file +465350e55ddaf30cfba7874653301de7238a9dc2bc5e1f800fc95de9360679f6 \ No newline at end of file diff --git a/src/vdbemem.c b/src/vdbemem.c index f9f58c43f4..3ec7394a45 100644 --- a/src/vdbemem.c +++ b/src/vdbemem.c @@ -1321,7 +1321,7 @@ static int valueFromExpr( assert( pExpr!=0 ); while( (op = pExpr->op)==TK_UPLUS || op==TK_SPAN ) pExpr = pExpr->pLeft; - if( NEVER(op==TK_REGISTER) ) op = pExpr->op2; + if( op==TK_REGISTER ) op = pExpr->op2; /* Compressed expressions only appear when parsing the DEFAULT clause ** on a table column definition, and hence only when pCtx==0. This diff --git a/test/fkey7.test b/test/fkey7.test index 6c646a9a7f..e86fc5c57b 100644 --- a/test/fkey7.test +++ b/test/fkey7.test @@ -68,4 +68,18 @@ ifcapable incrblob { } {SQLITE_CONSTRAINT} } +ifcapable stat4 { + do_execsql_test 3.0 { + CREATE TABLE p4 (id INTEGER NOT NULL PRIMARY KEY); + INSERT INTO p4 VALUES(1), (2), (3); + + CREATE TABLE c4(x INTEGER REFERENCES p4(id) DEFERRABLE INITIALLY DEFERRED); + CREATE INDEX c4_x ON c4(x); + INSERT INTO c4 VALUES(1), (2), (3); + + ANALYZE; + INSERT INTO p4(id) VALUES(4); + } +} + finish_test