psql: Add various tests

Add tests for psql features

- AUTOCOMMIT
- ON_ERROR_ROLLBACK
- ECHO errors

Reviewed-by: Fabien COELHO <coelho@cri.ensmp.fr>
Discussion: https://www.postgresql.org/message-id/6954328d-96f2-77f7-735f-7ce493a40949%40enterprisedb.com
This commit is contained in:
Peter Eisentraut 2021-09-29 23:16:00 +02:00
parent ff9f111bce
commit 14d755b000
2 changed files with 162 additions and 0 deletions

View File

@ -5179,3 +5179,102 @@ List of access methods
pg_catalog | && | anyarray | anyarray | boolean | overlaps
(1 row)
-- AUTOCOMMIT
CREATE TABLE ac_test (a int);
\set AUTOCOMMIT off
INSERT INTO ac_test VALUES (1);
COMMIT;
SELECT * FROM ac_test;
a
---
1
(1 row)
COMMIT;
INSERT INTO ac_test VALUES (2);
ROLLBACK;
SELECT * FROM ac_test;
a
---
1
(1 row)
COMMIT;
BEGIN;
INSERT INTO ac_test VALUES (3);
COMMIT;
SELECT * FROM ac_test;
a
---
1
3
(2 rows)
COMMIT;
BEGIN;
INSERT INTO ac_test VALUES (4);
ROLLBACK;
SELECT * FROM ac_test;
a
---
1
3
(2 rows)
COMMIT;
\set AUTOCOMMIT on
DROP TABLE ac_test;
SELECT * FROM ac_test; -- should be gone now
ERROR: relation "ac_test" does not exist
LINE 1: SELECT * FROM ac_test;
^
-- ON_ERROR_ROLLBACK
\set ON_ERROR_ROLLBACK on
CREATE TABLE oer_test (a int);
BEGIN;
INSERT INTO oer_test VALUES (1);
INSERT INTO oer_test VALUES ('foo');
ERROR: invalid input syntax for type integer: "foo"
LINE 1: INSERT INTO oer_test VALUES ('foo');
^
INSERT INTO oer_test VALUES (3);
COMMIT;
SELECT * FROM oer_test;
a
---
1
3
(2 rows)
BEGIN;
INSERT INTO oer_test VALUES (4);
ROLLBACK;
SELECT * FROM oer_test;
a
---
1
3
(2 rows)
BEGIN;
INSERT INTO oer_test VALUES (5);
COMMIT AND CHAIN;
INSERT INTO oer_test VALUES (6);
COMMIT;
SELECT * FROM oer_test;
a
---
1
3
5
6
(4 rows)
DROP TABLE oer_test;
\set ON_ERROR_ROLLBACK off
-- ECHO errors
\set ECHO errors
ERROR: relation "notexists" does not exist
LINE 1: SELECT * FROM notexists;
^
STATEMENT: SELECT * FROM notexists;

View File

@ -1241,3 +1241,66 @@ drop role regress_partitioning_role;
\dfa bit* small*
\do - pg_catalog.int4
\do && anyarray *
-- AUTOCOMMIT
CREATE TABLE ac_test (a int);
\set AUTOCOMMIT off
INSERT INTO ac_test VALUES (1);
COMMIT;
SELECT * FROM ac_test;
COMMIT;
INSERT INTO ac_test VALUES (2);
ROLLBACK;
SELECT * FROM ac_test;
COMMIT;
BEGIN;
INSERT INTO ac_test VALUES (3);
COMMIT;
SELECT * FROM ac_test;
COMMIT;
BEGIN;
INSERT INTO ac_test VALUES (4);
ROLLBACK;
SELECT * FROM ac_test;
COMMIT;
\set AUTOCOMMIT on
DROP TABLE ac_test;
SELECT * FROM ac_test; -- should be gone now
-- ON_ERROR_ROLLBACK
\set ON_ERROR_ROLLBACK on
CREATE TABLE oer_test (a int);
BEGIN;
INSERT INTO oer_test VALUES (1);
INSERT INTO oer_test VALUES ('foo');
INSERT INTO oer_test VALUES (3);
COMMIT;
SELECT * FROM oer_test;
BEGIN;
INSERT INTO oer_test VALUES (4);
ROLLBACK;
SELECT * FROM oer_test;
BEGIN;
INSERT INTO oer_test VALUES (5);
COMMIT AND CHAIN;
INSERT INTO oer_test VALUES (6);
COMMIT;
SELECT * FROM oer_test;
DROP TABLE oer_test;
\set ON_ERROR_ROLLBACK off
-- ECHO errors
\set ECHO errors
SELECT * FROM notexists;
\set ECHO none