From: | "Higuchi, Daisuke" <higuchi(dot)daisuke(at)jp(dot)fujitsu(dot)com> |
---|---|
To: | Michael Paquier <michael(at)paquier(dot)xyz> |
Cc: | "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | RE: stat() on Windows might cause error if target file is larger than 4GB |
Date: | 2018-09-11 10:36:51 |
Message-ID: | 1803D792815FC24D871C00D17AE95905CF6092@g01jpexmbkw24 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Michael-san,
From: Michael Paquier [mailto:michael(at)paquier(dot)xyz]
>Does something like the patch attached help?
>This makes sure that st_size is set correctly for files with a size larger than 4GB.
Thank you for creating patch, but this does not solve current problem.
Of cause setting wrong size to st_size is problem,
I think the cause of this problem is stat()'s return value (=-1).
In pgwin32_safestat(), if stat() try to deal with files with a size larger than 4GB,
the return value is -1. So, pgwin32_safestat() exits before calculating buf->st_size.
----
pgwin32_safestat(const char *path, struct stat *buf)
{
int r;
WIN32_FILE_ATTRIBUTE_DATA attr;
r = stat(path, buf);
if (r < 0)
{
...
return r;
}
...
buf->st_size = attr.nFileSizeLow;
return 0;
}
----
So, attached patch help me and strange message disappeared,
but I ignore the impact of this for others now.
Regards,
Daisuke, Higuchi
Attachment | Content-Type | Size |
---|---|---|
win32-stat-remove-return.patch | application/octet-stream | 307 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Jesper Pedersen | 2018-09-11 13:21:57 | Re: Index Skip Scan |
Previous Message | Masahiko Sawada | 2018-09-11 10:35:43 | Re: CREATE ROUTINE MAPPING |