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

Json_writer allows one to create duplicate object members

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

            psergei Sergei Petrunia created issue -
            psergei Sergei Petrunia made changes -
            Field Original Value New Value
            Assignee Sergei Krivonos [ JIRAUSER49805 ]
            psergei Sergei Petrunia made changes -
            psergei Sergei Petrunia made changes -
            Fix Version/s 10.4 [ 22408 ]
            psergei Sergei Petrunia made changes -
            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:

            {code:json}
            {
              "query_block": {
                "select_id": 1,
                "table": {
                  "table_name": "table",
                  ...
                },
                 "table": {
                  ...
            {code}
            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:

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

            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.
            psergei Sergei Petrunia made changes -
            Fix Version/s 10.8 [ 26121 ]
            Fix Version/s 10.4 [ 22408 ]
            psergei Sergei Petrunia made changes -
            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:

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

            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.
            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:

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

            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.
            psergei Sergei Petrunia made changes -
            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:

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

            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.
            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:

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

            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?)
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Assignee Sergei Krivonos [ JIRAUSER49805 ] Sergei Petrunia [ psergey ]
            Status In Progress [ 3 ] In Review [ 10002 ]
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Assignee Sergei Petrunia [ psergey ] Sergei Krivonos [ JIRAUSER49805 ]
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Attachment mdev_24760.txt [ 60860 ]
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Attachment mdev_24760.txt [ 60861 ]
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Attachment mdev_24760-1.txt [ 60862 ]
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Attachment mdev_24760-1.txt [ 60862 ]
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Attachment mdev_24760.txt [ 60861 ]
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Attachment mdev_24760.txt [ 60860 ]
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Sprint 10.4.0-1 [ 254 ]
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Rank Ranked higher
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Sprint 10.4.0-1 [ 254 ]
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Rank Ranked higher
            psergei Sergei Petrunia made changes -
            Assignee Sergei Krivonos [ JIRAUSER49805 ] Sergei Petrunia [ psergey ]
            psergei Sergei Petrunia made changes -
            Assignee Sergei Petrunia [ psergey ] Sergei Krivonos [ JIRAUSER49805 ]
            Status In Review [ 10002 ] Stalled [ 10000 ]
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Fix Version/s 10.8.0 [ 26800 ]
            Fix Version/s 10.8 [ 26121 ]
            Resolution Fixed [ 1 ]
            Status Stalled [ 10000 ] Closed [ 6 ]
            sergei.krivonos Sergei Krivonos (Inactive) made changes -
            Epic Link MDEV-27141 [ 105636 ]
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 127408 ] MariaDB v4 [ 159840 ]
            elenst Elena Stepanova made changes -
            elenst Elena Stepanova made changes -

            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.