RE: stat() on Windows might cause error if target file is larger than 4GB

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

In response to

Responses

Browse pgsql-hackers by date

  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