Re: BufFileWrite across MAX_PHYSICAL_FILESIZE boundary
От | Tom Lane |
---|---|
Тема | Re: BufFileWrite across MAX_PHYSICAL_FILESIZE boundary |
Дата | |
Msg-id | 27252.1180741608@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: BufFileWrite across MAX_PHYSICAL_FILESIZE boundary (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-hackers |
I wrote: > "Kurt Harriman" <kharriman@greenplum.com> writes: >> Just noticed buffile.c:292 doesn't look quite right where >> BufFileDumpBuffer calls FileWrite: >> bytestowrite = FileWrite(thisfile, file->buffer, bytestowrite); >> It looks as though it would write the same data each time the >> loop is iterated. Would this be better? >> bytestowrite = FileWrite(thisfile, file->buffer + wpos, bytestowrite); > Yeah, I think you're right. FYI, I was able to exercise the bug by changing RELSEG_SIZE to 2 within buffile.c and then running this script in the regression database: set work_mem = '64kB'; begin; declare c scroll cursor for select * from tenk1 a join tenk1 b using(two); fetch 1 from c; fetch 100 from c; fetch backward 10 from c; fetch 100 from c; fetch backward 10 from c; fetch 100 from c; fetch backward 100 from c; commit; It doesn't crash with the fix applied. Thanks for spotting it. regards, tom lane
В списке pgsql-hackers по дате отправления: