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

Json_writer allows one to create duplicate object members

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • 10.4(EOL)
    • 10.8.0
    • Optimizer
    • None

    Description

      Json_writer code allows one to write multiple members with the same name in a JSON object.

      This is likely to prevent proper processing of the created document.

      The most striking example is EXPLAIN FORMAT=JSON:

      {
        "query_block": {
          "select_id": 1,
          "table": {
            "table_name": "table",
            ...
          },
           "table": {
            ...
      

      The solution has two parts:

      Part #1: Follow the MDEV-23766 approach and make debug build generate assertion failures.

      Part #2: Fix EXPLAIN FORMAT=JSON code to not produce such invalid (or valid but not processable) JSON output.

      As for which version to fix this in: The problem with EXPLAIN FORMAT=JSON output is present from the very early versions (10.1). However, the fix will cause a lot of changes in EXPLAIN FORMAT=JSON output (the changes will be dummy but they will be there). This may not be desirable for older versions. Because of that, for now I'm setting fixVersion to 10.8.

      A question to be resolved: how to modify EXPLAIN/ANALYZE to make them well-formed JSON? Should we wrap them into an array, like MySQL does or do something else?)

      Attachments

        Issue Links

          Activity

            People

              sergei.krivonos Sergei Krivonos (Inactive)
              psergei Sergei Petrunia
              Votes:
              0 Vote for this issue
              Watchers:
              4 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.