Re: pg11+: pg_ls_*dir LIMIT 1: temporary files .. not closed at end-of-transaction
Fabien COELHO <coelho@cri.ensmp.fr>
From: Fabien COELHO <coelho@cri.ensmp.fr>
To: Justin Pryzby <pryzby@telsasoft.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers@postgresql.org,
Alvaro Herrera <alvherre@2ndquadrant.com>,
David Steele <david@pgmasters.net>,
"Bossart, Nathan" <bossartn@amazon.com>,
Thomas Munro <thomas.munro@gmail.com>
Date: 2020-03-30T05:16:17Z
Lists: pgsql-hackers
Hello Justin, >> 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. > > Maybe pg_stat_file() deserves similar attention ? Right now, it'll fail on a > broken link. If we changed it to lstat(), then it'd work, but it'd also show > metadata for the *link* rather than its target. Yep. I think this traditional answer is the rational answer. As I wrote about an earlier version of the patch, ISTM that instead of reinventing, extending, adapting various ls variants (with/without metadata, which show only files, which shows target of links, which shows directory, etc.) we would just need *one* postgres "ls" implementation which would be like "ls -la arg" (returns file type, dates), and then everything else is a wrapper around that with appropriate filtering that can be done at the SQL level, like you started with recurse. It would reduce the amount of C code and I find the SQL-level approach quite elegant. -- Fabien.
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