Добавить ручку для EXPLAIN
На текущий момент работа с EXPLAIN выглядит следующим образом:
sql_query = "EXPLAIN SELECT COUNT(*) FROM TEST_TABLE WHERE ID = 1"
res = await client.fetch(sql_query)
for row in res:
# search what you need in row
if 'motion [policy: full]' in row.get('QUERY PLAN'):
pass
Пример того, как выглядит план, полученный прямо в пикодате:
(admin) sql> EXPLAIN SELECT ID FROM TEST_TABLE WHERE ID = 61555355;
projection ("test_table"."id"::integer -> "id")
selection ROW("test_table"."id"::integer) = ROW(61555355::unsigned)
scan "test_table"
execution options:
sql_vdbe_opcode_max = 45000
sql_motion_row_max = 5000
buckets = [322]
Каждая строка в выводе -- row в коде
Также в пикодате появился explain (raw) с планом исполнения. Нужно подумать над дизайном со стороны плагина, как там поддержать и эту фичу
Что надо сделать:
- добавить ручку explain, которая будет возвращать план целиком, а не построчно
- поддержка explain (raw)
- подумать над сериализацией -- можно ли ее сделать более удобной для автоматической работы
Edited by Asya Lomakina