On Sat, Aug 19, 2017 at 4:44 AM, Jacky Lam <jacky...@gmail.com> wrote:
> I implement my own vfs analogous to the vfs like fopen, fclose, fseek, > fwrite, fread and etc. > When I iterate a sql statement up to millions records, the fwrite fail due > to pos of fseek is beyond the eof position. > I am wondering whether the pos sometimes beyond eof is normal. > If it is normal, I can do some tricks to write beyond the eof position. > > it is normal. To extend a file; fseek() and then write. there is no mandate that fseek be within the file; the file is expected to zero-fill from the end up to the position to write. > > On 2017年8月19日週六 下午5:13 Clemens Ladisch <clem...@ladisch.de> wrote: > > > Jacky Lam wrote: > > > I recently meet a case that the file position offset of a pager is > beyond > > > EOF position of db. > > > > <http://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html> > > says: > > | The lseek() function shall allow the file offset to be set beyond the > end > > | of the existing data in the file. If data is later written at this > point, > > | subsequent reads of data in the gap shall return bytes with the value 0 > > | until data is actually written into the gap. > > | [...] > > | Although lseek() may position the file offset beyond the end of the > file, > > | this function does not itself extend the size of the file. [...] the > only > > | function in POSIX.1-2008 that may directly extend the size of the file > is > > | write(), truncate(), and ftruncate() > > | [...] > > | An invalid file offset that would cause [EINVAL] to be returned may be > > | both implementation-defined and device-dependent > > > > The sqlite3_file object does not have a concept of "current file > position"; > > the xRead/xWrite/xTruncate functions have explicit offset/size > parameters. > > > > But the Unix VFS internally takes advantage of this behaviour and writes > > only the last byte of a newly allocated page. > > > > > I would like to know if ... it is a bug makes from my OS > > > > What VFS are you using? > > > > > > Regards, > > Clemens > > _______________________________________________ > > sqlite-users mailing list > > sqlite-users@mailinglists.sqlite.org > > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > _______________________________________________ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users