Re: Lift line-length limit for pg_service.conf
Daniel Gustafsson <daniel@yesql.se>
From: Daniel Gustafsson <daniel@yesql.se>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2020-09-22T11:50:11Z
Lists: pgsql-hackers
Attachments
- 0001-Refactor-pg_service.conf-and-pg_restore-TOC-file-par.patch (application/octet-stream) patch 0001
> On 21 Sep 2020, at 17:09, Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Daniel Gustafsson <daniel@yesql.se> writes: >> The pg_service.conf parsing thread [0] made me realize that we have a hardwired >> line length of max 256 bytes. Lifting this would be in line with recent work >> for ecpg, pg_regress and pg_hba (784b1ba1a2 and 8f8154a50). The attached moves >> pg_service.conf to use the new pg_get_line_append API and a StringInfo to lift >> the restriction. Any reason not to do that while we're lifting other such limits? > > +1. I'd been thinking of looking around at our fgets calls to see > which ones need this sort of work, but didn't get to it yet. I took a quick look and found the TOC parsing in pg_restore which used a 100 byte buffer and then did some juggling to find EOL for >100b long lines. There we wont see a bugreport for exceeded line length, but simplifying the code seemed like a win to me so included that in the updated patch as well. > Personally, I'd avoid depending on StringInfo.cursor here, as the > dependency isn't really buying you anything. Fair enough, I was mainly a bit excited at finally finding a use for .cursor =) Fixed. > Also, the need for inserting the pfree into multiple exit paths kind > of makes me itch. I wonder if we should change the ending code to > look like > > exit: > fclose(f); > pfree(linebuf.data); > > return result; > > and then the early exit spots would be replaced with "result = x; > goto exit". (Some of them could use "break", but not all, so > it's probably better to consistently use "goto".) Agreed, fixed. I was a bit tempted to use something less magic and more descriptive than result = 3; but in the end opted for keeping changes to one thing at a time. cheers ./daniel
Commits
-
Improve behavior of tsearch_readline(), and remove t_readline().
- 83b61319a16c 14.0 landed
-
Avoid possible dangling-pointer access in tsearch_readline_callback.
- c1f63c42fc13 11.10 landed
- b91033ae9bc5 10.15 landed
- b1fbb7d08f22 9.6.20 landed
- 61cfd90621d6 9.5.24 landed
- 5d0c80658328 12.5 landed
- 569f6a89a915 13.1 landed
- 3ea7e9550e58 14.0 landed
-
Simplify SortTocFromFile() by removing fixed buffer-size limit.
- 2e3c19462da9 14.0 landed
-
Remove arbitrary line length limit for libpq service files.
- c0cb87fbb664 14.0 landed
-
Rethink API for pg_get_line.c, one more time.
- 931487018c40 14.0 landed