mirror of
https://github.com/sqlite/sqlite.git
synced 2026-10-23 21:49:02 +03:00
Fix a corner-case floating-point rounding problem in the generate_series()
virtual table, introduced by [c113e31b818d1677] and reported by [forum:/info/6e6cf9054bea2b1d|forum post 6e6cf9054bea2b1d]. FossilOrigin-Name: ff56785674ebeb1d4bab66ba0827956a2728c8c14419f933d40dc0152efbd4f5
This commit is contained in:
@@ -536,7 +536,7 @@ static int seriesFilter(
|
||||
if( r<(double)SMALLEST_INT64 ){
|
||||
iMin = SMALLEST_INT64;
|
||||
}else if( (idxNum & 0x0200)!=0 && r==seriesCeil(r) ){
|
||||
iMin = (sqlite3_int64)seriesCeil(r+1.0);
|
||||
iMin = (sqlite3_int64)seriesCeil(r)+1;
|
||||
}else{
|
||||
iMin = (sqlite3_int64)seriesCeil(r);
|
||||
}
|
||||
@@ -557,7 +557,7 @@ static int seriesFilter(
|
||||
if( r>(double)LARGEST_INT64 ){
|
||||
iMax = LARGEST_INT64;
|
||||
}else if( (idxNum & 0x2000)!=0 && r==seriesFloor(r) ){
|
||||
iMax = (sqlite3_int64)(r-1.0);
|
||||
iMax = ((sqlite3_int64)r)-1;
|
||||
}else{
|
||||
iMax = (sqlite3_int64)seriesFloor(r);
|
||||
}
|
||||
|
||||
14
manifest
14
manifest
@@ -1,5 +1,5 @@
|
||||
C Remove\sunnecessary\sand\sincorrect\sassert()\sstatements\sin\sthe\snew\s%J\scode.
|
||||
D 2026-05-07T20:45:57.859
|
||||
C Fix\sa\scorner-case\sfloating-point\srounding\sproblem\sin\sthe\sgenerate_series()\nvirtual\stable,\sintroduced\sby\s[c113e31b818d1677]\sand\sreported\sby\n[forum:/info/6e6cf9054bea2b1d|forum\spost\s6e6cf9054bea2b1d].
|
||||
D 2026-05-09T12:03:14.046
|
||||
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
@@ -394,7 +394,7 @@ F ext/misc/regexp.c 9dada9e9aa91f0cc23e35429e5d1111f110cc201b4c8dcc49aa6d2fc4b2a
|
||||
F ext/misc/remember.c add730f0f7e7436cd15ea3fd6a90fd83c3f706ab44169f7f048438b7d6baa69c
|
||||
F ext/misc/rot13.c 51ac5f51e9d5fd811db58a9c23c628ad5f333c173f1fc53c8491a3603d38556c
|
||||
F ext/misc/scrub.c df54e202887e480bf9cd73168c9ac829e3b0211381b68b9809e0cb5bc1bdc2cf
|
||||
F ext/misc/series.c 9454c7ef27d3729432496f31caabc892aeee1c21377d403f681126d93c09d6e9
|
||||
F ext/misc/series.c 496f43bac9bad2ee2cea63fb5212036f30ad3003b4cd317d5c2d6f3ad7c7d264
|
||||
F ext/misc/sha1.c 8bf60344c11a525384c2efd1ae77f160b06be336db679effaadf292d4b41451c
|
||||
F ext/misc/shathree.c fd22d70620f86a0467acfdd3acd8435d5cb54eb1e2d9ff36ae44e389826993df
|
||||
F ext/misc/showauth.c 732578f0fe4ce42d577e1c86dc89dd14a006ab52
|
||||
@@ -1705,7 +1705,7 @@ F test/sync.test a619e407ede58a7b6e3e44375328628559fc9695a9c24c47cb5690a866b0031
|
||||
F test/sync2.test 06152269ed73128782c450c355988fe8dd794d305833af75e1a5e79edd4dae47
|
||||
F test/syscall.test a067468b43b8cb2305e9f9fe414e5f40c875bb5d2cba5f00b8154396e95fcf37
|
||||
F test/sysfault.test c9f2b0d8d677558f74de750c75e12a5454719d04
|
||||
F test/tabfunc01.test cfa96a9a235c39fb0cae69928b989b28bfec108f62d2533486f76e32dcedfdfb
|
||||
F test/tabfunc01.test 7827c2dfd57a094125b059f51a2200eaf04d417af6b1e720c34a8cbf54e8a14f
|
||||
F test/table.test e87294bf1c80bfd7792142b84ab32ea5beb4f3f71e535d7fb263a6b2068377bf
|
||||
F test/tableapi.test e37c33e6be2276e3a96bb54b00eea7f321277115d10e5b30fdb52a112b432750
|
||||
F test/tableopts.test dba698ba97251017b7c80d738c198d39ab747930
|
||||
@@ -2203,8 +2203,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
|
||||
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
|
||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
|
||||
P 7e6fd838a15f08bf15d57f1887ed1019b58aa6be9eb7b162e67e0d9412082c6d
|
||||
R 06187e74abcd7ba51a19ee0ef6ec6273
|
||||
P 5a8497dbec80b55a2dedc8a6f9ee823243e01a08d37ceeed1f87214dfe527d63
|
||||
R 650fed987026b994c216b4cae3ea83b3
|
||||
U drh
|
||||
Z 9e808589c718d909177d4890282c6910
|
||||
Z 0f598f77ac40c5db91066a29b5ff49b1
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
||||
@@ -1 +1 @@
|
||||
5a8497dbec80b55a2dedc8a6f9ee823243e01a08d37ceeed1f87214dfe527d63
|
||||
ff56785674ebeb1d4bab66ba0827956a2728c8c14419f933d40dc0152efbd4f5
|
||||
|
||||
@@ -668,6 +668,39 @@ do_execsql_test 1370 {
|
||||
SELECT * FROM generate_series(0,0,0);
|
||||
} {}
|
||||
|
||||
# Forum post 2026-05-09T07:41:32Z
|
||||
set subtest 1
|
||||
foreach bound {
|
||||
9007199254740991.0
|
||||
9007199254740991.1
|
||||
9007199254740991.5
|
||||
9007199254740991.9
|
||||
9007199254740992.0
|
||||
9007199254740992.1
|
||||
9007199254740992.5
|
||||
9007199254740992.9
|
||||
9007199254740993.0
|
||||
9007199254740993.1
|
||||
9007199254740993.5
|
||||
} {
|
||||
foreach {range boundsign} {
|
||||
(+9007199254740990,+9007199254740995) +
|
||||
(-9007199254740995,-9007199254740990) -
|
||||
} {
|
||||
set bx $boundsign$bound
|
||||
foreach op {< > <= >=} {
|
||||
do_execsql_test 1380.$subtest "
|
||||
SELECT 'value $op $bx' WHERE (
|
||||
SELECT group_concat(value) FROM generate_series $range
|
||||
WHERE value $op $bx)<>(
|
||||
SELECT group_concat(value) FROM generate_series $range
|
||||
WHERE +value $op $bx);
|
||||
" {}
|
||||
incr subtest
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
reset_db
|
||||
load_static_extension db series
|
||||
do_execsql_test 1400 {
|
||||
|
||||
Reference in New Issue
Block a user