提交 5c6a5fe1 编写于 作者: B Bruce Momjian

Make regression tests safe for autocommit = 'off'.

上级 5a0a79d6
......@@ -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
---+---
......
......@@ -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
......
......@@ -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
......
......@@ -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;
......
......@@ -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
#! /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
......
......@@ -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
......
......@@ -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
......
......@@ -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
\.
......
......@@ -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);
......
......@@ -44,6 +44,7 @@ CREATE TEMP TABLE temptest(col int);
-- test temp table deletion
\c regression
SET autocommit TO 'on';
SELECT * FROM temptest;
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册