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

Wrong result (extra rows) with an index on a VIRTUAL column

Details

    Description

      CREATE TABLE t1 (
        pk INT(11) NOT NULL,
        c VARCHAR(3) DEFAULT NULL,
        vc VARCHAR(3) GENERATED ALWAYS AS (c) VIRTUAL,
        PRIMARY KEY (pk),
        KEY (vc)
      ) ENGINE=InnoDB;
       
      INSERT INTO t1 (pk,c) VALUES 
      (1,'foo'),(2,'bar'),(3,'qux'),(4,'foo'),(5,'bar'),
      (6,'qux'),(7,'foo'),(8,'bar'),(9,'qux'),(10,'foo');
       
      CREATE TABLE t2 (
        pk INT(11) NOT NULL,
        c VARCHAR(3),
        PRIMARY KEY (pk)
      ) ENGINE=InnoDB;
       
      INSERT INTO t2 VALUES (1,'foo'),(2,'bar');
      

      SELECT t1.pk, t2.pk FROM t1, t2 WHERE t2.c = t1.vc AND t2.c = t1.c AND t2.pk > t1.pk;
      +----+----+
      | pk | pk |
      +----+----+
      |  1 |  1 |
      |  4 |  1 |
      |  7 |  1 |
      | 10 |  1 |
      |  2 |  2 |
      |  5 |  2 |
      |  8 |  2 |
      +----+----+
      7 rows in set (0.00 sec)
      

      Attachments

        Issue Links

          Activity

            elenst Elena Stepanova created issue -
            elenst Elena Stepanova made changes -
            Field Original Value New Value
            elenst Elena Stepanova made changes -
            Description {code:sql}
            CREATE TABLE t1 (
              pk INT(11) NOT NULL,
              c VARCHAR(3) DEFAULT NULL,
              vc VARCHAR(3) GENERATED ALWAYS AS (c) VIRTUAL,
              PRIMARY KEY (pk),
              KEY (vc)
            ) ENGINE=InnoDB;

            INSERT INTO t1 (pk,c) VALUES
            (1,'foo'),(2,'bar'),(3,'qux'),(4,'foo'),(5,'bar'),
            (6,'qux'),(7,'foo'),(8,'bar'),(9,'qux'),(10,'foo');

            CREATE TABLE t2 (
              pk INT(11) NOT NULL,
              c VARCHAR(3),
              PRIMARY KEY (pk)
            ) ENGINE=InnoDB;

            INSERT INTO t2 VALUES (1,'foo'),(2,'bar');
            {code}

            {noformat}
            SELECT t1.pk, t2.pk FROM t1, t2 WHERE t2.c = t1.vc AND t2.c = t1.c AND t2.pk > t1.pk;
            +----+----+
            | pk | pk |
            +----+----+
            | 1 | 1 |
            | 4 | 1 |
            | 7 | 1 |
            | 10 | 1 |
            | 2 | 2 |
            | 5 | 2 |
            | 8 | 2 |
            +----+----+
            7 rows in set (0.00 sec)
            {noformat}
            {code:sql}
            CREATE TABLE t1 (
              pk INT(11) NOT NULL,
              c VARCHAR(3) DEFAULT NULL,
              vc VARCHAR(3) GENERATED ALWAYS AS (c) VIRTUAL,
              PRIMARY KEY (pk),
              KEY (vc)
            ) ENGINE=InnoDB;

            INSERT INTO t1 (pk,c) VALUES
            (1,'foo'),(2,'bar'),(3,'qux'),(4,'foo'),(5,'bar'),
            (6,'qux'),(7,'foo'),(8,'bar'),(9,'qux'),(10,'foo');

            CREATE TABLE t2 (
              pk INT(11) NOT NULL,
              c VARCHAR(3),
              PRIMARY KEY (pk)
            ) ENGINE=InnoDB;

            INSERT INTO t2 VALUES (1,'foo'),(2,'bar');
            {code}

            {code:sql}
            SELECT t1.pk, t2.pk FROM t1, t2 WHERE t2.c = t1.vc AND t2.c = t1.c AND t2.pk > t1.pk;
            +----+----+
            | pk | pk |
            +----+----+
            | 1 | 1 |
            | 4 | 1 |
            | 7 | 1 |
            | 10 | 1 |
            | 2 | 2 |
            | 5 | 2 |
            | 8 | 2 |
            +----+----+
            7 rows in set (0.00 sec)
            {code}
            elenst Elena Stepanova made changes -
            elenst Elena Stepanova made changes -
            Labels 10.2-rc
            elenst Elena Stepanova made changes -
            elenst Elena Stepanova made changes -
            Assignee Sergei Golubchik [ serg ] Elena Stepanova [ elenst ]
            elenst Elena Stepanova made changes -
            Fix Version/s 10.2.4 [ 22116 ]
            Fix Version/s 10.2 [ 14601 ]
            Assignee Elena Stepanova [ elenst ] Sergei Golubchik [ serg ]
            Resolution Fixed [ 1 ]
            Status Open [ 1 ] Closed [ 6 ]
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 78722 ] MariaDB v4 [ 151356 ]

            People

              serg Sergei Golubchik
              elenst Elena Stepanova
              Votes:
              0 Vote for this issue
              Watchers:
              2 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.