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

Wrong result - count(distinct), Using index for group-by (scanning)

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 10.0.4, 5.5.32
    • Fix Version/s: 5.5.38, 10.0.12
    • Component/s: None
    • Labels:

      Description

      Taken from: http://bugs.mysql.com/bug.php?id=70038

      test case:

      --source include/have_innodb.inc
       
      CREATE TABLE tmp (
        id int NOT NULL AUTO_INCREMENT,
        a int NOT NULL,
        b int NOT NULL,
        PRIMARY KEY (id),
        UNIQUE KEY ba (b, a)
      ) ENGINE=InnoDB;
       
      INSERT INTO tmp (a, b) VALUES(1,101),(1,102),(1,103),(1,104),(1,105),(1,106),(1,107),(1,108),(1,109),(1,110);
       
      SELECT COUNT(DISTINCT b) FROM tmp WHERE a = 1;
       
      DROP TABLE tmp;

      Select returns 5, should be 10. Myisam works correctly.
      I think the problem is because in function QUICK_GROUP_MIN_MAX_SELECT::get_next() call to file->ha_index_read_map() fetches next row when it shouldn't. Happens when index_next_different() is called with is_index_scan = true.

        Attachments

          Activity

            People

            • Assignee:
              serg Sergei Golubchik
              Reporter:
              pomyk Patryk Pomykalski
            • Votes:
              1 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: