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

Crossed JSON_VALID constraint imposes JSON property to a wrong column

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Open (View Workflow)
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 10.3, 10.4, 10.5, 10.6, 10.7, 10.8
    • Fix Version/s: 10.5, 10.6, 10.7, 10.8
    • Component/s: JSON
    • Labels:
      None

      Description

      Notice, in the CREATE statement below the constraint belonging to the column b:

      • Says that the column a is JSON
      • Says nothing that the column b itself is JSON

      However, the constraint actually imposes JSON format on the column b rather than column a.

      DROP TABLE IF EXISTS t1;
      CREATE TABLE t1 (
        a VARCHAR(1000),
        b VARCHAR(1000) CHECK (json_valid(a))
      );
      INSERT INTO t1 VALUES ('{"x": "y"}', '{"x": "y"}');
      SELECT JSON_OBJECT('a', a), JSON_OBJECT('b', b) FROM t1;
      

      +-------------------------+---------------------+
      | JSON_OBJECT('a', a)     | JSON_OBJECT('b', b) |
      +-------------------------+---------------------+
      | {"a": "{\"x\": \"y\"}"} | {"b": {"x": "y"}}   |
      +-------------------------+---------------------+
      

      Notice:

      • a was treated as text
      • b was treated as JSON

      It's opposite to what the CHECK constraint says!

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              bar Alexander Barkov
              Reporter:
              bar Alexander Barkov
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Dates

                Created:
                Updated:

                  Git Integration

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