From 5c6a5fe18b2e8d1b4ec128c0441aca6d13d44121 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Sat, 19 Oct 2002 01:35:43 +0000 Subject: [PATCH] Make regression tests safe for autocommit = 'off'. --- src/test/regress/expected/alter_table.out | 1 + src/test/regress/expected/copy2.out | 1 + src/test/regress/expected/domain.out | 2 ++ src/test/regress/expected/privileges.out | 4 ++++ src/test/regress/expected/temp.out | 1 + src/test/regress/pg_regress.sh | 15 ++++++++++----- src/test/regress/sql/alter_table.sql | 1 + src/test/regress/sql/copy2.sql | 1 + src/test/regress/sql/domain.sql | 4 ++++ src/test/regress/sql/privileges.sql | 8 ++++++++ src/test/regress/sql/temp.sql | 1 + 11 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out index f604c1c0dd..4d61811045 100644 --- a/src/test/regress/expected/alter_table.out +++ b/src/test/regress/expected/alter_table.out @@ -993,6 +993,7 @@ ERROR: Relation "test" has no column "........pg.dropped.1........" copy test from stdin; ERROR: copy: line 1, Extra data after last expected column lost synchronization with server, resetting connection +SET autocommit TO 'on'; select * from test; b | c ---+--- diff --git a/src/test/regress/expected/copy2.out b/src/test/regress/expected/copy2.out index a024131310..cf28af8c19 100644 --- a/src/test/regress/expected/copy2.out +++ b/src/test/regress/expected/copy2.out @@ -46,6 +46,7 @@ lost synchronization with server, resetting connection COPY x from stdin; ERROR: copy: line 1, Extra data after last expected column lost synchronization with server, resetting connection +SET autocommit TO 'on'; -- various COPY options: delimiters, oids, NULL string COPY x (b, c, d, e) from stdin with oids delimiter ',' null 'x'; -- check results of copy in diff --git a/src/test/regress/expected/domain.out b/src/test/regress/expected/domain.out index 79953d472c..e82ce6fdf0 100644 --- a/src/test/regress/expected/domain.out +++ b/src/test/regress/expected/domain.out @@ -41,6 +41,7 @@ INSERT INTO basictest values ('88', 'haha', 'short', '123.1212'); -- Truncate COPY basictest (testvarchar) FROM stdin; -- fail ERROR: copy: line 1, value too long for type character varying(5) lost synchronization with server, resetting connection +SET autocommit TO 'on'; COPY basictest (testvarchar) FROM stdin; select * from basictest; testint4 | testtext | testvarchar | testnumeric @@ -122,6 +123,7 @@ INSERT INTO nulltest values ('a', 'b', 'c', NULL); -- Good COPY nulltest FROM stdin; --fail ERROR: copy: line 1, CopyFrom: Fail to add null value in not null attribute col3 lost synchronization with server, resetting connection +SET autocommit TO 'on'; COPY nulltest FROM stdin; select * from nulltest; col1 | col2 | col3 | col4 diff --git a/src/test/regress/expected/privileges.out b/src/test/regress/expected/privileges.out index 092b8e2e77..c962879e40 100644 --- a/src/test/regress/expected/privileges.out +++ b/src/test/regress/expected/privileges.out @@ -220,6 +220,7 @@ ERROR: atest2: permission denied -- privileges on functions, languages -- switch to superuser \c - +SET autocommit TO 'on'; REVOKE ALL PRIVILEGES ON LANGUAGE sql FROM PUBLIC; GRANT USAGE ON LANGUAGE sql TO regressuser1; -- ok GRANT USAGE ON LANGUAGE c TO PUBLIC; -- fail @@ -270,6 +271,7 @@ SELECT testfunc1(5); -- ok DROP FUNCTION testfunc1(int); -- fail ERROR: testfunc1: must be owner \c - +SET autocommit TO 'on'; DROP FUNCTION testfunc1(int); -- ok -- restore to sanity GRANT ALL PRIVILEGES ON LANGUAGE sql TO PUBLIC; @@ -293,6 +295,7 @@ select has_table_privilege(1,'rule'); ERROR: pg_class_aclcheck: relation 1 not found -- superuser \c - +SET autocommit TO 'on'; select has_table_privilege(current_user,'pg_shadow','select'); has_table_privilege --------------------- @@ -543,6 +546,7 @@ from (select oid from pg_class where relname = 'atest1') as t1; -- clean up \c regression +SET autocommit TO 'on'; DROP FUNCTION testfunc2(int); DROP FUNCTION testfunc4(boolean); DROP VIEW atestv1; diff --git a/src/test/regress/expected/temp.out b/src/test/regress/expected/temp.out index a3a583ec62..1800b9ebe5 100644 --- a/src/test/regress/expected/temp.out +++ b/src/test/regress/expected/temp.out @@ -33,5 +33,6 @@ DROP TABLE temptest; CREATE TEMP TABLE temptest(col int); -- test temp table deletion \c regression +SET autocommit TO 'on'; SELECT * FROM temptest; ERROR: Relation "temptest" does not exist diff --git a/src/test/regress/pg_regress.sh b/src/test/regress/pg_regress.sh index c700791a54..cfc6275a3d 100644 --- a/src/test/regress/pg_regress.sh +++ b/src/test/regress/pg_regress.sh @@ -1,5 +1,5 @@ #! /bin/sh -# $Header: /cvsroot/pgsql/src/test/regress/Attic/pg_regress.sh,v 1.27 2002/09/04 18:04:57 petere Exp $ +# $Header: /cvsroot/pgsql/src/test/regress/Attic/pg_regress.sh,v 1.28 2002/10/19 01:35:43 momjian Exp $ me=`basename $0` : ${TMPDIR=/tmp} @@ -420,7 +420,7 @@ fi # Set up SQL shell for the test. # ---------- -PSQL="$bindir/psql -a -q -X $psql_options" +PSQL="$bindir/psql -q -X $psql_options" # ---------- @@ -473,7 +473,7 @@ fi # ---------- message "dropping regression test user accounts" -"$bindir/psql" $psql_options -c 'drop group regressgroup1; drop group regressgroup2; drop user regressuser1, regressuser2, regressuser3, regressuser4;' $dbname 2>/dev/null +"$bindir/psql" $psql_options -c 'SET autocommit TO on;DROP GROUP regressgroup1; DROP GROUP regressgroup2; DROP USER regressuser1, regressuser2, regressuser3, regressuser4;' $dbname 2>/dev/null if [ $? -eq 2 ]; then echo "$me: could not drop user accounts" (exit 2); exit @@ -545,12 +545,17 @@ do formatted=`echo $1 | awk '{printf "%-20.20s", $1;}'` $ECHO_N "test $formatted ... $ECHO_C" - $PSQL -d "$dbname" <"$inputdir/sql/$1.sql" >"$outputdir/results/$1.out" 2>&1 + # use awk to properly output backslashes + (echo "SET autocommit TO 'on';"; awk 'BEGIN {printf "\\set ECHO all\n"}'; cat "$inputdir/sql/$1.sql") | + $PSQL -d "$dbname" >"$outputdir/results/$1.out" 2>&1 else # Start a parallel group $ECHO_N "parallel group ($# tests): $ECHO_C" for name do - ( $PSQL -d $dbname <"$inputdir/sql/$name.sql" >"$outputdir/results/$name.out" 2>&1 + ( + # use awk to properly output backslashes + (echo "SET autocommit TO 'on';"; awk 'BEGIN {printf "\\set ECHO all\n"}'; cat "$inputdir/sql/$name.sql") | + $PSQL -d $dbname >"$outputdir/results/$name.out" 2>&1 $ECHO_N " $name$ECHO_C" ) & done diff --git a/src/test/regress/sql/alter_table.sql b/src/test/regress/sql/alter_table.sql index b74df5a725..7fcfb09df2 100644 --- a/src/test/regress/sql/alter_table.sql +++ b/src/test/regress/sql/alter_table.sql @@ -718,6 +718,7 @@ copy test("........pg.dropped.1........") to stdout; copy test from stdin; 10 11 12 \. +SET autocommit TO 'on'; select * from test; copy test from stdin; 21 22 diff --git a/src/test/regress/sql/copy2.sql b/src/test/regress/sql/copy2.sql index 72c52dba11..b036cb1b7f 100644 --- a/src/test/regress/sql/copy2.sql +++ b/src/test/regress/sql/copy2.sql @@ -71,6 +71,7 @@ COPY x from stdin; 2002 232 40 50 60 70 80 \. +SET autocommit TO 'on'; -- various COPY options: delimiters, oids, NULL string COPY x (b, c, d, e) from stdin with oids delimiter ',' null 'x'; 500000,x,45,80,90 diff --git a/src/test/regress/sql/domain.sql b/src/test/regress/sql/domain.sql index 98ed4248cc..4d210cd4aa 100644 --- a/src/test/regress/sql/domain.sql +++ b/src/test/regress/sql/domain.sql @@ -41,6 +41,8 @@ COPY basictest (testvarchar) FROM stdin; -- fail notsoshorttext \. +SET autocommit TO 'on'; + COPY basictest (testvarchar) FROM stdin; short \. @@ -100,6 +102,8 @@ COPY nulltest FROM stdin; --fail a b \N d \. +SET autocommit TO 'on'; + COPY nulltest FROM stdin; a b c \N \. diff --git a/src/test/regress/sql/privileges.sql b/src/test/regress/sql/privileges.sql index 95e5c14f1a..1d1bde3bdd 100644 --- a/src/test/regress/sql/privileges.sql +++ b/src/test/regress/sql/privileges.sql @@ -147,6 +147,8 @@ SELECT * FROM atestv2; -- fail (even though regressuser2 can access underlying a -- switch to superuser \c - +SET autocommit TO 'on'; + REVOKE ALL PRIVILEGES ON LANGUAGE sql FROM PUBLIC; GRANT USAGE ON LANGUAGE sql TO regressuser1; -- ok GRANT USAGE ON LANGUAGE c TO PUBLIC; -- fail @@ -182,6 +184,8 @@ SELECT testfunc1(5); -- ok DROP FUNCTION testfunc1(int); -- fail \c - +SET autocommit TO 'on'; + DROP FUNCTION testfunc1(int); -- ok -- restore to sanity GRANT ALL PRIVILEGES ON LANGUAGE sql TO PUBLIC; @@ -199,6 +203,8 @@ select has_table_privilege(1,'rule'); -- superuser \c - +SET autocommit TO 'on'; + select has_table_privilege(current_user,'pg_shadow','select'); select has_table_privilege(current_user,'pg_shadow','insert'); @@ -290,6 +296,8 @@ from (select oid from pg_class where relname = 'atest1') as t1; -- clean up \c regression +SET autocommit TO 'on'; + DROP FUNCTION testfunc2(int); DROP FUNCTION testfunc4(boolean); diff --git a/src/test/regress/sql/temp.sql b/src/test/regress/sql/temp.sql index 8033405ff9..6f45b2eaac 100644 --- a/src/test/regress/sql/temp.sql +++ b/src/test/regress/sql/temp.sql @@ -44,6 +44,7 @@ CREATE TEMP TABLE temptest(col int); -- test temp table deletion \c regression +SET autocommit TO 'on'; SELECT * FROM temptest; -- 2.11.0