-C Fix\sanother\sproblem\swith\sreusing\sLSM\scursors\sfor\srange\sscans.
-D 2018-07-07T20:26:30.030
+C Simplifications\sto\sthe\simplementation\sof\sthe\ssum()\sSQL\sfunction.
+D 2018-07-07T20:55:16.666
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F Makefile.in 0a3a6c81e6fcb969ff9106e882f0a08547014ba463cb6beca4c4efaecc924ee6
F src/expr.c 7e257eeffe9553c10a6ac0a1f0177bf740c4da834e7d6e2cbb7d3ebaa3d7f3e1
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
F src/fkey.c b1da9ef8dc834603bb0d28972378a7ce65897847f9a1e89ab800bbdf24c788ee
-F src/func.c e3174d1f10dbaef9478a243d4a4d51135a9092d73ceaeafac3663aeff60737c4
+F src/func.c e94214037dbc9d258ece54434fe120b419880550239c80dcd101afe7b2a51131
F src/global.c 9bf034fd560bdd514715170ed8460bb7f823cec113f0569ef3f18a20c7ccd128
F src/hash.c a12580e143f10301ed5166ea4964ae2853d3905a511d4e0c44497245c7ce1f7a
F src/hash.h ab34c5c54a9e9de2e790b24349ba5aab3dbb4fd4
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 4b8cfe7bfe5f049eb4607fd480429fcd2060e691891d8bffc9917f13fa373988
-R 30589e318928e413de309a69449a613b
-U dan
-Z 36c3a96195f8670c51ccae820f038ab1
+P ae3fc7652f27ba0a86f4c26f64c2e148d9496a5edb7f54dc9980edd91c326e4f
+R 7fefa3b6e3f1ad000f6b20afb58dadef
+U drh
+Z a5540dd7ff49b20c02f142203cdf3720
i64 v = sqlite3_value_int64(argv[0]);
p->rSum += v;
if( (p->approx|p->overflow)==0 && sqlite3AddInt64(&p->iSum, v) ){
- p->overflow = 1;
+ p->approx = p->overflow = 1;
}
}else{
p->rSum += sqlite3_value_double(argv[0]);
/* p is always non-NULL because sumStep() will have been called first
** to initialize it */
if( ALWAYS(p) && type!=SQLITE_NULL ){
+ assert( p->cnt>0 );
p->cnt--;
- if( type==SQLITE_INTEGER ){
+ assert( type==SQLITE_INTEGER || p->approx );
+ if( type==SQLITE_INTEGER && p->approx==0 ){
i64 v = sqlite3_value_int64(argv[0]);
p->rSum -= v;
- if( (p->approx|p->overflow)==0 && sqlite3AddInt64(&p->iSum, -1*v) ){
- p->overflow = 1;
- }
+ p->iSum -= v;
}else{
p->rSum -= sqlite3_value_double(argv[0]);
- p->approx = 1;
}
}
}