Re: BUG #17288: PSQL bug with COPY command (Windows)
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Dmitry Koval <d.koval@postgrespro.ru>
Cc: Juan José Santamaría Flecha <juanjo.santamaria@gmail.com>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2021-11-19T06:57:44Z
Lists: pgsql-bugs
On Thu, Nov 18, 2021 at 09:48:55PM +0300, Dmitry Koval wrote: > >You are right about freopen(), but stderr works just because it's being > >parsed as a file, not a stream, by parse_slash_copy(). > > You are right. I wrote about stderr without inspecting code ( > > >I would keep the memset(buf, 0, sizeof(*buf)) for the members we > >are not setting. > > Of course. Original code (src/port/win32stat.c) contains line > > memset(buf, 0, sizeof(*buf)) > > before call GetFileInformationByHandle(). I still think that we should not call GetFileInformationByHandle() when it comes to an argument that we know will fail, so I would agree with Juan's approach in v2 to just patch _pgfstat64() rather than messing with the code paths in charge of checking handles pending for deletion. Each fileno is going to be 0, 1 or 2 in those cases, still it would be better to rely on the result of fileno() as v3 is doing? It looks like you are right about _S_IFCHR for st_mode, as of this part of the docs: https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32?view=msvc-170 -- Michael
Commits
-
Fix compatibility thinko for fstat() on standard streams in win32stat.c
- 5550a9c38519 14.2 landed
- 58651d8dd6a5 15.0 landed
-
Fix fstat() emulation on Windows with standard streams
- d2198b4593cc 14.2 landed
- 10260c794b21 15.0 landed