Thread: log_min_duration_statement units

log_min_duration_statement units

From
Bruce Momjian
Date:
Someone complained that the default units for log_min_duration_statement
was not mentioned in postgresql.conf;  this applied patch fixes that.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: src/backend/utils/misc/postgresql.conf.sample
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/misc/postgresql.conf.sample,v
retrieving revision 1.255
diff -c -c -r1.255 postgresql.conf.sample
*** src/backend/utils/misc/postgresql.conf.sample    6 Apr 2009 18:40:47 -0000    1.255
--- src/backend/utils/misc/postgresql.conf.sample    6 Apr 2009 18:58:02 -0000
***************
*** 306,312 ****
                      #   fatal
                      #   panic (effectively off)

! #log_min_duration_statement = -1    # -1 is disabled, 0 logs all statements
                      # and their durations, > 0 logs only
                      # statements running at least this time.

--- 306,312 ----
                      #   fatal
                      #   panic (effectively off)

! #log_min_duration_statement = -1ms    # -1 is disabled, 0 logs all statements
                      # and their durations, > 0 logs only
                      # statements running at least this time.


Re: log_min_duration_statement units

From
Tom Lane
Date:
Bruce Momjian <bruce@momjian.us> writes:
> ! #log_min_duration_statement = -1    # -1 is disabled, 0 logs all statements

> ! #log_min_duration_statement = -1ms    # -1 is disabled, 0 logs all statements

This is not sensible -- there are no units for the "-1" setting.  I
seem to recall that it won't even work; did you test uncommenting that?

            regards, tom lane

Re: log_min_duration_statement units

From
Bruce Momjian
Date:
Tom Lane wrote:
> Bruce Momjian <bruce@momjian.us> writes:
> > ! #log_min_duration_statement = -1    # -1 is disabled, 0 logs all statements
>
> > ! #log_min_duration_statement = -1ms    # -1 is disabled, 0 logs all statements
>
> This is not sensible -- there are no units for the "-1" setting.  I
> seem to recall that it won't even work; did you test uncommenting that?

I tested it uncommented and manually and it worked fine:

    test=> set log_min_duration_statement = '-1ms';
    SET
    test=> show log_min_duration_statement;
     log_min_duration_statement
    ----------------------------
     -1
    (1 row)

It seems illogical to document it this way but a non-EDB trainer emailed
me saying students are getting confused about the default units, and I
can see how they would get confused.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

Re: log_min_duration_statement units

From
Euler Taveira de Oliveira
Date:
Bruce Momjian escreveu:
> Someone complained that the default units for log_min_duration_statement
> was not mentioned in postgresql.conf;  this applied patch fixes that.
>
IMHO -1ms doesn't make much sense. Also, some other parameters don't have
units too. They are: archive_timeout, autovacuum_vacuum_cost_delay,
log_autovacuum_min_duration, log_temp_files, statement_timeout,
tcp_keepalives_idle, and tcp_keepalives_interval. What about mention the unit
in the comment that follows it? The last two already have it.


--
   Euler Taveira de Oliveira
   http://www.timbira.com/

Re: log_min_duration_statement units

From
Tom Lane
Date:
Bruce Momjian <bruce@momjian.us> writes:
> It seems illogical to document it this way

Yeah, that's what I thought, so why did you do it that way?
You could do something like

#log_min_duration_statement = -1        # -1 is disabled, 0 logs all statements
                                        # default unit is ms


            regards, tom lane

Re: log_min_duration_statement units

From
Bruce Momjian
Date:
Euler Taveira de Oliveira wrote:
> Bruce Momjian escreveu:
> > Someone complained that the default units for log_min_duration_statement
> > was not mentioned in postgresql.conf;  this applied patch fixes that.
> >
> IMHO -1ms doesn't make much sense. Also, some other parameters don't have
> units too. They are: archive_timeout, autovacuum_vacuum_cost_delay,
> log_autovacuum_min_duration, log_temp_files, statement_timeout,
> tcp_keepalives_idle, and tcp_keepalives_interval. What about mention the unit
> in the comment that follows it? The last two already have it.

Thanks for the list!  Here is an applied patch that cleans these up,
plus fixes log_min_duration_statement.
--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

Re: log_min_duration_statement units

From
Bruce Momjian
Date:
Bruce Momjian wrote:
> Euler Taveira de Oliveira wrote:
> > Bruce Momjian escreveu:
> > > Someone complained that the default units for log_min_duration_statement
> > > was not mentioned in postgresql.conf;  this applied patch fixes that.
> > >
> > IMHO -1ms doesn't make much sense. Also, some other parameters don't have
> > units too. They are: archive_timeout, autovacuum_vacuum_cost_delay,
> > log_autovacuum_min_duration, log_temp_files, statement_timeout,
> > tcp_keepalives_idle, and tcp_keepalives_interval. What about mention the unit
> > in the comment that follows it? The last two already have it.
>
> Thanks for the list!  Here is an applied patch that cleans these up,
> plus fixes log_min_duration_statement.

