Details
-
Bug
-
Status: Stalled (View Workflow)
-
Major
-
Resolution: Unresolved
-
10.2(EOL), 10.3(EOL), 10.4(EOL), 10.5, 10.6, 10.8(EOL)
-
None
Description
Take a statement doing long GIS computation (it takes minutes):
SELECT
|
st_buffer(st_buffer(ST_GEOMFROMTEXT('POLYGON((10 10, 10 20, 20 20, 20 10, 10 10))'),1), |
(st_length(multilinestringfromtext(' MULTILINESTRING( ( 2 2, 2 8, 8 8, 8 2, 2 2 ), ( 4 4, 4 6, 6 6, 6 4, 4 4 ) ) ')) )); |
and try to run SHOW EXPLAIN (or SHOW ANALYZE) on it. The result will be:
MariaDB [test]> show analyze format=json for 398;
|
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
|
Note that KILL or KILL QUERY are able to kill the statement.
Attachments
Issue Links
- relates to
-
MDEV-27021 Extend SHOW EXPLAIN to support SHOW ANALYZE [FORMAT=JSON]
-
- Closed
-
Investigation:
GIS code uses a "non-standard" way to check if the computation is terminated:
String *Item_func_buffer::val_str(String *str_value)
{
...
...
#define GCALC_TERMINATED(state_var) (state_var && (*state_var))
..
{
...
GCALC_DBUG_RETURN(0xFFFF);
This logic allows to check if the thread is killed but doesn't check if there's a need to process SHOW EXPLAIN query.