Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 0df4eb3

Browse files
committed
Reinstate tests accidentally removed by e3fcca0
Commit e3fcca0 reverted modifications to HOT for BRIN, but it also removed a couple unrelated tests from stats.sql. Reinstate those tests. Reported-by: Peter Eisentraut
1 parent 973137d commit 0df4eb3

File tree

2 files changed

+353
-0
lines changed

2 files changed

+353
-0
lines changed

src/test/regress/expected/stats.out

+242
Original file line numberDiff line numberDiff line change
@@ -554,4 +554,246 @@ SELECT pg_stat_get_live_tuples(:drop_stats_test_subxact_oid);
554554

555555
DROP TABLE trunc_stats_test, trunc_stats_test1, trunc_stats_test2, trunc_stats_test3, trunc_stats_test4;
556556
DROP TABLE prevstats;
557+
-----
558+
-- Test that various stats views are being properly populated
559+
-----
560+
-- Test that sessions is incremented when a new session is started in pg_stat_database
561+
SELECT sessions AS db_stat_sessions FROM pg_stat_database WHERE datname = (SELECT current_database()) \gset
562+
\c
563+
SELECT sessions > :db_stat_sessions FROM pg_stat_database WHERE datname = (SELECT current_database());
564+
?column?
565+
----------
566+
t
567+
(1 row)
568+
569+
-- Test pg_stat_bgwriter checkpointer-related stats, together with pg_stat_wal
570+
SELECT checkpoints_req AS rqst_ckpts_before FROM pg_stat_bgwriter \gset
571+
-- Test pg_stat_wal
572+
SELECT wal_bytes AS wal_bytes_before FROM pg_stat_wal \gset
573+
CREATE TABLE test_stats_temp AS SELECT 17;
574+
DROP TABLE test_stats_temp;
575+
-- Checkpoint twice: The checkpointer reports stats after reporting completion
576+
-- of the checkpoint. But after a second checkpoint we'll see at least the
577+
-- results of the first.
578+
CHECKPOINT;
579+
CHECKPOINT;
580+
SELECT checkpoints_req > :rqst_ckpts_before FROM pg_stat_bgwriter;
581+
?column?
582+
----------
583+
t
584+
(1 row)
585+
586+
SELECT wal_bytes > :wal_bytes_before FROM pg_stat_wal;
587+
?column?
588+
----------
589+
t
590+
(1 row)
591+
592+
-----
593+
-- Test that resetting stats works for reset timestamp
594+
-----
595+
-- Test that reset_slru with a specified SLRU works.
596+
SELECT stats_reset AS slru_commit_ts_reset_ts FROM pg_stat_slru WHERE name = 'CommitTs' \gset
597+
SELECT stats_reset AS slru_notify_reset_ts FROM pg_stat_slru WHERE name = 'Notify' \gset
598+
SELECT pg_stat_reset_slru('CommitTs');
599+
pg_stat_reset_slru
600+
--------------------
601+
602+
(1 row)
603+
604+
SELECT stats_reset > :'slru_commit_ts_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'CommitTs';
605+
?column?
606+
----------
607+
t
608+
(1 row)
609+
610+
SELECT stats_reset AS slru_commit_ts_reset_ts FROM pg_stat_slru WHERE name = 'CommitTs' \gset
611+
-- Test that multiple SLRUs are reset when no specific SLRU provided to reset function
612+
SELECT pg_stat_reset_slru(NULL);
613+
pg_stat_reset_slru
614+
--------------------
615+
616+
(1 row)
617+
618+
SELECT stats_reset > :'slru_commit_ts_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'CommitTs';
619+
?column?
620+
----------
621+
t
622+
(1 row)
623+
624+
SELECT stats_reset > :'slru_notify_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'Notify';
625+
?column?
626+
----------
627+
t
628+
(1 row)
629+
630+
-- Test that reset_shared with archiver specified as the stats type works
631+
SELECT stats_reset AS archiver_reset_ts FROM pg_stat_archiver \gset
632+
SELECT pg_stat_reset_shared('archiver');
633+
pg_stat_reset_shared
634+
----------------------
635+
636+
(1 row)
637+
638+
SELECT stats_reset > :'archiver_reset_ts'::timestamptz FROM pg_stat_archiver;
639+
?column?
640+
----------
641+
t
642+
(1 row)
643+
644+
SELECT stats_reset AS archiver_reset_ts FROM pg_stat_archiver \gset
645+
-- Test that reset_shared with bgwriter specified as the stats type works
646+
SELECT stats_reset AS bgwriter_reset_ts FROM pg_stat_bgwriter \gset
647+
SELECT pg_stat_reset_shared('bgwriter');
648+
pg_stat_reset_shared
649+
----------------------
650+
651+
(1 row)
652+
653+
SELECT stats_reset > :'bgwriter_reset_ts'::timestamptz FROM pg_stat_bgwriter;
654+
?column?
655+
----------
656+
t
657+
(1 row)
658+
659+
SELECT stats_reset AS bgwriter_reset_ts FROM pg_stat_bgwriter \gset
660+
-- Test that reset_shared with wal specified as the stats type works
661+
SELECT stats_reset AS wal_reset_ts FROM pg_stat_wal \gset
662+
SELECT pg_stat_reset_shared('wal');
663+
pg_stat_reset_shared
664+
----------------------
665+
666+
(1 row)
667+
668+
SELECT stats_reset > :'wal_reset_ts'::timestamptz FROM pg_stat_wal;
669+
?column?
670+
----------
671+
t
672+
(1 row)
673+
674+
SELECT stats_reset AS wal_reset_ts FROM pg_stat_wal \gset
675+
-- Test that reset_shared with no specified stats type doesn't reset anything
676+
SELECT pg_stat_reset_shared(NULL);
677+
pg_stat_reset_shared
678+
----------------------
679+
680+
(1 row)
681+
682+
SELECT stats_reset = :'archiver_reset_ts'::timestamptz FROM pg_stat_archiver;
683+
?column?
684+
----------
685+
t
686+
(1 row)
687+
688+
SELECT stats_reset = :'bgwriter_reset_ts'::timestamptz FROM pg_stat_bgwriter;
689+
?column?
690+
----------
691+
t
692+
(1 row)
693+
694+
SELECT stats_reset = :'wal_reset_ts'::timestamptz FROM pg_stat_wal;
695+
?column?
696+
----------
697+
t
698+
(1 row)
699+
700+
-- Test that reset works for pg_stat_database
701+
-- Since pg_stat_database stats_reset starts out as NULL, reset it once first so we have something to compare it to
702+
SELECT pg_stat_reset();
703+
pg_stat_reset
704+
---------------
705+
706+
(1 row)
707+
708+
SELECT stats_reset AS db_reset_ts FROM pg_stat_database WHERE datname = (SELECT current_database()) \gset
709+
SELECT pg_stat_reset();
710+
pg_stat_reset
711+
---------------
712+
713+
(1 row)
714+
715+
SELECT stats_reset > :'db_reset_ts'::timestamptz FROM pg_stat_database WHERE datname = (SELECT current_database());
716+
?column?
717+
----------
718+
t
719+
(1 row)
720+
721+
----
722+
-- pg_stat_get_snapshot_timestamp behavior
723+
----
724+
BEGIN;
725+
SET LOCAL stats_fetch_consistency = snapshot;
726+
-- no snapshot yet, return NULL
727+
SELECT pg_stat_get_snapshot_timestamp();
728+
pg_stat_get_snapshot_timestamp
729+
--------------------------------
730+
731+
(1 row)
732+
733+
-- any attempt at accessing stats will build snapshot
734+
SELECT pg_stat_get_function_calls(0);
735+
pg_stat_get_function_calls
736+
----------------------------
737+
738+
(1 row)
739+
740+
SELECT pg_stat_get_snapshot_timestamp() >= NOW();
741+
?column?
742+
----------
743+
t
744+
(1 row)
745+
746+
-- shows NULL again after clearing
747+
SELECT pg_stat_clear_snapshot();
748+
pg_stat_clear_snapshot
749+
------------------------
750+
751+
(1 row)
752+
753+
SELECT pg_stat_get_snapshot_timestamp();
754+
pg_stat_get_snapshot_timestamp
755+
--------------------------------
756+
757+
(1 row)
758+
759+
COMMIT;
760+
----
761+
-- pg_stat_have_stats behavior
762+
----
763+
-- fixed-numbered stats exist
764+
SELECT pg_stat_have_stats('bgwriter', 0, 0);
765+
pg_stat_have_stats
766+
--------------------
767+
t
768+
(1 row)
769+
770+
-- unknown stats kinds error out
771+
SELECT pg_stat_have_stats('zaphod', 0, 0);
772+
ERROR: invalid statistics kind: "zaphod"
773+
-- db stats have objoid 0
774+
SELECT pg_stat_have_stats('database', (SELECT oid FROM pg_database WHERE datname = current_database()), 1);
775+
pg_stat_have_stats
776+
--------------------
777+
f
778+
(1 row)
779+
780+
SELECT pg_stat_have_stats('database', (SELECT oid FROM pg_database WHERE datname = current_database()), 0);
781+
pg_stat_have_stats
782+
--------------------
783+
t
784+
(1 row)
785+
786+
-- ensure that stats accessors handle NULL input correctly
787+
SELECT pg_stat_get_replication_slot(NULL);
788+
pg_stat_get_replication_slot
789+
------------------------------
790+
791+
(1 row)
792+
793+
SELECT pg_stat_get_subscription_stats(NULL);
794+
pg_stat_get_subscription_stats
795+
--------------------------------
796+
797+
(1 row)
798+
557799
-- End of Stats Test

