@@ -66,7 +66,8 @@ DROP SERVER server_stats;
66
66
DROP FOREIGN DATA WRAPPER wrapper_stats;
67
67
-- Functions
68
68
CREATE FUNCTION func_stats(a text DEFAULT 'a_data', b text DEFAULT lower('b_data'))
69
- RETURNS text AS $$ SELECT $1::text || '_' || $2::text; $$ LANGUAGE SQL;
69
+ RETURNS text AS $$ SELECT $1::text || '_' || $2::text; $$ LANGUAGE SQL
70
+ SET work_mem = '256kB';
70
71
DROP FUNCTION func_stats;
71
72
-- Rules
72
73
CREATE TABLE tab_rule_stats (a int, b int);
@@ -106,7 +107,8 @@ SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C";
106
107
1 | 0 | CREATE FOREIGN DATA WRAPPER wrapper_stats
107
108
1 | 0 | CREATE FOREIGN TABLE foreign_stats (a int) SERVER server_stats
108
109
1 | 0 | CREATE FUNCTION func_stats(a text DEFAULT 'a_data', b text DEFAULT lower('b_data'))+
109
- | | RETURNS text AS $$ SELECT $1::text || '_' || $2::text; $$ LANGUAGE SQL
110
+ | | RETURNS text AS $$ SELECT $1::text || '_' || $2::text; $$ LANGUAGE SQL +
111
+ | | SET work_mem = '256kB'
110
112
1 | 0 | CREATE FUNCTION trigger_func_stats () RETURNS trigger LANGUAGE plpgsql +
111
113
| | AS $$ BEGIN return OLD; end; $$
112
114
1 | 0 | CREATE INDEX pt_stats2_index ON ONLY pt_stats2 (a)
@@ -551,46 +553,104 @@ SELECT pg_stat_statements_reset() IS NOT NULL AS t;
551
553
552
554
-- SET statements.
553
555
-- These use two different strings, still they count as one entry.
556
+ CREATE ROLE regress_stat_set_1;
557
+ CREATE ROLE regress_stat_set_2;
554
558
SET work_mem = '1MB';
555
559
Set work_mem = '1MB';
556
560
SET work_mem = '2MB';
561
+ SET work_mem = DEFAULT;
562
+ SET work_mem TO DEFAULT;
563
+ SET work_mem FROM CURRENT;
564
+ BEGIN;
565
+ SET LOCAL work_mem = '128kB';
566
+ SET LOCAL work_mem = '256kB';
567
+ SET LOCAL work_mem = DEFAULT;
568
+ SET LOCAL work_mem TO DEFAULT;
569
+ SET LOCAL work_mem FROM CURRENT;
570
+ COMMIT;
557
571
RESET work_mem;
558
572
SET enable_seqscan = off;
559
573
SET enable_seqscan = on;
574
+ SET SESSION work_mem = '300kB';
575
+ SET SESSION work_mem = '400kB';
560
576
RESET enable_seqscan;
561
577
-- SET TRANSACTION ISOLATION
562
578
BEGIN;
563
579
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
564
580
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
565
581
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
566
582
COMMIT;
567
- -- SET SESSION CHARACTERISTICS
583
+ -- SET SESSION AUTHORIZATION
568
584
SET SESSION SESSION AUTHORIZATION DEFAULT;
585
+ SET SESSION AUTHORIZATION 'regress_stat_set_1';
586
+ SET SESSION AUTHORIZATION 'regress_stat_set_2';
569
587
RESET SESSION AUTHORIZATION;
570
588
BEGIN;
571
589
SET LOCAL SESSION AUTHORIZATION DEFAULT;
590
+ SET LOCAL SESSION AUTHORIZATION 'regress_stat_set_1';
591
+ SET LOCAL SESSION AUTHORIZATION 'regress_stat_set_2';
572
592
RESET SESSION AUTHORIZATION;
573
593
COMMIT;
594
+ -- SET SESSION CHARACTERISTICS
595
+ SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY;
596
+ SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY, READ ONLY;
597
+ SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY, READ WRITE;
598
+ -- SET XML OPTION
599
+ SET XML OPTION DOCUMENT;
600
+ SET XML OPTION CONTENT;
601
+ -- SET TIME ZONE
602
+ SET TIME ZONE 'America/New_York';
603
+ SET TIME ZONE 'Asia/Tokyo';
604
+ SET TIME ZONE DEFAULT;
605
+ SET TIME ZONE LOCAL;
606
+ SET TIME ZONE 'CST7CDT,M4.1.0,M10.5.0';
607
+ RESET TIME ZONE;
574
608
SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C";
575
- calls | rows | query
576
- -------+------+----------------------------------------------------
577
- 2 | 0 | BEGIN
578
- 2 | 0 | COMMIT
609
+ calls | rows | query
610
+ -------+------+------------------------------------------------------------------
611
+ 3 | 0 | BEGIN
612
+ 3 | 0 | COMMIT
613
+ 1 | 0 | CREATE ROLE regress_stat_set_1
614
+ 1 | 0 | CREATE ROLE regress_stat_set_2
579
615
2 | 0 | RESET SESSION AUTHORIZATION
616
+ 1 | 0 | RESET TIME ZONE
580
617
1 | 0 | RESET enable_seqscan
581
618
1 | 0 | RESET work_mem
582
619
1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t
620
+ 1 | 0 | SET LOCAL SESSION AUTHORIZATION 'regress_stat_set_1'
621
+ 1 | 0 | SET LOCAL SESSION AUTHORIZATION 'regress_stat_set_2'
583
622
1 | 0 | SET LOCAL SESSION AUTHORIZATION DEFAULT
623
+ 1 | 0 | SET LOCAL work_mem = '128kB'
624
+ 1 | 0 | SET LOCAL work_mem = '256kB'
625
+ 2 | 0 | SET LOCAL work_mem = DEFAULT
626
+ 1 | 0 | SET LOCAL work_mem FROM CURRENT
627
+ 1 | 0 | SET SESSION AUTHORIZATION 'regress_stat_set_1'
628
+ 1 | 0 | SET SESSION AUTHORIZATION 'regress_stat_set_2'
629
+ 1 | 0 | SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY
630
+ 1 | 0 | SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY, READ ONLY
631
+ 1 | 0 | SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY, READ WRITE
584
632
1 | 0 | SET SESSION SESSION AUTHORIZATION DEFAULT
633
+ 1 | 0 | SET SESSION work_mem = '300kB'
634
+ 1 | 0 | SET SESSION work_mem = '400kB'
635
+ 1 | 0 | SET TIME ZONE 'America/New_York'
636
+ 1 | 0 | SET TIME ZONE 'Asia/Tokyo'
637
+ 1 | 0 | SET TIME ZONE 'CST7CDT,M4.1.0,M10.5.0'
638
+ 2 | 0 | SET TIME ZONE DEFAULT
585
639
1 | 0 | SET TRANSACTION ISOLATION LEVEL READ COMMITTED
586
640
1 | 0 | SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
587
641
1 | 0 | SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
642
+ 1 | 0 | SET XML OPTION CONTENT
643
+ 1 | 0 | SET XML OPTION DOCUMENT
588
644
1 | 0 | SET enable_seqscan = off
589
645
1 | 0 | SET enable_seqscan = on
590
646
2 | 0 | SET work_mem = '1MB'
591
647
1 | 0 | SET work_mem = '2MB'
592
- (15 rows)
648
+ 2 | 0 | SET work_mem = DEFAULT
649
+ 1 | 0 | SET work_mem FROM CURRENT
650
+ (39 rows)
593
651
652
+ DROP ROLE regress_stat_set_1;
653
+ DROP ROLE regress_stat_set_2;
594
654
SELECT pg_stat_statements_reset() IS NOT NULL AS t;
595
655
t
596
656
---
@@ -664,3 +724,22 @@ SELECT pg_stat_statements_reset() IS NOT NULL AS t;
664
724
t
665
725
(1 row)
666
726
727
+ -- Special cases. Keep these ones at the end to avoid conflicts.
728
+ SET SCHEMA 'foo';
729
+ SET SCHEMA 'public';
730
+ RESET ALL;
731
+ SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C";
732
+ calls | rows | query
733
+ -------+------+----------------------------------------------------
734
+ 1 | 0 | RESET ALL
735
+ 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t
736
+ 1 | 0 | SET SCHEMA 'foo'
737
+ 1 | 0 | SET SCHEMA 'public'
738
+ (4 rows)
739
+
740
+ SELECT pg_stat_statements_reset() IS NOT NULL AS t;
741
+ t
742
+ ---
743
+ t
744
+ (1 row)
745
+
0 commit comments