mirror of
https://github.com/postgres/postgres.git
synced 2025-11-07 19:06:32 +03:00
Add psql variables to track success/failure of SQL queries.
This patch adds ERROR, SQLSTATE, and ROW_COUNT, which are updated after every query, as well as LAST_ERROR_MESSAGE and LAST_ERROR_SQLSTATE, which are updated only when a query fails. The expected usage of these is for scripting. Fabien Coelho, reviewed by Pavel Stehule Discussion: https://postgr.es/m/alpine.DEB.2.20.1704042158020.12290@lancre
This commit is contained in:
@@ -606,3 +606,67 @@ UNION SELECT 5
|
||||
ORDER BY 1;
|
||||
\r
|
||||
\p
|
||||
|
||||
-- tests for special result variables
|
||||
|
||||
-- working query, 2 rows selected
|
||||
SELECT 1 AS stuff UNION SELECT 2;
|
||||
\echo 'error:' :ERROR
|
||||
\echo 'error code:' :SQLSTATE
|
||||
\echo 'number of rows:' :ROW_COUNT
|
||||
|
||||
-- syntax error
|
||||
SELECT 1 UNION;
|
||||
\echo 'error:' :ERROR
|
||||
\echo 'error code:' :SQLSTATE
|
||||
\echo 'number of rows:' :ROW_COUNT
|
||||
\echo 'last error message:' :LAST_ERROR_MESSAGE
|
||||
\echo 'last error code:' :LAST_ERROR_SQLSTATE
|
||||
|
||||
-- empty query
|
||||
;
|
||||
\echo 'error:' :ERROR
|
||||
\echo 'error code:' :SQLSTATE
|
||||
\echo 'number of rows:' :ROW_COUNT
|
||||
-- must have kept previous values
|
||||
\echo 'last error message:' :LAST_ERROR_MESSAGE
|
||||
\echo 'last error code:' :LAST_ERROR_SQLSTATE
|
||||
|
||||
-- other query error
|
||||
DROP TABLE this_table_does_not_exist;
|
||||
\echo 'error:' :ERROR
|
||||
\echo 'error code:' :SQLSTATE
|
||||
\echo 'number of rows:' :ROW_COUNT
|
||||
\echo 'last error message:' :LAST_ERROR_MESSAGE
|
||||
\echo 'last error code:' :LAST_ERROR_SQLSTATE
|
||||
|
||||
-- working \gdesc
|
||||
SELECT 3 AS three, 4 AS four \gdesc
|
||||
\echo 'error:' :ERROR
|
||||
\echo 'error code:' :SQLSTATE
|
||||
\echo 'number of rows:' :ROW_COUNT
|
||||
|
||||
-- \gdesc with an error
|
||||
SELECT 4 AS \gdesc
|
||||
\echo 'error:' :ERROR
|
||||
\echo 'error code:' :SQLSTATE
|
||||
\echo 'number of rows:' :ROW_COUNT
|
||||
\echo 'last error message:' :LAST_ERROR_MESSAGE
|
||||
\echo 'last error code:' :LAST_ERROR_SQLSTATE
|
||||
|
||||
-- check row count for a cursor-fetched query
|
||||
\set FETCH_COUNT 10
|
||||
select unique2 from tenk1 limit 19;
|
||||
\echo 'error:' :ERROR
|
||||
\echo 'error code:' :SQLSTATE
|
||||
\echo 'number of rows:' :ROW_COUNT
|
||||
|
||||
-- cursor-fetched query with an error
|
||||
select 1/unique1 from tenk1;
|
||||
\echo 'error:' :ERROR
|
||||
\echo 'error code:' :SQLSTATE
|
||||
\echo 'number of rows:' :ROW_COUNT
|
||||
\echo 'last error message:' :LAST_ERROR_MESSAGE
|
||||
\echo 'last error code:' :LAST_ERROR_SQLSTATE
|
||||
|
||||
\unset FETCH_COUNT
|
||||
|
||||
Reference in New Issue
Block a user