Split event_trigger_login test from event_trigger test
authorAlexander Korotkov <akorotkov@postgresql.org>
Fri, 27 Oct 2023 20:50:07 +0000 (23:50 +0300)
committerAlexander Korotkov <akorotkov@postgresql.org>
Fri, 27 Oct 2023 20:50:07 +0000 (23:50 +0300)
That allows to still run event_trigger test in parallel with oidjoins test,
and save ~50ms of tests runtime.

Discussion: https://postgr.es/m/202310271047.mnwkql6nhbwi%40alvherre.pgsql
Author: Alvaro Herrera, Alexander Korotkov

src/test/regress/expected/event_trigger.out
src/test/regress/expected/event_trigger_login.out [new file with mode: 0644]
src/test/regress/parallel_schedule
src/test/regress/sql/event_trigger.sql
src/test/regress/sql/event_trigger_login.sql [new file with mode: 0644]

index eaaff6ba6f1050dfae642fc178802e0bba6be997..0b87a42d0a9ac6ba17fd86ad926fc33001a22cc7 100644 (file)
@@ -638,48 +638,3 @@ NOTICE:  DROP POLICY dropped policy
 CREATE POLICY pguc ON event_trigger_test USING (FALSE);
 SET event_triggers = 'off';
 DROP POLICY pguc ON event_trigger_test;
--- Login event triggers
-CREATE TABLE user_logins(id serial, who text);
-GRANT SELECT ON user_logins TO public;
-CREATE FUNCTION on_login_proc() RETURNS event_trigger AS $$
-BEGIN
-  INSERT INTO user_logins (who) VALUES (SESSION_USER);
-  RAISE NOTICE 'You are welcome!';
-END;
-$$ LANGUAGE plpgsql;
-CREATE EVENT TRIGGER on_login_trigger ON login EXECUTE PROCEDURE on_login_proc();
-ALTER EVENT TRIGGER on_login_trigger ENABLE ALWAYS;
-\c
-NOTICE:  You are welcome!
-SELECT COUNT(*) FROM user_logins;
- count 
--------
-     1
-(1 row)
-
-\c
-NOTICE:  You are welcome!
-SELECT COUNT(*) FROM user_logins;
- count 
--------
-     2
-(1 row)
-
--- Check dathasloginevt in system catalog
-SELECT dathasloginevt FROM pg_database WHERE datname= :'DBNAME';
- dathasloginevt 
-----------------
- t
-(1 row)
-
--- Cleanup
-DROP TABLE user_logins;
-DROP EVENT TRIGGER on_login_trigger;
-DROP FUNCTION on_login_proc();
-\c
-SELECT dathasloginevt FROM pg_database WHERE datname= :'DBNAME';
- dathasloginevt 
-----------------
- f
-(1 row)
-
diff --git a/src/test/regress/expected/event_trigger_login.out b/src/test/regress/expected/event_trigger_login.out
new file mode 100644 (file)
index 0000000..1748795
--- /dev/null
@@ -0,0 +1,45 @@
+-- Login event triggers
+CREATE TABLE user_logins(id serial, who text);
+GRANT SELECT ON user_logins TO public;
+CREATE FUNCTION on_login_proc() RETURNS event_trigger AS $$
+BEGIN
+  INSERT INTO user_logins (who) VALUES (SESSION_USER);
+  RAISE NOTICE 'You are welcome!';
+END;
+$$ LANGUAGE plpgsql;
+CREATE EVENT TRIGGER on_login_trigger ON login EXECUTE PROCEDURE on_login_proc();
+ALTER EVENT TRIGGER on_login_trigger ENABLE ALWAYS;
+\c
+NOTICE:  You are welcome!
+SELECT COUNT(*) FROM user_logins;
+ count 
+-------
+     1
+(1 row)
+
+\c
+NOTICE:  You are welcome!
+SELECT COUNT(*) FROM user_logins;
+ count 
+-------
+     2
+(1 row)
+
+-- Check dathasloginevt in system catalog
+SELECT dathasloginevt FROM pg_database WHERE datname= :'DBNAME';
+ dathasloginevt 
+----------------
+ t
+(1 row)
+
+-- Cleanup
+DROP TABLE user_logins;
+DROP EVENT TRIGGER on_login_trigger;
+DROP FUNCTION on_login_proc();
+\c
+SELECT dathasloginevt FROM pg_database WHERE datname= :'DBNAME';
+ dathasloginevt 
+----------------
+ f
+(1 row)
+
index 512cb97dfd90342a8c0bbbb5f1d935ab5332fbb1..f0987ff537bdf0e12fb14c82d624fb0f1e8585ce 100644 (file)
@@ -121,12 +121,14 @@ test: plancache limit plpgsql copy2 temp domain rangefuncs prepare conversion tr
 # ----------
 test: partition_join partition_prune reloptions hash_part indexing partition_aggregate partition_info tuplesort explain compression memoize stats
 
