| From: | zengman <zengman(at)halodbtech(dot)com> |
|---|---|
| To: | Heikki Linnakangas <hlinnaka(at)iki(dot)fi> |
| Cc: | pgsql-hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: POC: make mxidoff 64 bits |
| Date: | 2025-12-30 01:49:36 |
| Message-ID: | tencent_566562B52163DB1502F4F7A4@qq.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi,
I'm currently looking into the `SlruReadSwitchPageSlow` function and have a question regarding the expression `&state->buf.data + bytes_read` —
I suspect the ampersand (&) here might be misused. Would you be able to help me verify this?
```
while (bytes_read < BLCKSZ)
{
ssize_t rc;
rc = pg_pread(state->fd,
&state->buf.data + bytes_read,
BLCKSZ - bytes_read,
offset);
if (rc < 0)
{
if (errno == EINTR)
continue;
pg_fatal("could not read file \"%s\": %m", state->fn);
}
if (rc == 0)
{
/* unexpected EOF */
pg_log(PG_WARNING, "unexpected EOF reading file \"%s\" at offset %u, reading as zeros",
state->fn, (unsigned int) offset);
memset(&state->buf.data + bytes_read, 0, BLCKSZ - bytes_read);
break;
}
bytes_read += rc;
offset += rc;
}
```
```
rc = pg_pread(state->fd,
&state->buf.data + bytes_read,
BLCKSZ - bytes_read,
offset);
memset(&state->buf.data + bytes_read, 0, BLCKSZ - bytes_read);
```
--
Regards,
Man Zeng
www.openhalo.org
| Attachment | Content-Type | Size |
|---|---|---|
| slru_io.diff | application/octet-stream | 853 bytes |
| From | Date | Subject | |
|---|---|---|---|
| Previous Message | Tom Lane | 2025-12-30 01:44:45 | Re: [PATCH] Allow complex data for GUC extra. |