Remove an assert() in the code generator that can fail due to an invalid

INSERT statement.  The same assert() appears again in the VDBE and will fire
there if the problem persists in an SQL statement that does not contain
errors.  Gramfuzz find.

FossilOrigin-Name: 9bdd57cb9ad8ac1f4a0f1a3942d94ca5193109eeb1975343c4f0c7abf7135946
This commit is contained in:
drh 2019-12-18 01:31:21 +00:00
parent 75e95e1fcd
commit 50efa58600
4 changed files with 28 additions and 9 deletions

View File

@ -1,5 +1,5 @@
C When\sprocessing\sconstant\sinteger\svalues\sin\sORDER\sBY\sclauses\sof\swindow\ndefinitions\s(see\scheck-in\s[7e4809eadfe99ebf])\sbe\ssure\sto\sfully\sdisable\nthe\sconstant\svalue\sto\savoid\san\sinvalid\spointer\sdereference\sif\sthe\sexpression\nis\sever\sduplicated.\sThis\sfixes\sa\scrash\sreport\sfrom\sYongheng\sand\sRui.
D 2019-12-18T00:05:50.510
C Remove\san\sassert()\sin\sthe\scode\sgenerator\sthat\scan\sfail\sdue\sto\san\sinvalid\nINSERT\sstatement.\s\sThe\ssame\sassert()\sappears\sagain\sin\sthe\sVDBE\sand\swill\sfire\nthere\sif\sthe\sproblem\spersists\sin\san\sSQL\sstatement\sthat\sdoes\snot\scontain\nerrors.\s\sGramfuzz\sfind.
D 2019-12-18T01:31:21.798
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@ -479,7 +479,7 @@ F src/date.c e1d8ac7102f3f283e63e13867acb0efa33861cf34f0faf4cdbaf9fa7a1eb7041
F src/dbpage.c 135eb3b5e74f9ef74bde5cec2571192c90c86984fa534c88bf4a055076fa19b7
F src/dbstat.c 6c407e549406c10fde9ac3987f6d734459205239ad370369bc5fcd683084a4fa
F src/delete.c a5c59b9c0251cf7682bc52af0d64f09b1aefc6781a63592c8f1136f7b73c66e4
F src/expr.c 6346d23442ab7e26b1afdeb04badeb0ec49f3ce3d35dd4e3cf91a8e1e4efe22d
F src/expr.c a0330e4035f958bd5dd734fe8b05a5a9ac1c4c3a1eda4ef69b34bce6be1ce2ba
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
F src/fkey.c 92a248ec0fa4ed8ab60c98d9b188ce173aaf218f32e7737ba77deb2a684f9847
F src/func.c ed33e38cd642058182a31a3f518f2e34f4bbe53aa483335705c153c4d3e50b12
@ -1294,7 +1294,7 @@ F test/schema6.test e4bd1f23d368695eb9e7b51ef6e02ca0642ea2ab4a52579959826b5e7dce
F test/schemafault.test 1936bceca55ac82c5efbcc9fc91a1933e45c8d1e1d106b9a7e56c972a5a2a51e
F test/securedel.test 2f70b2449186a1921bd01ec9da407fbfa98c3a7a5521854c300c194b2ff09384
F test/securedel2.test 2d54c28e46eb1fd6902089958b20b1b056c6f1c5
F test/select1.test 703154cbf66d0a9fbbd5b771dc3d2c4d3700121d133d695958d4a9c5a33251e8
F test/select1.test b887331202618dbdabed92446b661ebd95a55ef3923700af56ed71266e9c1157
F test/select2.test 352480e0e9c66eda9c3044e412abdf5be0215b56
F test/select3.test 3905450067c28766bc83ee397f6d87342de868baa60f2bcfd00f286dfbd62cb9
F test/select4.test 5389d9895968d1196c457d59b3ee6515d771d328
@ -1852,7 +1852,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 8223e79f987feda5c8e51ec52cec6798cca16d070b10558939e2888ca1a25b8e
R b2173cceb9c7cb44c37df84c9f42b08c
P 1ca0bd982ab1183bbafce0d260e4dceda5eb766ed2e7793374a88d1ae0bdd2ca
R 092a651653668f530eef3aa12db79af2
U drh
Z 156cc4a0e438e4b57215f0738876dab1
Z 46ff68601fa617a2914722b9a7e1adba

View File

@ -1 +1 @@
1ca0bd982ab1183bbafce0d260e4dceda5eb766ed2e7793374a88d1ae0bdd2ca
9bdd57cb9ad8ac1f4a0f1a3942d94ca5193109eeb1975343c4f0c7abf7135946

View File

@ -3507,7 +3507,6 @@ int sqlite3ExprCodeGetColumn(
** over to iTo..iTo+nReg-1.
*/
void sqlite3ExprCodeMove(Parse *pParse, int iFrom, int iTo, int nReg){
assert( iFrom>=iTo+nReg || iFrom+nReg<=iTo );
sqlite3VdbeAddOp3(pParse->pVdbe, OP_Move, iFrom, iTo, nReg);
}

View File

@ -1165,4 +1165,24 @@ do_execsql_test select1-18.4 {
);
} {1}
# 2019-12-17 gramfuzz find
#
do_execsql_test select-19.10 {
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(x);
} {}
do_catchsql_test select-19.20 {
INSERT INTO t1
SELECT 1,2,3,4,5,6,7
UNION ALL SELECT 1,2,3,4,5,6,7
ORDER BY 1;
} {1 {table t1 has 1 columns but 7 values were supplied}}
do_catchsql_test select-19.21 {
INSERT INTO t1
SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
ORDER BY 1;
} {1 {table t1 has 1 columns but 15 values were supplied}}
finish_test