Description
|
Artificial test case:
set term ^;
execute block as
declare stt varchar(255) = 'execute block as begin while (1 = 1) do begin end end';
begin
while(1=1) do
begin
execute statement stt;
when any do begin end
end
end^
set term ;^
commit;
Then either press Ctrl-C in the current ISQL session or issue "delete from mon$statements where mon$attachment_id <> current_connection" from a different ISQL session.
The endless loop inside EXECUTE STATEMENT really gets interrupted but isc_cancelled error gets handled by the WHEN block and the loop continues. This is a bug, cancellation/shutdown errors should not be processed by exception handlers.
|
Artificial test case:
set term ^;
execute block as
declare stt varchar(255) = 'execute block as begin while (1 = 1) do begin end end';
begin
while(1=1) do
begin
execute statement stt;
when any do begin end
end
end^
set term ;^
commit;
Then either press Ctrl-C in the current ISQL session or issue "delete from mon$statements where mon$attachment_id <> current_connection" from a different ISQL session.
The endless loop inside EXECUTE STATEMENT really gets interrupted but isc_cancelled error gets handled by the WHEN block and the outer loop continues. This is a bug, cancellation/shutdown errors should not be processed by exception handlers.
|