static void emit_print_query_plan_stat_proc()

in sources/cg_query_plan.c [378:454]


static void emit_print_query_plan_stat_proc(charbuf *output) {
  bprintf(output,
          "%s",
          "CREATE PROC print_query_plan_stat(id_ integer not null)\n"
          "BEGIN\n"
          "  CALL printf(\"  [\\n\");\n"
          "  DECLARE Ca CURSOR FOR\n"
          "  WITH\n"
          "    scan(name, count, priority) AS (\n"
          "      SELECT 'SCAN', COUNT(*), 0 \n"
          "        FROM plan_temp \n"
          "        WHERE zdetail LIKE '%scan%' AND sql_id = id_\n"
          "    ),\n"
          "    search(name, count, priority) AS (\n"
          "      SELECT 'SEARCH', COUNT(*), 4 \n"
          "        FROM plan_temp \n"
          "        WHERE zdetail LIKE '%search%' AND iselectid NOT IN (\n"
          "          SELECT iselectid \n"
          "          FROM plan_temp \n"
          "          WHERE zdetail LIKE '%search%using%covering%'\n"
          "        ) AND sql_id = id_\n"
          "    ),\n"
          "    search_fast(name, count, priority) AS (\n"
          "      SELECT 'SEARCH USING COVERING', COUNT(*), 5 \n"
          "        FROM plan_temp \n"
          "        WHERE zdetail LIKE '%search%using%covering%' AND sql_id = id_\n"
          "    ),\n"
          "    b_tree(name, count, priority) AS (\n"
          "      SELECT 'TEMP B-TREE', COUNT(*), 1 \n"
          "        FROM plan_temp \n"
          "        WHERE zdetail LIKE '%temp b-tree%' AND sql_id = id_\n"
          "    ),\n"
          "    compound_subqueries(name, count, priority) AS (\n"
          "      SELECT 'COMPOUND SUBQUERIES', COUNT(*), 2 \n"
          "        FROM plan_temp \n"
          "        WHERE zdetail LIKE '%compound subqueries%' AND sql_id = id_\n"
          "    ),\n"
          "    execute_scalar(name, count, priority) AS (\n"
          "      SELECT 'EXECUTE SCALAR', COUNT(*), 3 \n"
          "        FROM plan_temp \n"
          "        WHERE zdetail LIKE '%execute scalar%' AND sql_id = id_\n"
          "    )\n"
          "  SELECT \n"
          "   CASE name\n"
          "     WHEN 'SCAN' THEN '{\"value\": \"' || name || '\", \"style\": {\"fontSize\": 14, \"color\": \"red\", \"fontWeight\": \"bold\"}}'\n"
          "     WHEN 'TEMP B-TREE' THEN '{\"value\": \"' || name || '\", \"style\": {\"fontSize\": 14, \"color\": \"red\", \"fontWeight\": \"bold\"}}'\n"
          "     ELSE '\"' || name || '\"'\n"
          "   END name,\n"
          "   CASE name\n"
          "     WHEN 'SCAN' THEN '{\"value\": ' || count || ', \"style\": {\"fontSize\": 14, \"color\": \"red\", \"fontWeight\": \"bold\"}}'\n"
          "     WHEN 'TEMP B-TREE' THEN '{\"value\": ' || count || ', \"style\": {\"fontSize\": 14, \"color\": \"red\", \"fontWeight\": \"bold\"}}'\n"
          "     ELSE '' || count\n"
          "   END value\n"
          "   FROM (\n"
          "   SELECT * FROM scan\n"
          "   UNION ALL\n"
          "   SELECT * FROM search\n"
          "   UNION ALL\n"
          "   SELECT * FROM search_fast\n"
          "   UNION ALL\n"
          "   SELECT * FROM b_tree\n"
          "   UNION ALL\n"
          "   SELECT * FROM compound_subqueries\n"
          "   UNION ALL\n"
          "   SELECT * FROM execute_scalar\n"
          "  )\n"
          "  WHERE count > 0 ORDER BY priority ASC, count DESC;\n"
          "  CALL printf(\"    [],\\n\");\n"
          "  LOOP FETCH Ca\n"
          "  BEGIN\n"
          "    CALL printf(\"    [%s, %s],\\n\", Ca.name, Ca.value);\n"
          "  END;\n"
          "  CALL printf(\"    []\\n\");\n"
          "  CALL printf(\"  ],\\n\");\n"
          "END;\n"
  );
}