6
0
mirror of https://github.com/FirebirdSQL/firebird-qa.git synced 2025-01-22 13:33:07 +01:00

BAIL switch must be returned to its default value when script is to be finished. See IMPORTANT NOTES inside this .sql: PIPE is handled differently on Windows vs Linux.

This commit is contained in:
zotov 2022-10-06 13:20:40 +03:00
parent 06f8a51f71
commit ef8b688182

View File

@ -29,3 +29,29 @@ insert into employee( emp_no, last_name, dept_no) values (7, 'e7', 2);
insert into employee( emp_no, last_name, dept_no) values (8, 'e8', 3);
insert into employee( emp_no, last_name, dept_no) values (9, 'e9', 3);
commit;
-- ### ACHTUNG: IMPORTANT ###
-- On WINDOWS setting 'set bail on' is siletnly ignored when .sql commands
-- are passed via PIPE, i.e. using command like this:
-- type <script_with_bail_on.sql> | %fb_home%\isql host/port:db_file
-- If some statement from <script_with_bail_on.sql> failed then script
-- will be CONTINUED, thus ignoring SET BAIL ON!
-- The reason is that PIPE operator (vertical bar, "|") is considered
-- on Windows as *interactive*, i.e. like user manually types command-by-command.
-- On Linux this is not so, and any failed statement will stop execurion
-- of the whole script immediately. So, we have a
-- ###############################################
-- ### DIFFERENT BEHAVIOUR ON WINDOWS vs LINUS ###
-- ###############################################
-- See also:
-- 1. Discussion with pcisar, alex and dimitr:
-- subj: "[new-qa] ISQL "SET BAIL ON" problem on Windows when commands come from PIPE"
-- date: 12-mar-2022 16:04
-- 2. doc\README.isql_enhancements.txt ("if the user loads isql interactively and later
-- executes a script with the input command, this is considered an interactive session
-- even though isql knows it's executing a script")
-- BECAUSE OF THIS, IT IS MANDATORY TO RETURN BAIL TO ITS DEFAULT VALUE:
--############
set bail off;
--############