Обсуждение: BUG #14063: ALTER SYSTEM accepts 'newline' and renders itself inoperable.
BUG #14063: ALTER SYSTEM accepts 'newline' and renders itself inoperable.
От
julian.schauder@credativ.de
Дата:
The following bug has been logged on the website: Bug reference: 14063 Logged by: Julian Schauder Email address: julian.schauder@credativ.de PostgreSQL version: 9.5.1 Operating system: Linux, Any Description: Howdy Hackers, PostgreSQLs ALTER SYSTEM accepts a newline in its string-statements. This will cause the postgresql.auto.conf to become unreadable and requires system intervention (aka removal of the auto.conf) postgres=# alter system set work_mem to '5MB '; ALTER SYSTEM Time: 37,718 ms postgres=# alter system set work_mem to '5MB'; ERROR: could not parse contents of file "postgresql.auto.conf" Time: 0,453 ms postgres=# alter system reset work_mem ; ERROR: could not parse contents of file "postgresql.auto.conf" Time: 0,331 ms According to code analysis i believe the easiest way around this is tightening the value validation and ignore whitespaces or just remove newline as a whitespace. As this appears to be a new bug is relevant in all versions since ALTER SYSTEM was introduced. regards, julian
julian.schauder@credativ.de writes: > PostgreSQLs ALTER SYSTEM accepts a newline in its string-statements. This > will cause the postgresql.auto.conf to become unreadable and requires system > intervention (aka removal of the auto.conf) Yeah, there's no provision for allowing a newline in postgresql.conf string literals. I believe we debated this in the past and decided it wasn't something we wanted to change, as it would create more confusion than it was worth (for example: what line number to ascribe to such an assignment). It looks like newline is the only troublesome character; there are quoting conventions for backslash and quote, which are the only other characters that are special there. > According to code analysis i believe the easiest way around this is > tightening the value validation and ignore whitespaces or just remove > newline as a whitespace. I'm inclined to just throw an error if someone tries this, not try to clean up after them. If we get lots of complaints about it, we will know we should revisit the aforementioned decision. But there's no reason to put restrictions on GUC values that aren't getting written by ALTER SYSTEM. regards, tom lane