Details
-
Bug
-
Resolution: Fixed
-
Major
-
4.5.0, 4.5.1, 4.6.0, 4.6.1, 4.6.2, 4.6.3, 5.0.0
Description
The N1QL execution layer has no consistency checks of any sort and will crash if an expected child is missing, offering no information other than the stack of an execution operator, which is next to no use.
What we should provide to make for useful diagnostic information is (in increasing order of importance)
- the request text in the log alongside the stack or other diagnostic information
- assertions during execution to the effect that the expected children exist - gracefully issuing an error and logging diagnostic information if the assertion fails
- assertion during building the execution tree that an operator has been created correctly (i.e. memory has been allocated): error and logging again if not
- assertion during building the execution tree that the newly created operator has been passed correct parameters (e.g. the children exist, etc, etc): error and log if not
- assertion during operator copy that the copied operator is correct (same thing as the two points above).
In order to implement the last 3 points, we need to change the interface of the New<Operator>() Copy() methods in execution to return errors - which is a pretty extensive change.
The first two bullet points can be implemented fairly quickly.
Attachments
Issue Links
- relates to
-
MB-30684 Mechanism to log queries that cause panic/crashes in Query service
- Resolved