-# event_trigger cannot run concurrently with any other tests because
-# on-login event handling could catch connection of a concurrent test.
-test: event_trigger
+# event_trigger depends on create_am and cannot run concurrently with
+# any test that runs DDL
+# oidjoins is read-only, though, and should run late for best coverage
+test: oidjoins event_trigger
 
-# oidjoins should run late for best coverage
-test: oidjoins
+# event_trigger_login cannot run concurrently with any other tests because
+# on-login event handling could catch connection of a concurrent test.
+test: event_trigger_login
 
 # this test also uses event triggers, so likewise run it by itself
 test: fast_default
index 9c2b7903fbaecf650aa1ecdb64f7d0136d7946fe..6f0933b9e88aa53ef0d6eb10a1b0a8a4c5b03ba6 100644 (file)
@@ -495,29 +495,3 @@ DROP POLICY pguc ON event_trigger_test;
 CREATE POLICY pguc ON event_trigger_test USING (FALSE);
 SET event_triggers = 'off';
 DROP POLICY pguc ON event_trigger_test;
-
--- Login event triggers
-CREATE TABLE user_logins(id serial, who text);
-GRANT SELECT ON user_logins TO public;
-CREATE FUNCTION on_login_proc() RETURNS event_trigger AS $$
-BEGIN
-  INSERT INTO user_logins (who) VALUES (SESSION_USER);
-  RAISE NOTICE 'You are welcome!';
-END;
-$$ LANGUAGE plpgsql;
-CREATE EVENT TRIGGER on_login_trigger ON login EXECUTE PROCEDURE on_login_proc();
-ALTER EVENT TRIGGER on_login_trigger ENABLE ALWAYS;
-\c
-SELECT COUNT(*) FROM user_logins;
-\c
-SELECT COUNT(*) FROM user_logins;
-
--- Check dathasloginevt in system catalog
-SELECT dathasloginevt FROM pg_database WHERE datname= :'DBNAME';
-
--- Cleanup
-DROP TABLE user_logins;
-DROP EVENT TRIGGER on_login_trigger;
-DROP FUNCTION on_login_proc();
-\c
-SELECT dathasloginevt FROM pg_database WHERE datname= :'DBNAME';
diff --git a/src/test/regress/sql/event_trigger_login.sql b/src/test/regress/sql/event_trigger_login.sql
new file mode 100644 (file)
index 0000000..b8e39f7
--- /dev/null
@@ -0,0 +1,25 @@
+-- Login event triggers
+CREATE TABLE user_logins(id serial, who text);
+GRANT SELECT ON user_logins TO public;
+CREATE FUNCTION on_login_proc() RETURNS event_trigger AS $$
+BEGIN
+  INSERT INTO user_logins (who) VALUES (SESSION_USER);
+  RAISE NOTICE 'You are welcome!';
+END;
+$$ LANGUAGE plpgsql;
+CREATE EVENT TRIGGER on_login_trigger ON login EXECUTE PROCEDURE on_login_proc();
+ALTER EVENT TRIGGER on_login_trigger ENABLE ALWAYS;
+\c
+SELECT COUNT(*) FROM user_logins;
+\c
+SELECT COUNT(*) FROM user_logins;
+
+-- Check dathasloginevt in system catalog
+SELECT dathasloginevt FROM pg_database WHERE datname= :'DBNAME';
+
+-- Cleanup
+DROP TABLE user_logins;
+DROP EVENT TRIGGER on_login_trigger;
+DROP FUNCTION on_login_proc();
+\c
+SELECT dathasloginevt FROM pg_database WHERE datname= :'DBNAME';