Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Bug fix. Raised version number to 2.0.4. (CVS 288) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
26972afd645e21e0d16de9a0bb0d0375 |
User & Date: | drh 2001-10-13 21:56:34.000 |
Context
2001-10-13
| ||
22:00 | Version 2.0.4 (CVS 466) (check-in: 444447007a user: drh tags: trunk) | |
21:56 | Bug fix. Raised version number to 2.0.4. (CVS 288) (check-in: 26972afd64 user: drh tags: trunk) | |
03:00 | Version 2.0.3 (CVS 467) (check-in: a8fee23f86 user: drh tags: trunk) | |
Changes
Changes to VERSION.
|
| | | 1 | 2.0.4 |
Changes to src/vdbe.c.
︙ | ︙ | |||
26 27 28 29 30 31 32 | ** type to the other occurs as necessary. ** ** Most of the code in this file is taken up by the sqliteVdbeExec() ** function which does the work of interpreting a VDBE program. ** But other routines are also provided to help in building up ** a program instruction by instruction. ** | | | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | ** type to the other occurs as necessary. ** ** Most of the code in this file is taken up by the sqliteVdbeExec() ** function which does the work of interpreting a VDBE program. ** But other routines are also provided to help in building up ** a program instruction by instruction. ** ** $Id: vdbe.c,v 1.85 2001/10/13 21:56:34 drh Exp $ */ #include "sqliteInt.h" #include <ctype.h> /* ** SQL is translated into a sequence of instructions to be ** executed by a virtual machine. Each instruction is an instance |
︙ | ︙ | |||
2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 | ** For the common case where P2 is small, xRead() is invoked ** twice. For larger values of P2, it has to be called ** three times. */ (*xSize)(pCrsr, &payloadSize); if( payloadSize < sizeof(aHdr[0])*(p2+1) ){ rc = SQLITE_CORRUPT; goto abort_due_to_error; } if( p2+1<mxHdr ){ (*xRead)(pCrsr, 0, sizeof(aHdr[0])*(p2+2), (char*)aHdr); nCol = aHdr[0]; nCol /= sizeof(aHdr[0]); offset = aHdr[p2]; if( p2 == nCol-1 ){ amt = payloadSize - offset; }else{ amt = aHdr[p2+1] - offset; } }else{ | > > | | 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 | ** For the common case where P2 is small, xRead() is invoked ** twice. For larger values of P2, it has to be called ** three times. */ (*xSize)(pCrsr, &payloadSize); if( payloadSize < sizeof(aHdr[0])*(p2+1) ){ rc = SQLITE_CORRUPT; printf("keyasdata=%d ", p->aCsr[i].keyAsData); printf("payloadSize=%d aHdr[0]=%d p2=%d\n", payloadSize, aHdr[0], p2); goto abort_due_to_error; } if( p2+1<mxHdr ){ (*xRead)(pCrsr, 0, sizeof(aHdr[0])*(p2+2), (char*)aHdr); nCol = aHdr[0]; nCol /= sizeof(aHdr[0]); offset = aHdr[p2]; if( p2 == nCol-1 ){ amt = payloadSize - offset; }else{ amt = aHdr[p2+1] - offset; } }else{ (*xRead)(pCrsr, 0, sizeof(aHdr[0]), (char*)aHdr); nCol = aHdr[0]/sizeof(aHdr[0]); if( p2 == nCol-1 ){ (*xRead)(pCrsr, sizeof(aHdr[0])*p2, sizeof(aHdr[0]), (char*)aHdr); offset = aHdr[0]; amt = payloadSize - offset; }else{ (*xRead)(pCrsr, sizeof(aHdr[0])*p2, sizeof(aHdr[0])*2, (char*)aHdr); |
︙ | ︙ | |||
2772 2773 2774 2775 2776 2777 2778 | case OP_Next: { int i = pOp->p1; BtCursor *pCrsr; if( VERIFY( i>=0 && i<p->nCursor && ) (pCrsr = p->aCsr[i].pCursor)!=0 ){ if( !p->aCsr[i].atFirst ){ int res; | | | 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 | case OP_Next: { int i = pOp->p1; BtCursor *pCrsr; if( VERIFY( i>=0 && i<p->nCursor && ) (pCrsr = p->aCsr[i].pCursor)!=0 ){ if( !p->aCsr[i].atFirst ){ int res; rc = sqliteBtreeNext(pCrsr, &res); if( res ){ pc = pOp->p2 - 1; }else{ p->nFetch++; } } p->aCsr[i].atFirst = 0; |
︙ | ︙ |
Changes to www/changes.tcl.
︙ | ︙ | |||
12 13 14 15 16 17 18 19 20 21 22 23 24 25 | } proc chng {date desc} { puts "<DT><B>$date</B></DT>" puts "<DD><P><UL>$desc</UL></P></DD>" } chng {2001 Oct 13 (2.0.3)} { <li>Bug fix: the <b>sqlite_busy_timeout()</b> function was delaying 1000 times too long before failing.</li> <li>Bug fix: an assertion was failing if the disk holding the database file became full or stopped accepting writes for some other reason. New tests were added to detect similar problems in the future.</li> | > > > > > > | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | } proc chng {date desc} { puts "<DT><B>$date</B></DT>" puts "<DD><P><UL>$desc</UL></P></DD>" } chng {2001 Oct 13 (2.0.4)} { <li>Bug fix: an abscure and relatively harmless bug was causing one of the tests to fail when gcc optimizations are turned on. This release fixes the problem.</li> } chng {2001 Oct 13 (2.0.3)} { <li>Bug fix: the <b>sqlite_busy_timeout()</b> function was delaying 1000 times too long before failing.</li> <li>Bug fix: an assertion was failing if the disk holding the database file became full or stopped accepting writes for some other reason. New tests were added to detect similar problems in the future.</li> |
︙ | ︙ |