On Fri, Feb 25, 2022 at 8:38 PM Nitin Jadhav <nitinjadhavpostg...@gmail.com> wrote:
Had a quick look over the v3 patch. I'm not sure if it's the best way to have pg_stat_get_progress_checkpoint_type, pg_stat_get_progress_checkpoint_kind and pg_stat_get_progress_checkpoint_start_time just for printing info in readable format in pg_stat_progress_checkpoint. I don't think these functions will ever be useful for the users. 1) Can't we use pg_is_in_recovery to determine if it's a restartpoint or checkpoint instead of having a new function pg_stat_get_progress_checkpoint_type? 2) Can't we just have these checks inside CASE-WHEN-THEN-ELSE blocks directly instead of new function pg_stat_get_progress_checkpoint_kind? + snprintf(ckpt_kind, MAXPGPATH, "%s%s%s%s%s%s%s%s%s", + (flags == 0) ? "unknown" : "", + (flags & CHECKPOINT_IS_SHUTDOWN) ? "shutdown " : "", + (flags & CHECKPOINT_END_OF_RECOVERY) ? "end-of-recovery " : "", + (flags & CHECKPOINT_IMMEDIATE) ? "immediate " : "", + (flags & CHECKPOINT_FORCE) ? "force " : "", + (flags & CHECKPOINT_WAIT) ? "wait " : "", + (flags & CHECKPOINT_CAUSE_XLOG) ? "wal " : "", + (flags & CHECKPOINT_CAUSE_TIME) ? "time " : "", + (flags & CHECKPOINT_FLUSH_ALL) ? "flush-all" : ""); 3) Why do we need this extra calculation for start_lsn? Do you ever see a negative LSN or something here? + ('0/0'::pg_lsn + ( + CASE + WHEN (s.param3 < 0) THEN pow((2)::numeric, (64)::numeric) + ELSE (0)::numeric + END + (s.param3)::numeric)) AS start_lsn, 4) Can't you use timestamptz_in(to_char(s.param4)) instead of pg_stat_get_progress_checkpoint_start_time? I don't quite understand the reasoning for having this function and it's named as *checkpoint* when it doesn't do anything specific to the checkpoint at all? Having 3 unnecessary functions that aren't useful to the users at all in proc.dat will simply eatup the function oids IMO. Hence, I suggest let's try to do without extra functions. Regards, Bharath Rupireddy.