@@ -388,7 +388,8 @@ ANALYZE
388388 "rows": 1000,
389389 "r_rows": 1000,
390390 "r_filtered": 100,
391- "r_total_time_ms": "REPLACED",
391+ "r_table_time_ms": "REPLACED",
392+ "r_other_time_ms": "REPLACED",
392393 "r_engine_stats": REPLACED
393394 }
394395 }
@@ -449,7 +450,8 @@ ANALYZE
449450 "rows": 10,
450451 "r_rows": 10,
451452 "r_filtered": 50,
452- "r_total_time_ms": "REPLACED",
453+ "r_table_time_ms": "REPLACED",
454+ "r_other_time_ms": "REPLACED",
453455 "r_engine_stats": REPLACED,
454456 "attached_condition": "t1.pk < 10 and t1.b > 4"
455457 }
@@ -1205,3 +1207,115 @@ ANALYZE
12051207}
12061208set join_cache_level=@tmp;
12071209drop table t10, t11;
1210+ #
1211+ # MDEV-33309: ANALYZE FORMAT=JSON: UPDATE|DELETE don't show r_other_time_ms
1212+ #
1213+ create table t1 (pk int primary key, a int);
1214+ insert into t1 select seq, seq from seq_1_to_1000;
1215+ create table t2 like t1;
1216+ insert into t2 select * from t1;
1217+ # Top-level query block must have r_table_time_ms and r_other_time_ms
1218+ analyze format=json
1219+ update t1 set a=a+1
1220+ where t1.pk > (select max(a) from t2 where t2.pk+1 = t1.pk+1 ) - 10;
1221+ ANALYZE
1222+ {
1223+ "query_optimization": {
1224+ "r_total_time_ms": "REPLACED"
1225+ },
1226+ "query_block": {
1227+ "select_id": 1,
1228+ "r_total_time_ms": "REPLACED",
1229+ "table": {
1230+ "update": 1,
1231+ "table_name": "t1",
1232+ "access_type": "ALL",
1233+ "rows": 1000,
1234+ "r_rows": 1000,
1235+ "r_filtered": 100,
1236+ "r_table_time_ms": "REPLACED",
1237+ "r_other_time_ms": "REPLACED",
1238+ "r_engine_stats": REPLACED,
1239+ "attached_condition": "t1.pk > (subquery#2) - 10"
1240+ },
1241+ "subqueries": [
1242+ {
1243+ "query_block": {
1244+ "select_id": 2,
1245+ "r_loops": 1000,
1246+ "r_total_time_ms": "REPLACED",
1247+ "nested_loop": [
1248+ {
1249+ "table": {
1250+ "table_name": "t2",
1251+ "access_type": "ALL",
1252+ "r_loops": 1000,
1253+ "rows": 1000,
1254+ "r_rows": 1000,
1255+ "r_table_time_ms": "REPLACED",
1256+ "r_other_time_ms": "REPLACED",
1257+ "r_engine_stats": REPLACED,
1258+ "filtered": 100,
1259+ "r_filtered": 0.1,
1260+ "attached_condition": "t2.pk + 1 = t1.pk + 1"
1261+ }
1262+ }
1263+ ]
1264+ }
1265+ }
1266+ ]
1267+ }
1268+ }
1269+ # Top-level query block must have r_table_time_ms and r_other_time_ms
1270+ analyze format=json
1271+ delete from t1
1272+ where t1.pk > (select max(a) from t2 where t2.pk+1 = t1.pk+1 ) - 10;
1273+ ANALYZE
1274+ {
1275+ "query_optimization": {
1276+ "r_total_time_ms": "REPLACED"
1277+ },
1278+ "query_block": {
1279+ "select_id": 1,
1280+ "r_total_time_ms": "REPLACED",
1281+ "table": {
1282+ "delete": 1,
1283+ "table_name": "t1",
1284+ "access_type": "ALL",
1285+ "rows": 1000,
1286+ "r_rows": 1000,
1287+ "r_filtered": 100,
1288+ "r_table_time_ms": "REPLACED",
1289+ "r_other_time_ms": "REPLACED",
1290+ "r_engine_stats": REPLACED,
1291+ "attached_condition": "t1.pk > (subquery#2) - 10"
1292+ },
1293+ "subqueries": [
1294+ {
1295+ "query_block": {
1296+ "select_id": 2,
1297+ "r_loops": 1000,
1298+ "r_total_time_ms": "REPLACED",
1299+ "nested_loop": [
1300+ {
1301+ "table": {
1302+ "table_name": "t2",
1303+ "access_type": "ALL",
1304+ "r_loops": 1000,
1305+ "rows": 1000,
1306+ "r_rows": 1000,
1307+ "r_table_time_ms": "REPLACED",
1308+ "r_other_time_ms": "REPLACED",
1309+ "r_engine_stats": REPLACED,
1310+ "filtered": 100,
1311+ "r_filtered": 0.1,
1312+ "attached_condition": "t2.pk + 1 = t1.pk + 1"
1313+ }
1314+ }
1315+ ]
1316+ }
1317+ }
1318+ ]
1319+ }
1320+ }
1321+ drop table t1, t2;
0 commit comments