Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-19160

JSON_DETAILED output unnecessarily verbose (Part Time project)

Details

    Description

      JSON_DETAILED function (https://mariadb.com/kb/en/library/json_detailed/ ) is described as

      Represents JSON in the most understandable way emphasizing nested structures.
      

      We now got a use case for it: Optimizer Trace output. Optimizer trace is too large to be copied in full, instead we use expressions like

      select 
      JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) 
      from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
      

      Our experience is that JSON_DETAILED has some room for improvement when it comes to the quality of automatic JSON formatting.

      Example:

      source mdev19160-data.sql
      mysql> select JSON_DETAILED(JSON_EXTRACT(a, '$**.analyzing_range_alternatives')) from t200\G
      *************************** 1. row ***************************
      JSON_DETAILED(JSON_EXTRACT(a, '$**.analyzing_range_alternatives')): [
          
          {
              "range_scan_alternatives": 
              [
                  
                  {
                      "index": "a_b",
                      "ranges": 
                      [
                          "2 <= a <= 2 AND 4 <= b <= 4"
                      ],
                      "rowid_ordered": true,
                      "using_mrr": false,
                      "index_only": true,
                      "rows": 1,
                      "cost": 1.1752,
                      "chosen": true
                  }
              ],
              "analyzing_roworder_intersect": 
              {
                  "cause": "too few roworder scans"
              },
              "analyzing_index_merge_union": 
              [
              ]
          }
      ]
      

      Things to note:

      • empty lines at the start (right before/after the "range_scan_alternatives")
      • "analyzing_index_merge_union":[] occupies 3 lines where one would be sufficient.
      • the same goes for "ranges"

      One can look at the JSON pretty-printer that is used by EXPLAIN FORMAT=JSON and optimizer trace. It produces a better result (but it has room for improvement, too.)

      Extra: in MySQL, the function is called JSON_PRETTY. We should add ability to use this name as an alias.

      Attachments

        Issue Links

          Activity

            robertbindar Robert Bindar added a comment -

            Hey Nimit2801!
            1. Have you seen this https://mariadb.com/kb/en/Building_MariaDB_on_Windows/? I can't help you too much on setting up the windows environment for MariaDB, If you get stuck, please ask on MariaDB Zulip channel, people using windows might be able to help.
            2. If the bug is tagged 10.4, this means that the earliest version of MariaDB where the bug could be reproduced is 10.4. Basically you create a patch for 10.4 and once it is merged in 10.4, it will be propagated upwards by someone to 10.5, 10.6

            Let me know if you have more questions. Also I encourage you to ask this type of questions in Zulip because there you have more visibility, this means faster and better answers most probably

            robertbindar Robert Bindar added a comment - Hey Nimit2801 ! 1. Have you seen this https://mariadb.com/kb/en/Building_MariaDB_on_Windows/? I can't help you too much on setting up the windows environment for MariaDB, If you get stuck, please ask on MariaDB Zulip channel, people using windows might be able to help. 2. If the bug is tagged 10.4, this means that the earliest version of MariaDB where the bug could be reproduced is 10.4. Basically you create a patch for 10.4 and once it is merged in 10.4, it will be propagated upwards by someone to 10.5, 10.6 Let me know if you have more questions. Also I encourage you to ask this type of questions in Zulip because there you have more visibility, this means faster and better answers most probably
            kai Kai added a comment -

            Hi, is there anyone working on this? If not, I would like to improve it.

            kai Kai added a comment - Hi, is there anyone working on this? If not, I would like to improve it.

            No, nobody is, please, feel free to do it

            serg Sergei Golubchik added a comment - No, nobody is, please, feel free to do it
            rucha174 Rucha Deodhar added a comment - Patch (submitted as contribution): https://github.com/MariaDB/server/commit/111a752b968561b34a88f33052519cb989a8a90f

            People

              rucha174 Rucha Deodhar
              psergei Sergei Petrunia
              Votes:
              0 Vote for this issue
              Watchers:
              11 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.