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

Поиск
Список
Период
Сортировка
От Higuchi, Daisuke
Тема RE: stat() on Windows might cause error if target file is largerthan 4GB
Дата
Msg-id 1803D792815FC24D871C00D17AE95905CF6092@g01jpexmbkw24
обсуждение исходный текст
Ответ на Re: stat() on Windows might cause error if target file is largerthan 4GB  (Michael Paquier <michael@paquier.xyz>)
Ответы Re: stat() on Windows might cause error if target file is largerthan 4GB  (Michael Paquier <michael@paquier.xyz>)
Список pgsql-hackers
Michael-san, 

From: Michael Paquier [mailto:michael@paquier.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


Вложения

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

Предыдущее
От: Masahiko Sawada
Дата:
Сообщение: Re: CREATE ROUTINE MAPPING
Следующее
От: Jesper Pedersen
Дата:
Сообщение: Re: Index Skip Scan