Re: pg11+: pg_ls_*dir LIMIT 1: temporary files .. not closed at end-of-transaction
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Justin Pryzby <pryzby@telsasoft.com>
Cc: pgsql-hackers@postgresql.org, Fabien COELHO <coelho@cri.ensmp.fr>,
Alvaro Herrera <alvherre@2ndquadrant.com>,
David Steele <david@pgmasters.net>,
"Bossart,
Nathan" <bossartn@amazon.com>,
Thomas Munro <thomas.munro@gmail.com>
Date: 2020-03-29T17:22:04Z
Lists: pgsql-hackers
Justin Pryzby <pryzby@telsasoft.com> writes: > On Sun, Mar 29, 2020 at 12:37:05PM -0400, Tom Lane wrote: >> After looking at the callers of pg_ls_dir_files, and noticing that >> it's already defined to ignore anything that's not a regular file, >> I think switching to lstat makes sense. > Yea, only pg_ls_dir() shows special file types (and currently the others even > hide dirs). > The essence of your patch is to ignore ENOENT, but you also changed to use > lstat(), which seems unrelated. That means we'll now hide (non-broken) > symlinks. Is that intentional/needed ? Well, the following comment says "ignore anything but regular files", so I'm supposing that that is the behavior that we actually want here and failed to implement correctly. There might be scope for additional directory-reading functions, but I'd think you'd want more information (such as the file type) returned from anything that doesn't act this way. In practice, since these directories shouldn't contain symlinks, it's likely moot. The only place in PG data directories where we actually expect symlinks is pg_tablespace ... and that contains symlinks to directories, so that this function would ignore them anyway. regards, tom lane
Commits
-
Teach pg_ls_dir_files() to ignore ENOENT failures from stat().
- ee40e8975e2c 12.3 landed
- 83f7761d84e6 10.13 landed
- 82e801852274 13.0 landed
- 5b22ff764b0f 11.8 landed
-
Remove useless pfree()s at the ends of various ValuePerCall SRFs.
- 41b45576d532 13.0 landed
-
Avoid holding a directory FD open across assorted SRF calls.
- cd6a0518794d 9.6.18 landed
- 5e4a0b7194b9 10.13 landed
- 819d5525744b 11.8 landed
- 2a89455aade3 12.3 landed
- b4570d33aa04 13.0 landed
- da254148f4de 9.5.22 landed
-
Document pg_ls_*dir hiding of directories and special files
- 8b6d94cf6c83 13.0 cited
-
Avoid holding a directory FD open across pg_ls_dir_files() calls.
- 05283dd5b579 10.13 landed
- 63b51dfec18e 11.8 landed
- 3c8864fc1c54 12.3 landed
- 085b6b6679e7 13.0 landed
-
Adjust nodeFunctionscan.c to reset transient memory context between calls
- e4186762ffaa 7.3.1 cited