Thread: Little confusing things about client_min_messages.
Hi,
I noticed that the behavior of client_min_messages do not have
a consistency in document and 'pg_settings', postgresql.conf.
----------------
the behaviro is:
I can set 'INFO', 'FATAL' and 'PANIC' as the valid value.
postgres=# set client_min_messages to info;
SET
postgres=# set client_min_messages to fatal;
SET
postgres=# set client_min_messages to panic;
SET
----------------
document says:
<literal>DEBUG1</>, <literal>LOG</>, <literal>NOTICE</>,
<literal>WARNING</>, <literal>ERROR</>, <literal>FATAL</>,
and <literal>PANIC</>. Each level
I couldn't understand the reason of disappearing 'INFO' from the document.
----------------
pg_settings says:
{debug5,debug4,debug3,debug2,debug1,log,notice,warning,error}
and
postgresql.conf says:
#client_min_messages = notice # values in order of decreasing detail:
# debug5
# debug4
# debug3
# debug2
# debug1
# log
# notice
# warning
# error
also I couldn't understand the reason of disappearing
'info', 'fatal' and 'panic' from them.
----------------
My proposal is all valid values should be present for users.
I fixed this, please see the attached patch.
regards,
-----------
Tomonari Katsumata
I noticed that the behavior of client_min_messages do not have
a consistency in document and 'pg_settings', postgresql.conf.
----------------
the behaviro is:
I can set 'INFO', 'FATAL' and 'PANIC' as the valid value.
postgres=# set client_min_messages to info;
SET
postgres=# set client_min_messages to fatal;
SET
postgres=# set client_min_messages to panic;
SET
----------------
document says:
<literal>DEBUG1</>, <literal>LOG</>, <literal>NOTICE</>,
<literal>WARNING</>, <literal>ERROR</>, <literal>FATAL</>,
and <literal>PANIC</>. Each level
I couldn't understand the reason of disappearing 'INFO' from the document.
----------------
pg_settings says:
{debug5,debug4,debug3,debug2,debug1,log,notice,warning,error}
and
postgresql.conf says:
#client_min_messages = notice # values in order of decreasing detail:
# debug5
# debug4
# debug3
# debug2
# debug1
# log
# notice
# warning
# error
also I couldn't understand the reason of disappearing
'info', 'fatal' and 'panic' from them.
----------------
My proposal is all valid values should be present for users.
I fixed this, please see the attached patch.
regards,
-----------
Tomonari Katsumata
Attachment
Tomonari Katsumata <t.katsumata1122@gmail.com> writes: > [ client_min_messages = info is not documented ] That's intentional, because it's not a useful setting. Even more so for the other two. regards, tom lane
On Sat, Mar 8, 2014 at 11:31:22AM -0500, Tom Lane wrote: > Tomonari Katsumata <t.katsumata1122@gmail.com> writes: > > [ client_min_messages = info is not documented ] > > That's intentional, because it's not a useful setting. Even more so > for the other two. Well, 'info' is between other settings we do document, so I am not clear why info should be excluded. It is because we always output INFO to the client? From elog.c: if (ClientAuthInProgress) output_to_client = (elevel >= ERROR); else output_to_client =(elevel >= client_min_messages || elevel == INFO); -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + Everyone has their own god. +
Bruce Momjian <bruce@momjian.us> writes: > On Sat, Mar 8, 2014 at 11:31:22AM -0500, Tom Lane wrote: >> Tomonari Katsumata <t.katsumata1122@gmail.com> writes: >>> [ client_min_messages = info is not documented ] >> That's intentional, because it's not a useful setting. Even more so >> for the other two. > Well, 'info' is between other settings we do document, so I am not clear > why info should be excluded. It is because we always output INFO to the > client? From elog.c: > if (ClientAuthInProgress) > output_to_client = (elevel >= ERROR); > else > output_to_client = (elevel >= client_min_messages || > elevel == INFO); Right, so if you did set it to that, it wouldn't be functionally different from NOTICE. I'm not real sure why we allow setting client_min_messages to FATAL or PANIC at all; seems to me that would break the FE/BE protocol, which says that command cycles end with either the expected response or ErrorMessage. In some quick experimentation, libpq/psql don't seem to get as confused as I thought they would; but the user is sure likely to. regression=# select 1/0; ERROR: division by zero regression=# set client_min_messages TO panic; SET regression=# select 1/0; regression=# slect regression-# ; regression=# select 1.0;?column? ---------- 1.0 (1 row) regression=# foo; regression=# So no, I don't think we ought to be advertising these as suggested values. A saner proposed patch would be to remove them from the valid values altogether. We probably had some good reason for leaving them in the list back when, but I'm having a hard time reconstructing what that would be. regards, tom lane
Hi Tom, Bruce, Thank you for your response. (2014/03/09 2:12), Tom Lane wrote: > Bruce Momjian <bruce@momjian.us> writes: >> On Sat, Mar 8, 2014 at 11:31:22AM -0500, Tom Lane wrote: >>> Tomonari Katsumata <t.katsumata1122@gmail.com> writes: >>>> [ client_min_messages = info is not documented ] > >>> That's intentional, because it's not a useful setting. Even more so >>> for the other two. > >> Well, 'info' is between other settings we do document, so I am not clear >> why info should be excluded. It is because we always output INFO to the >> client? From elog.c: > >> if (ClientAuthInProgress) >> output_to_client = (elevel >= ERROR); >> else >> output_to_client = (elevel >= client_min_messages || >> elevel == INFO); > > Right, so if you did set it to that, it wouldn't be functionally different > from NOTICE. > I understand it's intensional. We can set INFO but it doesn't have any difference from NOTICE because all INFO messages are sent to client. So it is hidden from the document. The word "valid" in the document has meant "meaningful". I've misread it was "setable". > So no, I don't think we ought to be advertising these as suggested > values. A saner proposed patch would be to remove them from the > valid values altogether. We probably had some good reason for leaving > them in the list back when, but I'm having a hard time reconstructing > what that would be. > Adding FATAL and PANIC to client_min_messages is done at below-commit. 8ac386226d76b29a9f54c26b157e04e9b8368606 http://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=8ac386226d76b29a9f54c26b157e04e9b8368606 According to the commit log, it seems that the purpose is suppressing to be sent error message to client when "DROP TABLE". In those days(pre 8.1), we did not have "DROP IF EXISTS" syntax, so it was useful. If this was the reason, now(from 8.2) we have "DROP IF EXISTS" syntax, so we could delete FATAL and PANIC from client_min_messages valid value. Attached patch do it. Please check it. regards, ----------- Tomonari Katsumata
Attachment
Tomonari Katsumata <katsumata.tomonari@po.ntts.co.jp> writes: > Adding FATAL and PANIC to client_min_messages is done at below-commit. > 8ac386226d76b29a9f54c26b157e04e9b8368606 > http://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=8ac386226d76b29a9f54c26b157e04e9b8368606 > According to the commit log, it seems that the purpose > is suppressing to be sent error message to client when "DROP TABLE". > In those days(pre 8.1), we did not have "DROP IF EXISTS" syntax, > so it was useful. > If this was the reason, now(from 8.2) we have "DROP IF EXISTS" syntax, Uh, that was one example of what it might be good for; I doubt that the use-case has now vanished entirely. While I'm still dubious about the reliability of suppressing error messages, if people have been using this type of coding for nearly 10 years then it probably works well enough ... and more to the point, they won't thank us for arbitrarily removing it. I think we should leave established practice alone here. It might be confusing at first glance, but that doesn't mean it's the wrong thing. regards, tom lane
Hi
2014-03-10 23:45 GMT+09:00 Tom Lane <tgl@sss.pgh.pa.us>:
Tomonari Katsumata <katsumata.tomonari@po.ntts.co.jp> writes:Uh, that was one example of what it might be good for; I doubt that the
> Adding FATAL and PANIC to client_min_messages is done at below-commit.
> 8ac386226d76b29a9f54c26b157e04e9b8368606
> http://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=8ac386226d76b29a9f54c26b157e04e9b8368606
> According to the commit log, it seems that the purpose
> is suppressing to be sent error message to client when "DROP TABLE".
> In those days(pre 8.1), we did not have "DROP IF EXISTS" syntax,
> so it was useful.
> If this was the reason, now(from 8.2) we have "DROP IF EXISTS" syntax,
use-case has now vanished entirely. While I'm still dubious about the
reliability of suppressing error messages, if people have been using this
type of coding for nearly 10 years then it probably works well enough
... and more to the point, they won't thank us for arbitrarily removing
it.
Maybe so.
I think we should leave established practice alone here. It might be
confusing at first glance, but that doesn't mean it's the wrong thing.
I see.
If we delete it, it maybe become more confusing thing.
If we delete it, it maybe become more confusing thing.
Thank you for your opinion.
regards,
---------------
---------------
Tomonari Katsumata