@@ -66,7 +66,8 @@ DROP SERVER server_stats;
6666DROP FOREIGN DATA WRAPPER wrapper_stats;
6767-- Functions
6868CREATE 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';
7071DROP FUNCTION func_stats;
7172-- Rules
7273CREATE 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";
106107 1 | 0 | CREATE FOREIGN DATA WRAPPER wrapper_stats
107108 1 | 0 | CREATE FOREIGN TABLE foreign_stats (a int) SERVER server_stats
108109 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'
110112 1 | 0 | CREATE FUNCTION trigger_func_stats () RETURNS trigger LANGUAGE plpgsql +
111113 | | AS $$ BEGIN return OLD; end; $$
112114 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;
551553
552554-- SET statements.
553555-- 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;
554558SET work_mem = '1MB';
555559Set work_mem = '1MB';
556560SET 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;
557571RESET work_mem;
558572SET enable_seqscan = off;
559573SET enable_seqscan = on;
574+ SET SESSION work_mem = '300kB';
575+ SET SESSION work_mem = '400kB';
560576RESET enable_seqscan;
561577-- SET TRANSACTION ISOLATION
562578BEGIN;
563579SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
564580SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
565581SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
566582COMMIT;
567- -- SET SESSION CHARACTERISTICS
583+ -- SET SESSION AUTHORIZATION
568584SET SESSION SESSION AUTHORIZATION DEFAULT;
585+ SET SESSION AUTHORIZATION 'regress_stat_set_1';
586+ SET SESSION AUTHORIZATION 'regress_stat_set_2';
569587RESET SESSION AUTHORIZATION;
570588BEGIN;
571589SET LOCAL SESSION AUTHORIZATION DEFAULT;
590+ SET LOCAL SESSION AUTHORIZATION 'regress_stat_set_1';
591+ SET LOCAL SESSION AUTHORIZATION 'regress_stat_set_2';
572592RESET SESSION AUTHORIZATION;
573593COMMIT;
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;
574608SELECT 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
579615 2 | 0 | RESET SESSION AUTHORIZATION
616+ 1 | 0 | RESET TIME ZONE
580617 1 | 0 | RESET enable_seqscan
581618 1 | 0 | RESET work_mem
582619 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'
583622 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
584632 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
585639 1 | 0 | SET TRANSACTION ISOLATION LEVEL READ COMMITTED
586640 1 | 0 | SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
587641 1 | 0 | SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
642+ 1 | 0 | SET XML OPTION CONTENT
643+ 1 | 0 | SET XML OPTION DOCUMENT
588644 1 | 0 | SET enable_seqscan = off
589645 1 | 0 | SET enable_seqscan = on
590646 2 | 0 | SET work_mem = '1MB'
591647 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)
593651
652+ DROP ROLE regress_stat_set_1;
653+ DROP ROLE regress_stat_set_2;
594654SELECT pg_stat_statements_reset() IS NOT NULL AS t;
595655 t
596656---
@@ -664,3 +724,22 @@ SELECT pg_stat_statements_reset() IS NOT NULL AS t;
664724 t
665725(1 row)
666726
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