Aloha,
I noticed symptoms of Ticket 1198 on my system
and was looking over the patch to fix the problem:
http://www.sqlite.org/cvstrac/chngview?cn=2447
After applying the patch, the default busy callback handler contains:
if( count < NDELAY ){
delay = delays[count];
prior = totals[count];
}else{
delay = delays[NDELAY-1];
prior = totals[NDELAY-1] + delay*(count-NDELAY-1);
}
For the case where count == NDELAY:
prior = totals[NDELAY-1] + delay*(count-NDELAY-1);
prior = 228 + 100*(0-1);
prior = 128;
The value of "prior" is less than the previous value in the sequence,
although I would expect the sequence to be non-decreasing.
Based on the pattern of previous values, if count == NDELAY then
"prior" should be 328? I'm not sure if the current behavior is intended;
I'm asking just in case it's a typo.
Trivial patch appended.
- glen
Index: src/main.c
===================================================================
RCS file: /sqlite/sqlite/src/main.c,v
retrieving revision 1.286
diff -u -3 -p -r1.286 main.c
--- src/main.c 28 Apr 2005 12:06:06 -0000 1.286
+++ src/main.c 6 May 2005 20:40:08 -0000
@@ -632,7 +632,7 @@ static int sqliteDefaultBusyCallback(
prior = totals[count];
}else{
delay = delays[NDELAY-1];
- prior = totals[NDELAY-1] + delay*(count-NDELAY-1);
+ prior = totals[NDELAY-1] + delay*(count-NDELAY+1);
}
if( prior + delay > timeout ){
delay = timeout - prior;