Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0df4eb3

Browse files
committed
Reinstate tests accidentally removed bye3fcca0
Commite3fcca0 reverted modifications to HOT for BRIN, but it alsoremoved a couple unrelated tests from stats.sql. Reinstate those tests.Reported-by: Peter Eisentraut
1 parent973137d commit0df4eb3

File tree

2 files changed

+353
-0
lines changed

2 files changed

+353
-0
lines changed

‎src/test/regress/expected/stats.out

Lines changed: 242 additions & 0 deletions
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

Lines changed: 111 additions & 0 deletions
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
DROPTABLE trunc_stats_test, trunc_stats_test1, trunc_stats_test2, trunc_stats_test3, trunc_stats_test4;
287287
DROPTABLE 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 sessionsAS db_stat_sessionsFROM pg_stat_databaseWHERE datname= (SELECT current_database()) \gset
296+
\c
297+
SELECT sessions> :db_stat_sessionsFROM pg_stat_databaseWHERE datname= (SELECT current_database());
298+
299+
-- Test pg_stat_bgwriter checkpointer-related stats, together with pg_stat_wal
300+
SELECT checkpoints_reqAS rqst_ckpts_beforeFROM pg_stat_bgwriter \gset
301+
302+
-- Test pg_stat_wal
303+
SELECT wal_bytesAS wal_bytes_beforeFROM pg_stat_wal \gset
304+
305+
CREATETABLEtest_stats_tempASSELECT17;
306+
DROPTABLE 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_beforeFROM pg_stat_bgwriter;
315+
SELECT wal_bytes> :wal_bytes_beforeFROM 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_resetAS slru_commit_ts_reset_tsFROM pg_stat_slruWHERE name='CommitTs' \gset
324+
SELECT stats_resetAS slru_notify_reset_tsFROM pg_stat_slruWHERE name='Notify' \gset
325+
SELECT pg_stat_reset_slru('CommitTs');
326+
SELECT stats_reset> :'slru_commit_ts_reset_ts'::timestamptzFROM pg_stat_slruWHERE name='CommitTs';
327+
SELECT stats_resetAS slru_commit_ts_reset_tsFROM pg_stat_slruWHERE 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'::timestamptzFROM pg_stat_slruWHERE name='CommitTs';
332+
SELECT stats_reset> :'slru_notify_reset_ts'::timestamptzFROM pg_stat_slruWHERE name='Notify';
333+
334+
-- Test that reset_shared with archiver specified as the stats type works
335+
SELECT stats_resetAS archiver_reset_tsFROM pg_stat_archiver \gset
336+
SELECT pg_stat_reset_shared('archiver');
337+
SELECT stats_reset> :'archiver_reset_ts'::timestamptzFROM pg_stat_archiver;
338+
SELECT stats_resetAS archiver_reset_tsFROM pg_stat_archiver \gset
339+
340+
-- Test that reset_shared with bgwriter specified as the stats type works
341+
SELECT stats_resetAS bgwriter_reset_tsFROM pg_stat_bgwriter \gset
342+
SELECT pg_stat_reset_shared('bgwriter');
343+
SELECT stats_reset> :'bgwriter_reset_ts'::timestamptzFROM pg_stat_bgwriter;
344+
SELECT stats_resetAS bgwriter_reset_tsFROM pg_stat_bgwriter \gset
345+
346+
-- Test that reset_shared with wal specified as the stats type works
347+
SELECT stats_resetAS wal_reset_tsFROM pg_stat_wal \gset
348+
SELECT pg_stat_reset_shared('wal');
349+
SELECT stats_reset> :'wal_reset_ts'::timestamptzFROM pg_stat_wal;
350+
SELECT stats_resetAS wal_reset_tsFROM 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'::timestamptzFROM pg_stat_archiver;
355+
SELECT stats_reset= :'bgwriter_reset_ts'::timestamptzFROM pg_stat_bgwriter;
356+
SELECT stats_reset= :'wal_reset_ts'::timestamptzFROM 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_resetAS db_reset_tsFROM pg_stat_databaseWHERE datname= (SELECT current_database()) \gset
363+
SELECT pg_stat_reset();
364+
SELECT stats_reset> :'db_reset_ts'::timestamptzFROM pg_stat_databaseWHERE 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', (SELECToidFROM pg_databaseWHERE datname= current_database()),1);
391+
SELECT pg_stat_have_stats('database', (SELECToidFROM pg_databaseWHERE 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)

[8]ページ先頭

©2009-2025 Movatter.jp