Fix child/parent query IDs for update stats Failure to setup child/parent query IDs for update stats and other non-embedded compiler scenarios caused problems in cancel including frequest but intermittent failure of executor/TEST106. This change fixes the problem.
Support cancel for DDL, update stats, and utils This change propagates parent query ID to queries created by DDL, update stats and utils. In this way, preexisting code sets up child query IDs and the preexisting cancel broker code in RMS cancels the entire query tree below the indicated parent. Also added is logic to check for a canceled parent at the time a child query ID is setup in Statement::execute, to make the scheme more robust and to support a common scenario where the parent is compiling a child query at the time of cancel.
This change also makes ex_root_tcb::cancel to wait for cancel broker message completion. This fixes a problem where a query (e.g., CREATE INDEX or DROP INDEX) is prepared, executed once and gets an error, then re-execed. In this case, sqlci was not closing the statement after the error. To improve robustness, after an error we will now wait for message completion, if needed.
Since we do not yet have transaction protection for DDL, it will usually be required to cleanup canceled DDL operations by using the CLEANUP command.