On Saturday, July 5, 2025, PG Doc comments form <nore...@postgresql.org> wrote:
> The following documentation comment has been logged on the website: > > Page: https://www.postgresql.org/docs/17/functions-admin.html > Description: > > set_config ( setting_name text, new_value text, is_local boolean ) → text > Sets the parameter setting_name to new_value, and returns that value. If > is_local is true, the new value will only apply during the current > transaction. If you want the new value to apply for the rest of the current > session, use false instead. This function corresponds to the SQL command > SET. > set_config('log_statement_stats', 'off', false) → off > ``` > invoice=> select set_config( 'app.asdf', null, false ) is null; > ?column? > ---------- > f > (1 row) > invoice=> select set_config( 'app.asdf', null, false ) = ''; > ?column? > ---------- > t > (1 row) > ``` > Expected: because I provided NULL value I expect to receive NULL as result > Actual: but function returns the empty string instead. > It would be better to follow documented behaviour, if it will not be > possible to fix it, please at least document that. There are pending patch(es?) in this area, I see to what extent this specific wording is covered (not sure we are back-patching the new wording either…). The main point to remember is that a configuration setting can never take on the null value. All customized setting placeholders *that exist* are text typed with a non-null value defaulting to the empty string. David J.