Re: BUG #15460: Error while creating index or constraint
Thomas Munro <thomas.munro@enterprisedb.com>
From: Thomas Munro <thomas.munro@enterprisedb.com>
To: Peter Geoghegan <pg@bowt.ie>
Cc: paul.vanderlinden@mapcreator.eu, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>,
Heikki Linnakangas <hlinnaka@iki.fi>
Date: 2018-11-13T09:49:26Z
Lists: pgsql-bugs
Attachments
- 0001-Use-64-bit-type-for-BufFileSize.patch (application/octet-stream) patch 0001
On Tue, Nov 13, 2018 at 10:13 PM Thomas Munro
<thomas.munro@enterprisedb.com> wrote:
> On Tue, Oct 30, 2018 at 4:15 AM Peter Geoghegan <pg@bowt.ie> wrote:
> > > ERROR: could not determine size of temporary file "0"
>
> filesize = BufFileSize(file);
> if (filesize < 0)
> ereport(ERROR,
> (errcode_for_file_access(),
> errmsg("could not determine
> size of temporary file \"%s\"", filename)));
>
> Ahh. I think we may be overflowing a 32 bit off_t on this platform.
I think using pgoff_t would fix the problem on Windows, but on other
systems where it maps directly to off_t it might also be 32 bits, so
I'm not entirely sure what pgoff_t is for. Perhaps we should just use
int64 directly for this? Like in the attached draft patch. I don't
have a Windows system to test it on. A separate bug report that came
in today[1] has repro steps that could be used to validate it.
[1] https://www.postgresql.org/message-id/flat/CAHDGBJP_GsESbTt4P3FZA8kMUKuYxjg57XHF7NRBoKnR%3DCAR-g%40mail.gmail.com
--
Thomas Munro
http://www.enterprisedb.com
Commits
-
Have BufFileSize() ereport() on FileSize() failure.
- 1a990b207b86 12.0 landed
- 95c45718126f 11.2 landed
-
Use 64 bit type for BufFileSize().
- fa2ceaca4358 11.2 landed
- aa5518304213 12.0 landed
-
Adjust trace_sort log messages.
- cb6f8a9a7243 12.0 landed
- 886319d71bd5 11.1 landed
-
Fix some sloppiness in the new BufFileSize() and BufFileAppend() functions.
- 445e31bdc749 11.0 cited