Oops, here is the patch;  Euler, would you look to see if you can find
anything else missing;  you seem to be good at that.  :-)

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: src/backend/utils/misc/guc.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v
retrieving revision 1.499
diff -c -c -r1.499 guc.c
*** src/backend/utils/misc/guc.c    2 Apr 2009 19:57:19 -0000    1.499
--- src/backend/utils/misc/guc.c    6 Apr 2009 20:56:57 -0000
***************
*** 1530,1536 ****

      {
          {"statement_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
!             gettext_noop("Sets the maximum allowed duration of any statement."),
              gettext_noop("A value of 0 turns off the timeout."),
              GUC_UNIT_MS
          },
--- 1530,1536 ----

      {
          {"statement_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
!             gettext_noop("Sets the maximum duration of any statement, in milliseconds."),
              gettext_noop("A value of 0 turns off the timeout."),
              GUC_UNIT_MS
          },
***************
*** 1684,1690 ****

      {
          {"log_autovacuum_min_duration", PGC_SIGHUP, LOGGING_WHAT,
!             gettext_noop("Sets the minimum execution time above which "
                           "autovacuum actions will be logged."),
              gettext_noop("Zero prints all actions. -1 turns autovacuum logging off."),
              GUC_UNIT_MS
--- 1684,1690 ----

      {
          {"log_autovacuum_min_duration", PGC_SIGHUP, LOGGING_WHAT,
!             gettext_noop("Sets the minimum execution milliseconds above which "
                           "autovacuum actions will be logged."),
              gettext_noop("Zero prints all actions. -1 turns autovacuum logging off."),
              GUC_UNIT_MS
***************
*** 1871,1877 ****

      {
          {"tcp_keepalives_idle", PGC_USERSET, CLIENT_CONN_OTHER,
!             gettext_noop("Time between issuing TCP keepalives."),
              gettext_noop("A value of 0 uses the system default."),
              GUC_UNIT_S
          },
--- 1871,1877 ----

      {
          {"tcp_keepalives_idle", PGC_USERSET, CLIENT_CONN_OTHER,
!             gettext_noop("Seconds between issuing TCP keepalives."),
              gettext_noop("A value of 0 uses the system default."),
              GUC_UNIT_S
          },
***************
*** 1881,1887 ****

      {
          {"tcp_keepalives_interval", PGC_USERSET, CLIENT_CONN_OTHER,
!             gettext_noop("Time between TCP keepalive retransmits."),
              gettext_noop("A value of 0 uses the system default."),
              GUC_UNIT_S
          },
--- 1881,1887 ----

      {
          {"tcp_keepalives_interval", PGC_USERSET, CLIENT_CONN_OTHER,
!             gettext_noop("Seconds between TCP keepalive retransmits."),
              gettext_noop("A value of 0 uses the system default."),
              GUC_UNIT_S
          },
Index: src/backend/utils/misc/postgresql.conf.sample
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/misc/postgresql.conf.sample,v
retrieving revision 1.257
diff -c -c -r1.257 postgresql.conf.sample
*** src/backend/utils/misc/postgresql.conf.sample    6 Apr 2009 19:03:04 -0000    1.257
--- src/backend/utils/misc/postgresql.conf.sample    6 Apr 2009 20:56:57 -0000
***************
*** 122,128 ****

  # - Cost-Based Vacuum Delay -

! #vacuum_cost_delay = 0            # 0-100 milliseconds
  #vacuum_cost_page_hit = 1        # 0-10000 credits
  #vacuum_cost_page_miss = 10        # 0-10000 credits
  #vacuum_cost_page_dirty = 20        # 0-10000 credits
--- 122,128 ----

  # - Cost-Based Vacuum Delay -

! #vacuum_cost_delay = 0ms        # 0-100 milliseconds
  #vacuum_cost_page_hit = 1        # 0-10000 credits
  #vacuum_cost_page_miss = 10        # 0-10000 credits
  #vacuum_cost_page_dirty = 20        # 0-10000 credits
***************
*** 175,181 ****
                  # (change requires restart)
  #archive_command = ''        # command to use to archive a logfile segment
  #archive_timeout = 0        # force a logfile segment switch after this
!                 # time; 0 is off


  #------------------------------------------------------------------------------
--- 175,181 ----
                  # (change requires restart)
  #archive_command = ''        # command to use to archive a logfile segment
  #archive_timeout = 0        # force a logfile segment switch after this
!                 # number of seconds; 0 is off


  #------------------------------------------------------------------------------
***************
*** 306,314 ****
                      #   fatal
                      #   panic (effectively off)

! #log_min_duration_statement = -1ms    # -1 is disabled, 0 logs all statements
                      # and their durations, > 0 logs only
!                     # statements running at least this time.

  #silent_mode = off            # DO NOT USE without syslog or
                      # logging_collector
--- 306,315 ----
                      #   fatal
                      #   panic (effectively off)

! #log_min_duration_statement = -1    # -1 is disabled, 0 logs all statements
                      # and their durations, > 0 logs only
!                     # statements running at least this number
!                     # of milliseconds

  #silent_mode = off            # DO NOT USE without syslog or
                      # logging_collector
***************
*** 346,352 ****
  #log_lock_waits = off            # log lock waits >= deadlock_timeout
  #log_statement = 'none'            # none, ddl, mod, all
  #log_temp_files = -1            # log temporary files equal or larger
!                     # than specified size;
                      # -1 disables, 0 logs all temp files
  #log_timezone = unknown            # actually, defaults to TZ environment
                      # setting
--- 347,353 ----
  #log_lock_waits = off            # log lock waits >= deadlock_timeout
  #log_statement = 'none'            # none, ddl, mod, all
  #log_temp_files = -1            # log temporary files equal or larger
!                     # than the specified size in kilobytes;
                      # -1 disables, 0 logs all temp files
  #log_timezone = unknown            # actually, defaults to TZ environment
                      # setting
***************
*** 382,388 ****
                      # requires track_counts to also be on.
  #log_autovacuum_min_duration = -1    # -1 disables, 0 logs all actions and
                      # their durations, > 0 logs only
!                     # actions running at least that time.
  #autovacuum_max_workers = 3        # max number of autovacuum subprocesses
  #autovacuum_naptime = 1min        # time between autovacuum runs
  #autovacuum_vacuum_threshold = 50    # min number of row updates before
--- 383,390 ----
                      # requires track_counts to also be on.
  #log_autovacuum_min_duration = -1    # -1 disables, 0 logs all actions and
                      # their durations, > 0 logs only
!                     # actions running at least this number
!                     # of milliseconds.
  #autovacuum_max_workers = 3        # max number of autovacuum subprocesses
  #autovacuum_naptime = 1min        # time between autovacuum runs
  #autovacuum_vacuum_threshold = 50    # min number of row updates before
***************
*** 393,401 ****
  #autovacuum_analyze_scale_factor = 0.1    # fraction of table size before analyze
  #autovacuum_freeze_max_age = 200000000    # maximum XID age before forced vacuum
                      # (change requires restart)
! #autovacuum_vacuum_cost_delay = 20    # default vacuum cost delay for
!                     # autovacuum, -1 means use
!                     # vacuum_cost_delay
  #autovacuum_vacuum_cost_limit = -1    # default vacuum cost limit for
                      # autovacuum, -1 means use
                      # vacuum_cost_limit
--- 395,403 ----
  #autovacuum_analyze_scale_factor = 0.1    # fraction of table size before analyze
  #autovacuum_freeze_max_age = 200000000    # maximum XID age before forced vacuum
                      # (change requires restart)
! #autovacuum_vacuum_cost_delay = 20ms    # default vacuum cost delay for
!                     # autovacuum, in milliseconds;
!                     # -1 means use vacuum_cost_delay
  #autovacuum_vacuum_cost_limit = -1    # default vacuum cost limit for
                      # autovacuum, -1 means use
                      # vacuum_cost_limit
***************
*** 415,421 ****
  #default_transaction_isolation = 'read committed'
  #default_transaction_read_only = off
  #session_replication_role = 'origin'
! #statement_timeout = 0            # 0 is disabled
  #vacuum_freeze_min_age = 50000000
  #vacuum_freeze_table_age = 150000000
  #xmlbinary = 'base64'
--- 417,423 ----
  #default_transaction_isolation = 'read committed'
  #default_transaction_read_only = off
  #session_replication_role = 'origin'
! #statement_timeout = 0            # in milliseconds, 0 is disabled
  #vacuum_freeze_min_age = 50000000
  #vacuum_freeze_table_age = 150000000
  #xmlbinary = 'base64'

Re: log_min_duration_statement units

From
Euler Taveira de Oliveira
Date:
Bruce Momjian escreveu:
> Oops, here is the patch;  Euler, would you look to see if you can find
> anything else missing;  you seem to be good at that.  :-)
>
My English is not as good as yours but here is another try. Personally, I
prefer the second one but...


--
   Euler Taveira de Oliveira
   http://www.timbira.com/

Attachment

Re: log_min_duration_statement units

From
Bruce Momjian
Date:
Euler Taveira de Oliveira wrote:
> Bruce Momjian escreveu:
> > Oops, here is the patch;  Euler, would you look to see if you can find
> > anything else missing;  you seem to be good at that.  :-)
> >
> My English is not as good as yours but here is another try. Personally, I
> prefer the second one but...

Great, I used your second version.  I had already done some of the ones
you found, but you had many more.  I also used your "0 disables" wording
consistently in the file.  Thanks for the help.  Committed.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: src/backend/utils/misc/guc.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v
retrieving revision 1.500
diff -c -c -r1.500 guc.c
*** src/backend/utils/misc/guc.c    6 Apr 2009 21:00:52 -0000    1.500
--- src/backend/utils/misc/guc.c    7 Apr 2009 22:15:25 -0000
***************
*** 1316,1322 ****
      {
          /* This is PGC_SIGHUP so all backends have the same value. */
          {"deadlock_timeout", PGC_SIGHUP, LOCK_MANAGEMENT,
!             gettext_noop("Sets the time to wait on a lock before checking for deadlock."),
              NULL,
              GUC_UNIT_MS
          },
--- 1316,1322 ----
      {
          /* This is PGC_SIGHUP so all backends have the same value. */
          {"deadlock_timeout", PGC_SIGHUP, LOCK_MANAGEMENT,
!             gettext_noop("Sets the time to wait on a lock before checking for deadlock, in milliseconds."),
              NULL,
              GUC_UNIT_MS
          },
***************
*** 1406,1412 ****

      {
          {"maintenance_work_mem", PGC_USERSET, RESOURCES_MEM,
!             gettext_noop("Sets the maximum memory to be used for maintenance operations."),
              gettext_noop("This includes operations such as VACUUM and CREATE INDEX."),
              GUC_UNIT_KB
          },
--- 1406,1412 ----

      {
          {"maintenance_work_mem", PGC_USERSET, RESOURCES_MEM,
!             gettext_noop("Sets the maximum memory to be used for maintenance operations, in kilobytes."),
              gettext_noop("This includes operations such as VACUUM and CREATE INDEX."),
              GUC_UNIT_KB
          },
***************
*** 1569,1575 ****

      {
          {"authentication_timeout", PGC_SIGHUP, CONN_AUTH_SECURITY,
!             gettext_noop("Sets the maximum allowed time to complete client authentication."),
              NULL,
              GUC_UNIT_S
          },
--- 1569,1575 ----

      {
          {"authentication_timeout", PGC_SIGHUP, CONN_AUTH_SECURITY,
!             gettext_noop("Sets the maximum allowed time to complete client authentication, in seconds."),
              NULL,
              GUC_UNIT_S
          },
***************
*** 1599,1605 ****

      {
          {"checkpoint_timeout", PGC_SIGHUP, WAL_CHECKPOINTS,
!             gettext_noop("Sets the maximum time between automatic WAL checkpoints."),
              NULL,
              GUC_UNIT_S
          },
--- 1599,1605 ----

      {
          {"checkpoint_timeout", PGC_SIGHUP, WAL_CHECKPOINTS,
!             gettext_noop("Sets the maximum time between automatic WAL checkpoints, in seconds."),
              NULL,
              GUC_UNIT_S
          },
***************
*** 1632,1638 ****

      {
          {"wal_writer_delay", PGC_SIGHUP, WAL_SETTINGS,
!             gettext_noop("WAL writer sleep time between WAL flushes."),
              NULL,
              GUC_UNIT_MS
          },
--- 1632,1638 ----

      {
          {"wal_writer_delay", PGC_SIGHUP, WAL_SETTINGS,
!             gettext_noop("WAL writer sleep time between WAL flushes, in milliseconds."),
              NULL,
              GUC_UNIT_MS
          },
***************
*** 1673,1680 ****

      {
          {"log_min_duration_statement", PGC_SUSET, LOGGING_WHEN,
!             gettext_noop("Sets the minimum execution time above which "
!                          "statements will be logged."),
              gettext_noop("Zero prints all queries. -1 turns this feature off."),
              GUC_UNIT_MS
          },
--- 1673,1680 ----

      {
          {"log_min_duration_statement", PGC_SUSET, LOGGING_WHEN,
!             gettext_noop("Sets the minimum execution time (in milliseconds) above "
!                          "which statements will be logged."),
              gettext_noop("Zero prints all queries. -1 turns this feature off."),
              GUC_UNIT_MS
          },
***************
*** 1684,1690 ****

      {
          {"log_autovacuum_min_duration", PGC_SIGHUP, LOGGING_WHAT,
!             gettext_noop("Sets the minimum execution milliseconds above which "
                           "autovacuum actions will be logged."),
              gettext_noop("Zero prints all actions. -1 turns autovacuum logging off."),
              GUC_UNIT_MS
--- 1684,1690 ----

      {
          {"log_autovacuum_min_duration", PGC_SIGHUP, LOGGING_WHAT,
!             gettext_noop("Sets the minimum execution in milliseconds above which "
                           "autovacuum actions will be logged."),
              gettext_noop("Zero prints all actions. -1 turns autovacuum logging off."),
              GUC_UNIT_MS
***************
*** 1695,1701 ****

      {
          {"bgwriter_delay", PGC_SIGHUP, RESOURCES,
!             gettext_noop("Background writer sleep time between rounds."),
              NULL,
              GUC_UNIT_MS
          },
--- 1695,1701 ----

      {
          {"bgwriter_delay", PGC_SIGHUP, RESOURCES,
!             gettext_noop("Background writer sleep time between rounds, in milliseconds."),
              NULL,
              GUC_UNIT_MS
          },
***************
*** 1827,1833 ****

      {
          {"autovacuum_naptime", PGC_SIGHUP, AUTOVACUUM,
!             gettext_noop("Time to sleep between autovacuum runs."),
              NULL,
              GUC_UNIT_S
          },
--- 1827,1833 ----

      {
          {"autovacuum_naptime", PGC_SIGHUP, AUTOVACUUM,
!             gettext_noop("Time to sleep between autovacuum runs, in seconds."),
              NULL,
              GUC_UNIT_S
          },
Index: src/backend/utils/misc/postgresql.conf.sample
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/misc/postgresql.conf.sample,v
retrieving revision 1.258
diff -c -c -r1.258 postgresql.conf.sample
*** src/backend/utils/misc/postgresql.conf.sample    6 Apr 2009 21:00:52 -0000    1.258
--- src/backend/utils/misc/postgresql.conf.sample    7 Apr 2009 22:15:25 -0000
***************
*** 136,142 ****

  # - Asynchronous Behavior -

! #effective_io_concurrency = 1        # 1-1000, or 0 to disable prefetching


  #------------------------------------------------------------------------------
--- 136,142 ----

  # - Asynchronous Behavior -

! #effective_io_concurrency = 1        # 1-1000. 0 disables prefetching


  #------------------------------------------------------------------------------
***************
*** 167,173 ****
  #checkpoint_segments = 3        # in logfile segments, min 1, 16MB each
  #checkpoint_timeout = 5min        # range 30s-1h
  #checkpoint_completion_target = 0.5    # checkpoint target duration, 0.0 - 1.0
! #checkpoint_warning = 30s        # 0 is off

  # - Archiving -

--- 167,173 ----
  #checkpoint_segments = 3        # in logfile segments, min 1, 16MB each
  #checkpoint_timeout = 5min        # range 30s-1h
  #checkpoint_completion_target = 0.5    # checkpoint target duration, 0.0 - 1.0
! #checkpoint_warning = 30s        # 0 disables

  # - Archiving -

***************
*** 175,181 ****
                  # (change requires restart)
  #archive_command = ''        # command to use to archive a logfile segment
  #archive_timeout = 0        # force a logfile segment switch after this
!                 # number of seconds; 0 is off


  #------------------------------------------------------------------------------
--- 175,181 ----
                  # (change requires restart)
  #archive_command = ''        # command to use to archive a logfile segment
  #archive_timeout = 0        # force a logfile segment switch after this
!                 # number of seconds; 0 disables


  #------------------------------------------------------------------------------
***************
*** 253,262 ****
                      # off, meaning append to existing files
                      # in all cases.
  #log_rotation_age = 1d            # Automatic rotation of logfiles will
!                     # happen after that time.  0 to disable.
  #log_rotation_size = 10MB        # Automatic rotation of logfiles will
                      # happen after that much log output.
!                     # 0 to disable.

  # These are relevant when logging to syslog:
  #syslog_facility = 'LOCAL0'
--- 253,262 ----
                      # off, meaning append to existing files
                      # in all cases.
  #log_rotation_age = 1d            # Automatic rotation of logfiles will
!                     # happen after that time.  0 disables.
  #log_rotation_size = 10MB        # Automatic rotation of logfiles will
                      # happen after that much log output.
!                     # 0 disables.

  # These are relevant when logging to syslog:
  #syslog_facility = 'LOCAL0'

Re: log_min_duration_statement units

From
Alvaro Herrera
Date:
Bruce Momjian wrote:
> Euler Taveira de Oliveira wrote:
> > Bruce Momjian escreveu:
> > > Oops, here is the patch;  Euler, would you look to see if you can find
> > > anything else missing;  you seem to be good at that.  :-)
> > >
> > My English is not as good as yours but here is another try. Personally, I
> > prefer the second one but...
>
> Great, I used your second version.  I had already done some of the ones
> you found, but you had many more.  I also used your "0 disables" wording
> consistently in the file.  Thanks for the help.  Committed.

Huh ... I thought the units were removed from the descriptions when the
whole unit thing got introduced in guc.c.  This seems more a regression
than anything else -- see guc.c rev 1.361.

--
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Re: log_min_duration_statement units

From
Bruce Momjian
Date:
Alvaro Herrera wrote:
> Bruce Momjian wrote:
> > Euler Taveira de Oliveira wrote:
> > > Bruce Momjian escreveu:
> > > > Oops, here is the patch;  Euler, would you look to see if you can find
> > > > anything else missing;  you seem to be good at that.  :-)
> > > >
> > > My English is not as good as yours but here is another try. Personally, I
> > > prefer the second one but...
> >
> > Great, I used your second version.  I had already done some of the ones
> > you found, but you had many more.  I also used your "0 disables" wording
> > consistently in the file.  Thanks for the help.  Committed.
>
> Huh ... I thought the units were removed from the descriptions when the
> whole unit thing got introduced in guc.c.  This seems more a regression
> than anything else -- see guc.c rev 1.361.

Which is why I originally did:

    #log_min_duration_statement = -1ms        # -1 is disabled, 0 logs all statements

but people complained so I went with adding it to the description.  The
units are only to document the default if no units are supplied.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

Re: log_min_duration_statement units

From
Tom Lane
Date:
Bruce Momjian <bruce@momjian.us> writes:
> Euler Taveira de Oliveira wrote:
>> My English is not as good as yours but here is another try. Personally, I
>> prefer the second one but...

> Great, I used your second version.  I had already done some of the ones
> you found, but you had many more.  I also used your "0 disables" wording
> consistently in the file.  Thanks for the help.  Committed.

You know, it suddenly strikes me that this is going in largely the wrong
direction.  Wasn't a key part of the reasoning for the GUC units support
to *eliminate* the need for people to know what the underlying
variable's unit is?  I certainly think that putting the unit info into
the text descriptions is a seriously bad idea.  It makes an already
overly wide view even wider, and the information is 100% redundant with
the "unit" column of the pg_settings view.

            regards, tom lane

Re: log_min_duration_statement units

From
Bruce Momjian
Date:
Tom Lane wrote:
> Bruce Momjian <bruce@momjian.us> writes:
> > Euler Taveira de Oliveira wrote:
> >> My English is not as good as yours but here is another try. Personally, I
> >> prefer the second one but...
>
> > Great, I used your second version.  I had already done some of the ones
> > you found, but you had many more.  I also used your "0 disables" wording
> > consistently in the file.  Thanks for the help.  Committed.
>
> You know, it suddenly strikes me that this is going in largely the wrong
> direction.  Wasn't a key part of the reasoning for the GUC units support
> to *eliminate* the need for people to know what the underlying
> variable's unit is?  I certainly think that putting the unit info into
> the text descriptions is a seriously bad idea.  It makes an already
> overly wide view even wider, and the information is 100% redundant with
> the "unit" column of the pg_settings view.

Right, the problem particularly is with the -1/special values that don't
have a real unit.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

Re: log_min_duration_statement units

From
Tom Lane
Date:
Bruce Momjian <bruce@momjian.us> writes:
> Tom Lane wrote:
>> You know, it suddenly strikes me that this is going in largely the wrong
>> direction.

> Right, the problem particularly is with the -1/special values that don't
> have a real unit.

I don't object to what you did to postgresql.conf.sample, but I think
you should revert the changes to the descriptions in guc.c.

            regards, tom lane

Re: log_min_duration_statement units

From
Bruce Momjian
Date:
Tom Lane wrote:
> Bruce Momjian <bruce@momjian.us> writes:
> > Tom Lane wrote:
> >> You know, it suddenly strikes me that this is going in largely the wrong
> >> direction.
>
> > Right, the problem particularly is with the -1/special values that don't
> > have a real unit.
>
> I don't object to what you did to postgresql.conf.sample, but I think
> you should revert the changes to the descriptions in guc.c.

Agreed;  attached patch applied.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: guc.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v
retrieving revision 1.499
retrieving revision 1.501
diff -c -c -r1.499 -r1.501
*** guc.c    2 Apr 2009 19:57:19 -0000    1.499
--- guc.c    7 Apr 2009 22:22:19 -0000    1.501
***************
*** 10,16 ****
   * Written by Peter Eisentraut <peter_e@gmx.net>.
   *
   * IDENTIFICATION
!  *      $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.499 2009/04/02 19:57:19 momjian Exp $
   *
   *--------------------------------------------------------------------
   */
--- 10,16 ----
   * Written by Peter Eisentraut <peter_e@gmx.net>.
   *
   * IDENTIFICATION
!  *      $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.501 2009/04/07 22:22:19 momjian Exp $
   *
   *--------------------------------------------------------------------
   */
***************
*** 1316,1322 ****
      {
          /* This is PGC_SIGHUP so all backends have the same value. */
          {"deadlock_timeout", PGC_SIGHUP, LOCK_MANAGEMENT,
!             gettext_noop("Sets the time to wait on a lock before checking for deadlock."),
              NULL,
              GUC_UNIT_MS
          },
--- 1316,1322 ----
      {
          /* This is PGC_SIGHUP so all backends have the same value. */
          {"deadlock_timeout", PGC_SIGHUP, LOCK_MANAGEMENT,
!             gettext_noop("Sets the time to wait on a lock before checking for deadlock, in milliseconds."),
              NULL,
              GUC_UNIT_MS
          },
***************
*** 1406,1412 ****

      {
          {"maintenance_work_mem", PGC_USERSET, RESOURCES_MEM,
!             gettext_noop("Sets the maximum memory to be used for maintenance operations."),
              gettext_noop("This includes operations such as VACUUM and CREATE INDEX."),
              GUC_UNIT_KB
          },
--- 1406,1412 ----

      {
          {"maintenance_work_mem", PGC_USERSET, RESOURCES_MEM,
!             gettext_noop("Sets the maximum memory to be used for maintenance operations, in kilobytes."),
              gettext_noop("This includes operations such as VACUUM and CREATE INDEX."),
              GUC_UNIT_KB
          },
***************
*** 1530,1536 ****

      {
          {"statement_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
!             gettext_noop("Sets the maximum allowed duration of any statement."),
              gettext_noop("A value of 0 turns off the timeout."),
              GUC_UNIT_MS
          },
--- 1530,1536 ----

      {
          {"statement_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
!             gettext_noop("Sets the maximum duration of any statement, in milliseconds."),
              gettext_noop("A value of 0 turns off the timeout."),
              GUC_UNIT_MS
          },
***************
*** 1569,1575 ****

      {
          {"authentication_timeout", PGC_SIGHUP, CONN_AUTH_SECURITY,
!             gettext_noop("Sets the maximum allowed time to complete client authentication."),
              NULL,
              GUC_UNIT_S
          },
--- 1569,1575 ----

      {
          {"authentication_timeout", PGC_SIGHUP, CONN_AUTH_SECURITY,
!             gettext_noop("Sets the maximum allowed time to complete client authentication, in seconds."),
              NULL,
              GUC_UNIT_S
          },
***************
*** 1599,1605 ****

      {
          {"checkpoint_timeout", PGC_SIGHUP, WAL_CHECKPOINTS,
!             gettext_noop("Sets the maximum time between automatic WAL checkpoints."),
              NULL,
              GUC_UNIT_S
          },
--- 1599,1605 ----

      {
          {"checkpoint_timeout", PGC_SIGHUP, WAL_CHECKPOINTS,
!             gettext_noop("Sets the maximum time between automatic WAL checkpoints, in seconds."),
              NULL,
              GUC_UNIT_S
          },
***************
*** 1632,1638 ****

      {
          {"wal_writer_delay", PGC_SIGHUP, WAL_SETTINGS,
!             gettext_noop("WAL writer sleep time between WAL flushes."),
              NULL,
              GUC_UNIT_MS
          },
--- 1632,1638 ----

      {
          {"wal_writer_delay", PGC_SIGHUP, WAL_SETTINGS,
!             gettext_noop("WAL writer sleep time between WAL flushes, in milliseconds."),
              NULL,
              GUC_UNIT_MS
          },
***************
*** 1673,1680 ****

      {
          {"log_min_duration_statement", PGC_SUSET, LOGGING_WHEN,
!             gettext_noop("Sets the minimum execution time above which "
!                          "statements will be logged."),
              gettext_noop("Zero prints all queries. -1 turns this feature off."),
              GUC_UNIT_MS
          },
--- 1673,1680 ----

      {
          {"log_min_duration_statement", PGC_SUSET, LOGGING_WHEN,
!             gettext_noop("Sets the minimum execution time (in milliseconds) above "
!                          "which statements will be logged."),
              gettext_noop("Zero prints all queries. -1 turns this feature off."),
              GUC_UNIT_MS
          },
***************
*** 1684,1690 ****

      {
          {"log_autovacuum_min_duration", PGC_SIGHUP, LOGGING_WHAT,
!             gettext_noop("Sets the minimum execution time above which "
                           "autovacuum actions will be logged."),
              gettext_noop("Zero prints all actions. -1 turns autovacuum logging off."),
              GUC_UNIT_MS
--- 1684,1690 ----

      {
          {"log_autovacuum_min_duration", PGC_SIGHUP, LOGGING_WHAT,
!             gettext_noop("Sets the minimum execution in milliseconds above which "
                           "autovacuum actions will be logged."),
              gettext_noop("Zero prints all actions. -1 turns autovacuum logging off."),
              GUC_UNIT_MS
***************
*** 1695,1701 ****

      {
          {"bgwriter_delay", PGC_SIGHUP, RESOURCES,
!             gettext_noop("Background writer sleep time between rounds."),
              NULL,
              GUC_UNIT_MS
          },
--- 1695,1701 ----

      {
          {"bgwriter_delay", PGC_SIGHUP, RESOURCES,
!             gettext_noop("Background writer sleep time between rounds, in milliseconds."),
              NULL,
              GUC_UNIT_MS
          },
***************
*** 1827,1833 ****

      {
          {"autovacuum_naptime", PGC_SIGHUP, AUTOVACUUM,
!             gettext_noop("Time to sleep between autovacuum runs."),
              NULL,
              GUC_UNIT_S
          },
--- 1827,1833 ----

      {
          {"autovacuum_naptime", PGC_SIGHUP, AUTOVACUUM,
!             gettext_noop("Time to sleep between autovacuum runs, in seconds."),
              NULL,
              GUC_UNIT_S
          },
***************
*** 1871,1877 ****

      {
          {"tcp_keepalives_idle", PGC_USERSET, CLIENT_CONN_OTHER,
!             gettext_noop("Time between issuing TCP keepalives."),
              gettext_noop("A value of 0 uses the system default."),
              GUC_UNIT_S
          },
--- 1871,1877 ----

      {
          {"tcp_keepalives_idle", PGC_USERSET, CLIENT_CONN_OTHER,
!             gettext_noop("Seconds between issuing TCP keepalives."),
              gettext_noop("A value of 0 uses the system default."),
              GUC_UNIT_S
          },
***************
*** 1881,1887 ****

      {
          {"tcp_keepalives_interval", PGC_USERSET, CLIENT_CONN_OTHER,
!             gettext_noop("Time between TCP keepalive retransmits."),
              gettext_noop("A value of 0 uses the system default."),
              GUC_UNIT_S
          },
--- 1881,1887 ----

      {
          {"tcp_keepalives_interval", PGC_USERSET, CLIENT_CONN_OTHER,
!             gettext_noop("Seconds between TCP keepalive retransmits."),
              gettext_noop("A value of 0 uses the system default."),
              GUC_UNIT_S
          },

Re: log_min_duration_statement units

From
Bruce Momjian
Date:
Bruce Momjian wrote:
> Tom Lane wrote:
> > Bruce Momjian <bruce@momjian.us> writes:
> > > Tom Lane wrote:
> > >> You know, it suddenly strikes me that this is going in largely the wrong
> > >> direction.
> >
> > > Right, the problem particularly is with the -1/special values that don't
> > > have a real unit.
> >
> > I don't object to what you did to postgresql.conf.sample, but I think
> > you should revert the changes to the descriptions in guc.c.
>
> Agreed;  attached patch applied.

However, keep in mind that units are _not_ displayed for zero values:

    test=> show statement_timeout;
     statement_timeout
    -------------------
     0
    (1 row)

    test=> set statement_timeout = 100;
    SET
    test=> show statement_timeout;
     statement_timeout
    -------------------
     100ms
    (1 row)

because of this test in guc.c:

                    else if (use_units && result > 0 &&
                             (record->flags & GUC_UNIT_TIME))

pg_settings does show the units.  Changing this to display the units
might be odd since many zero values mean 'disabled'.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

Re: log_min_duration_statement units

From
Tom Lane
Date:
Bruce Momjian <bruce@momjian.us> writes:
> However, keep in mind that units are _not_ displayed for zero values:

Well, zero is zero, so that seems fine.

            regards, tom lane