/*
                 * Do not log if log_statement_sample_rate = 0. Log a sample if
                 * log_statement_sample_rate <= 1 and avoid unecessary random() call
-                * if log_statement_sample_rate = 1.
+                * if log_statement_sample_rate = 1.  But don't compute any of this
+                * unless needed.
                 */
-               if (exceeded)
-                       in_sample = log_statement_sample_rate != 0 &&
-                               (log_statement_sample_rate == 1 ||
-                                random() <= log_statement_sample_rate * MAX_RANDOM_VALUE);
+               in_sample = exceeded &&
+                       log_statement_sample_rate != 0 &&
+                       (log_statement_sample_rate == 1 ||
+                        random() <= log_statement_sample_rate * MAX_RANDOM_VALUE);
 
                if ((exceeded && in_sample) || log_duration)
                {