Re: Switch buffile.c/h to use pgoff_t

Поиск
Список
Период
Сортировка
От Chao Li
Тема Re: Switch buffile.c/h to use pgoff_t
Дата
Msg-id B685F6F2-2372-499B-90B7-213340E3B1DE@gmail.com
обсуждение исходный текст
Ответ на Re: Switch buffile.c/h to use pgoff_t  (Michael Paquier <michael@paquier.xyz>)
Список pgsql-hackers

> On Dec 26, 2025, at 07:45, Michael Paquier <michael@paquier.xyz> wrote:
>
> On Thu, Dec 25, 2025 at 10:40:02AM +0800, Chao Li wrote:
>> In attached v3, I have applied int64 to the 2 struct fields and
>> corresponding local variables. I ran a clean build, no warning was
>> introduced, and "make check" passed.
>
> The advantage of being able to make the code transparently more
> pluggable for max large sizes while we already use 8-byte offsets is
> kind of nice, I guess.  "availbytes" is a clarification bonus as it is
> not an offset per-se.  I can see that you have missed on cast spot, so
> adjusted things a bit, then applied the result.
> --
> Michael

Thanks a lot for pushing.

WRT to the original (int) casts, I intentionally removed them, because file->nbytes, newOffset and file->curOffset are
allsigned 64 bit integers now. Compiling with -Wextra won’t get a warning, so technically, the type cast is no longer
needed.

I saw you changed to:
```
- file->pos = (int) (newOffset - file->curOffset);
+ file->pos = (int64) (newOffset - file->curOffset);

- file->pos = (int) (newOffset - file->curOffset);
+ file->pos = (int64) newOffset - file->curOffset;

- file->nbytes = (int) (newOffset - file->curOffset);
+ file->nbytes = (int64) newOffset - file->curOffset;
```

The latter two places missed (), but that should also work, just a little inconsistent.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/







В списке pgsql-hackers по дате отправления: