-C Move\sthe\sdefinition\sof\ssqlite3_pending_byte\sfrom\stest2.c\sto\sos_common.h.\s(CVS\s2701)
-D 2005-09-16T10:13:42
+C Prevent\sthe\ssqlite3_pagecount()\sfunction\sfrom\sever\sreturning\sthe\spending-byte\npage.\s(CVS\s2702)
+D 2005-09-16T10:18:46
F Makefile.in 12784cdce5ffc8dfb707300c34e4f1eb3b8a14f1
F Makefile.linux-gcc 06be33b2a9ad4f005a5f42b22c4a19dab3cbb5c7
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e
F src/os_win.c ed03a35b2894f9b99840415f941a9f8594dea756
F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b
-F src/pager.c 2b48db1cc6073a6d2577100866db6ae039d20940
+F src/pager.c 96802068d3f387a6a4f016d840366ac9f8afcf6e
F src/pager.h 17b13225abd93c1e9f470060f40a21b9edb5a164
F src/parse.y 5602d5cb894dda2932bf50b7e88782a4440ae3ae
F src/pragma.c 69413fbdc0c6aaa493a776ea52c1b3e6cf35dfb2
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
-P 9115e0621d1fdc5a89a0288b87c0a4ce1e4b50c6
-R a7daea377dbdbe2fe22f19ff9d88ca83
+P bedf702f539636fa3b65fd0d6797b087481b4613
+R 0124fbe01caee72dcc427f2bd19a3f5b
U danielk1977
-Z 396e98a623d7af55e92295f6bc6162c0
+Z afd4b7335827c48ee6ad68f26d27acfa
-bedf702f539636fa3b65fd0d6797b087481b4613
\ No newline at end of file
+35a8893537ae5faed6ee49270ac9c01a6010993f
\ No newline at end of file
** file simultaneously, or one process from reading the database while
** another is writing.
**
-** @(#) $Id: pager.c,v 1.212 2005/09/09 01:32:06 drh Exp $
+** @(#) $Id: pager.c,v 1.213 2005/09/16 10:18:46 danielk1977 Exp $
*/
#ifndef SQLITE_OMIT_DISKIO
#include "sqliteInt.h"
/*
** Return the total number of pages in the disk file associated with
-** pPager.
+** pPager.
+**
+** If the PENDING_BYTE lies on the page directly after the end of the
+** file, then consider this page part of the file too. For example, if
+** PENDING_BYTE is byte 4096 (the first byte of page 5) and the size of the
+** file is 4096 bytes, 5 is returned instead of 4.
*/
int sqlite3pager_pagecount(Pager *pPager){
i64 n;
assert( pPager!=0 );
if( pPager->dbSize>=0 ){
- return pPager->dbSize;
- }
- if( sqlite3OsFileSize(&pPager->fd, &n)!=SQLITE_OK ){
- pPager->errMask |= PAGER_ERR_DISK;
- return 0;
- }
- if( n>0 && n<pPager->pageSize ){
- n = 1;
- }else{
- n /= pPager->pageSize;
+ n = pPager->dbSize;
+ } else {
+ if( sqlite3OsFileSize(&pPager->fd, &n)!=SQLITE_OK ){
+ pPager->errMask |= PAGER_ERR_DISK;
+ return 0;
+ }
+ if( n>0 && n<pPager->pageSize ){
+ n = 1;
+ }else{
+ n /= pPager->pageSize;
+ }
+ if( pPager->state!=PAGER_UNLOCK ){
+ pPager->dbSize = n;
+ }
}
- if( !MEMDB && n==PENDING_BYTE/pPager->pageSize ){
+ if( n==(PENDING_BYTE/pPager->pageSize) ){
n++;
}
- if( pPager->state!=PAGER_UNLOCK ){
- pPager->dbSize = n;
- }
return n;
}