src/test/regress/sql/stats.sql

+111
Original file line numberDiff line numberDiff line change
@@ -285,4 +285,115 @@ SELECT pg_stat_get_live_tuples(:drop_stats_test_subxact_oid);
285285

286286
DROP TABLE trunc_stats_test, trunc_stats_test1, trunc_stats_test2, trunc_stats_test3, trunc_stats_test4;
287287
DROP TABLE prevstats;
288+
289+
290+
-----
291+
-- Test that various stats views are being properly populated
292+
-----
293+
294+
-- Test that sessions is incremented when a new session is started in pg_stat_database
295+
SELECT sessions AS db_stat_sessions FROM pg_stat_database WHERE datname = (SELECT current_database()) \gset
296+
\c
297+
SELECT sessions > :db_stat_sessions FROM pg_stat_database WHERE datname = (SELECT current_database());
298+
299+
-- Test pg_stat_bgwriter checkpointer-related stats, together with pg_stat_wal
300+
SELECT checkpoints_req AS rqst_ckpts_before FROM pg_stat_bgwriter \gset
301+
302+
-- Test pg_stat_wal
303+
SELECT wal_bytes AS wal_bytes_before FROM pg_stat_wal \gset
304+
305+
CREATE TABLE test_stats_temp AS SELECT 17;
306+
DROP TABLE test_stats_temp;
307+
308+
-- Checkpoint twice: The checkpointer reports stats after reporting completion
309+
-- of the checkpoint. But after a second checkpoint we'll see at least the
310+
-- results of the first.
311+
CHECKPOINT;
312+
CHECKPOINT;
313+
314+
SELECT checkpoints_req > :rqst_ckpts_before FROM pg_stat_bgwriter;
315+
SELECT wal_bytes > :wal_bytes_before FROM pg_stat_wal;
316+
317+
318+
-----
319+
-- Test that resetting stats works for reset timestamp
320+
-----
321+
322+
-- Test that reset_slru with a specified SLRU works.
323+
SELECT stats_reset AS slru_commit_ts_reset_ts FROM pg_stat_slru WHERE name = 'CommitTs' \gset
324+
SELECT stats_reset AS slru_notify_reset_ts FROM pg_stat_slru WHERE name = 'Notify' \gset
325+
SELECT pg_stat_reset_slru('CommitTs');
326+
SELECT stats_reset > :'slru_commit_ts_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'CommitTs';
327+
SELECT stats_reset AS slru_commit_ts_reset_ts FROM pg_stat_slru WHERE name = 'CommitTs' \gset
328+
329+
-- Test that multiple SLRUs are reset when no specific SLRU provided to reset function
330+
SELECT pg_stat_reset_slru(NULL);
331+
SELECT stats_reset > :'slru_commit_ts_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'CommitTs';
332+
SELECT stats_reset > :'slru_notify_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'Notify';
333+
334+
-- Test that reset_shared with archiver specified as the stats type works
335+
SELECT stats_reset AS archiver_reset_ts FROM pg_stat_archiver \gset
336+
SELECT pg_stat_reset_shared('archiver');
337+
SELECT stats_reset > :'archiver_reset_ts'::timestamptz FROM pg_stat_archiver;
338+
SELECT stats_reset AS archiver_reset_ts FROM pg_stat_archiver \gset
339+
340+
-- Test that reset_shared with bgwriter specified as the stats type works
341+
SELECT stats_reset AS bgwriter_reset_ts FROM pg_stat_bgwriter \gset
342+
SELECT pg_stat_reset_shared('bgwriter');
343+
SELECT stats_reset > :'bgwriter_reset_ts'::timestamptz FROM pg_stat_bgwriter;
344+
SELECT stats_reset AS bgwriter_reset_ts FROM pg_stat_bgwriter \gset
345+
346+
-- Test that reset_shared with wal specified as the stats type works
347+
SELECT stats_reset AS wal_reset_ts FROM pg_stat_wal \gset
348+
SELECT pg_stat_reset_shared('wal');
349+
SELECT stats_reset > :'wal_reset_ts'::timestamptz FROM pg_stat_wal;
350+
SELECT stats_reset AS wal_reset_ts FROM pg_stat_wal \gset
351+
352+
-- Test that reset_shared with no specified stats type doesn't reset anything
353+
SELECT pg_stat_reset_shared(NULL);
354+
SELECT stats_reset = :'archiver_reset_ts'::timestamptz FROM pg_stat_archiver;
355+
SELECT stats_reset = :'bgwriter_reset_ts'::timestamptz FROM pg_stat_bgwriter;
356+
SELECT stats_reset = :'wal_reset_ts'::timestamptz FROM pg_stat_wal;
357+
358+
-- Test that reset works for pg_stat_database
359+
360+
-- Since pg_stat_database stats_reset starts out as NULL, reset it once first so we have something to compare it to
361+
SELECT pg_stat_reset();
362+
SELECT stats_reset AS db_reset_ts FROM pg_stat_database WHERE datname = (SELECT current_database()) \gset
363+
SELECT pg_stat_reset();
364+
SELECT stats_reset > :'db_reset_ts'::timestamptz FROM pg_stat_database WHERE datname = (SELECT current_database());
365+
366+
367+
----
368+
-- pg_stat_get_snapshot_timestamp behavior
369+
----
370+
BEGIN;
371+
SET LOCAL stats_fetch_consistency = snapshot;
372+
-- no snapshot yet, return NULL
373+
SELECT pg_stat_get_snapshot_timestamp();
374+
-- any attempt at accessing stats will build snapshot
375+
SELECT pg_stat_get_function_calls(0);
376+
SELECT pg_stat_get_snapshot_timestamp() >= NOW();
377+
-- shows NULL again after clearing
378+
SELECT pg_stat_clear_snapshot();
379+
SELECT pg_stat_get_snapshot_timestamp();
380+
COMMIT;
381+
382+
----
383+
-- pg_stat_have_stats behavior
384+
----
385+
-- fixed-numbered stats exist
386+
SELECT pg_stat_have_stats('bgwriter', 0, 0);
387+
-- unknown stats kinds error out
388+
SELECT pg_stat_have_stats('zaphod', 0, 0);
389+
-- db stats have objoid 0
390+
SELECT pg_stat_have_stats('database', (SELECT oid FROM pg_database WHERE datname = current_database()), 1);
391+
SELECT pg_stat_have_stats('database', (SELECT oid FROM pg_database WHERE datname = current_database()), 0);
392+
393+
394+
-- ensure that stats accessors handle NULL input correctly
395+
SELECT pg_stat_get_replication_slot(NULL);
396+
SELECT pg_stat_get_subscription_stats(NULL);
397+
398+
288399
-- End of Stats Test

0 commit comments

Comments
 (0)