]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
In the STAT4 computations, ensure that the aAvgEq values do not go negative.
authordrh <drh@noemail.net>
Wed, 11 Jan 2017 14:21:20 +0000 (14:21 +0000)
committerdrh <drh@noemail.net>
Wed, 11 Jan 2017 14:21:20 +0000 (14:21 +0000)
FossilOrigin-Name: 4f83f6806aa6816656668feb181369500cc2cf0f

manifest
manifest.uuid
src/analyze.c

index 040a26386c316a24c1cf191edf22cd48cabe0869..12a57e3ec20c96dc80e6231dfe5c120097ea9236 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C When\sthe\s[https://www.sqlite.org/queryplanner.html#partialsort|block\ssorting\soptimization]\nis\sused\sin\sa\sscalar\ssubquery,\sbe\ssure\sto\sexit\sthe\sloop\sas\ssoon\sas\sthe\sfirst\nvalid\soutput\srow\sis\sreceived.\s\sFix\sfor\sticket\s[cb3aa0641d9a4]\sbackported\nto\sthe\s3.8.9\sbranch.
-D 2016-11-02T16:29:31.767
+C In\sthe\sSTAT4\scomputations,\sensure\sthat\sthe\saAvgEq\svalues\sdo\snot\sgo\snegative.
+D 2017-01-11T14:21:20.464
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 00d12636df7a5b08af09116bcd6c7bfd49b8b3b4
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -167,7 +167,7 @@ F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
 F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
 F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
 F src/alter.c d23d6b6991f66b383934f137fd4384d93fb98c81
-F src/analyze.c 91540f835163d5369ccbae78e2e6c74d0dd53c1d
+F src/analyze.c 92d7ab85ded7d16f424ee388d250bd99c64302de
 F src/attach.c 880f9b8641a829c563e52dd13c452ce457ae4dd8
 F src/auth.c b56c78ebe40a2110fd361379f7e8162d23f92240
 F src/backup.c ff743689c4d6c5cb55ad42ed9d174b2b3e71f1e3
@@ -1250,8 +1250,8 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 0c3cafb7ebb887dbfa2652f8bf69b52ed265c344
-Q +cdbb0947f9ce18d6d7e29ffab5ea6a2ee5365fbb
-R 0ca355757bfd5962ad4a42a2588ffcb2
+P 8e4ba115ededca6da78f0679bc9eff08af9365a8
+Q +f58f75b5a06f88ba97bd1a02bee621c64691c6f8
+R c46478f413590926eaa6b50e1920f2e4
 U drh
-Z 06b72ef4a69c8c5e130f0b97301b13ac
+Z 7b14c592121e5bb4456e4edab32575c6
index edfa8996b577b28459b547163189b5525bf0f9d1..18862a59fe753a0853474a1b5700d4c03c9e0870 100644 (file)
@@ -1 +1 @@
-8e4ba115ededca6da78f0679bc9eff08af9365a8
\ No newline at end of file
+4f83f6806aa6816656668feb181369500cc2cf0f
\ No newline at end of file
index fec2bdb39dc279dd0d4341e391adf0b17bd4dd6a..7b01d70e0561c71b55d830749982a4ddbca8b3c0 100644 (file)
@@ -1619,7 +1619,7 @@ static void initAvgEq(Index *pIdx){
         }
       }
 
-      if( nDist100>nSum100 ){
+      if( nDist100>nSum100 && sumEq<nRow ){
         avgEq = ((i64)100 * (nRow - sumEq))/(nDist100 - nSum100);
       }
       if( avgEq==0 ) avgEq = 1;