MCPcopy Create free account
hub / github.com/MariaDB/server / print_explain_json_regular

Method print_explain_json_regular

sql/sql_explain.cc:789–847  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

787*/
788
789void Explain_union::print_explain_json_regular(
790 Explain_query *query, Json_writer *writer, bool is_analyze)
791{
792 Json_writer_nesting_guard guard(writer);
793 char table_name_buffer[SAFE_NAME_LEN];
794
795 bool started_object= print_explain_json_cache(writer, is_analyze);
796
797 writer->add_member("query_block").start_object();
798
799 if (is_recursive_cte)
800 writer->add_member("recursive_union").start_object();
801 else
802 writer->add_member("union_result").start_object();
803
804 if (using_tmp)
805 {
806 make_union_table_name(table_name_buffer);
807 writer->add_member("table_name").add_str(table_name_buffer);
808 writer->add_member("access_type").add_str("ALL"); // not very useful
809
810 /* r_loops (not present in tabular output) */
811 if (is_analyze)
812 {
813 writer->add_member("r_loops").add_ll(
814 fake_select_lex_tracker.get_loops());
815 }
816
817 /* `r_rows` */
818 if (is_analyze)
819 {
820 writer->add_member("r_rows");
821 if (fake_select_lex_tracker.has_scans())
822 writer->add_double(fake_select_lex_tracker.get_avg_rows());
823 else
824 writer->add_null();
825 }
826 }
827 writer->add_member("query_specifications").start_array();
828
829 for (int i= 0; i < (int) union_members.elements(); i++)
830 {
831 writer->start_object();
832 //writer->add_member("dependent").add_str("TODO");
833 //writer->add_member("cacheable").add_str("TODO");
834 Explain_select *sel= query->get_select(union_members.at(i));
835 sel->print_explain_json(query, writer, is_analyze);
836 writer->end_object();
837 }
838 writer->end_array();
839
840 print_explain_json_for_children(query, writer, is_analyze);
841
842 writer->end_object(); // union_result
843 writer->end_object(); // query_block
844
845 if (started_object)
846 writer->end_object();

Callers

nothing calls this directly

Calls 15

start_objectMethod · 0.80
add_memberMethod · 0.80
get_avg_rowsMethod · 0.80
start_arrayMethod · 0.80
print_explain_jsonMethod · 0.80
end_objectMethod · 0.80
end_arrayMethod · 0.80
add_strMethod · 0.45
add_llMethod · 0.45
get_loopsMethod · 0.45
has_scansMethod · 0.45
add_doubleMethod · 0.45

Tested by

no test coverage detected