News - 11 series#

Release 11.13 - 2022-01-29#

Improvements#

  • [CentOS] Added support for MySQL 5.7.37.

  • [CentOS][AlmaLinux] Added support for MySQL 8.0.28.

    There are below restrictions in the MySQL 8.0 package.

    • [Wrapper mode] Wrapper mode is not supported yet.

    • [Storage mode] Storage mode does not support the following feature.

      • The feature of relevant to the optimization.

  • [CentOS][AlmaLinux] Added support for Percona Server 8.0.26-17.

  • [Ubuntu] Dropped Ubuntu 21.04 (Hirsute Hippo) support.

    • Because Ubuntu 21.04 reached EOL at January 20, 2022.

Release 11.11 - 2021-12-29#

Improvements#

  • [CentOS] Dropped support for CentOS 8.

    Because CentOS 8 will reach EOL at 2021-12-31.

Fixes#

  • [AlmaLinux] Fixed a bug that we have not provided the package of Mroonga for MariaDB 10.3, 10.4, 10.5, and 10.6. [Gitter][Reported by shibanao4870]

  • [Documentation][Install] Fixed a typo. [GitHub #469,#470][Patched by Marc Laporte]

  • [Documentation][CentOS] Fixed the wrong URL of percona-release-latest.noarch.rpm. [GitHub #471][Patched by santalex]

Thanks#

  • shibanao4870

  • Marc Laporte

  • santalex

Release 11.10 - 2021-11-29#

Improvements#

  • [AlmaLinux] Added support for Mroonga on AlamLinux 8.

  • [AlmaLinux] Added support for MySQL 8.0.27.

    • There are below restrictions in the MySQL 8.0 package.

      • [Wrapper mode] Wrapper mode is not supported yet.

      • [Storage mode] Storage mode does not support the following feature.

        • The feature of relevant to the optimization.

  • [AlmaLinux] Added support for Percona Server 8.0.26.

  • [AlmaLinux] Added support for MariaDB 10.3.32, 10.4.22, 10.5.13, and 10.6.5.

  • [CentOS] Added support for MariaDB 10.2.41, 10.3.32, 10.4.22, 10.5.13, and 10.6.5.

  • [Ubuntu] Added support for MySQL 8.0 on Ubuntu 21.04 (Hirsute Hippo) and 21.10 (Impish Indri).

    • There are below restrictions in the MySQL 8.0 package.

      • [Wrapper mode] Wrapper mode is not supported yet.

      • [Storage mode] Storage mode does not support the following feature.

        • The feature of relevant to the optimization.

Fixes#

  • [CentOS] Fixed a bug that we have not provided the package of Mroonga for MariaDB 10.6.

  • [Optimizations] Fixed a bug that Mroonga apply the optimization of row count wrongly. [MDEV-16922][Reported by Josep Sanz]

    Normally, Mroonga apply the optimization of row count when the SELECT fetches only COUNT(*) and condition in WHERE can be processed only by index.

    However, Mroonga applied the optimization of row count even if Mroonga couldn’t process condition in WHERE only by index as below case by this bug.

    Consequently, the result of SELECT COUNT(*) WHERE ... is wrong.

    CREATE TABLE roles (
      id INT
    );
    
    INSERT INTO roles VALUES (1), (2), (3), (4), (5);
    
    CREATE TABLE users (
      id INT,
      role_id INT,
      INDEX (role_id)
    );
    
    INSERT INTO users VALUES (10, 1);
    INSERT INTO users VALUES (11, 2);
    INSERT INTO users VALUES (13, 3);
    INSERT INTO users VALUES (14, 4);
    INSERT INTO users VALUES (15, 5);
    INSERT INTO users VALUES (20, 1);
    INSERT INTO users VALUES (21, 2);
    INSERT INTO users VALUES (23, 3);
    INSERT INTO users VALUES (24, 4);
    INSERT INTO users VALUES (25, 5);
    
    SELECT COUNT(*)
      FROM (
        SELECT roles.id
          FROM roles
               LEFT JOIN users ON users.id <= 100 AND
                                  users.role_id = roles.id
      ) roles_users;
    
  • Fixed a bug that Mroonga doesn’t set proper encoding on condition push down for ‘STRING_FIELD =’. [groonga-dev,04913][Reported by Tomohiro ‘Tomo-p’ KATO]

    Mroonga executes condition push down for ‘STRING_FIELD =’ in the following case. However, Mroonga doesn’t set proper encoding in search keywords at this time. Consequently, Mroonga fails to normalize search keywords.

    CREATE TABLE memos (
      id INT PRIMARY KEY,
      title TEXT,
      INDEX (title)
    ) ENGINE=Mroonga DEFAULT CHARSET=utf8mb4;
    
    INSERT INTO memos VALUES (1, 'Groonga');
    INSERT INTO memos VALUES (2, 'Mroonga');
    
    SELECT *
      FROM memos
      WHERE title = 'mroonga'
      ORDER BY id;
    

Thanks#

  • Josep Sanz

  • Tomohiro KATO

Release 11.09 - 2021-11-04#

Improvements#

  • [CentOS] Added support for MySQL 5.7.36, 8.0.27.

  • [CentOS] Added support for Percona Server 8.0.26.

Release 11.08 - 2021-10-06#

Fixes#

  • Fixed a bug that Mroonga crashed when we upgrade DB created by MySQL 5.7 to MySQL 8.0.

Release 11.07 - 2021-09-29#

Warning

Mroonga has had a bug that if we upgrade DB created by MySQL 5.7 to MySQL 8.0, Mroonga crashes.

We fixed this bug on Mroonga 11.08. Therefore, if you were using Mroonga on MySQL 5.7 or previous version, we highly recommended that we use Mroonga 11.08 or later.

Improvements#

  • [Ubuntu] Added support for MySQL 8.0 on Ubuntu 20.04 (Focal Fossa).

    • There are below restrictions in the MySQL 8.0 package.

      • [Wrapper mode] Wrapper mode is not supported yet.

      • [Storage mode] Storage mode does not support the following feature.

        • The feature of relevant to the optimization.

  • [mroonga_snippet_html()] Added support for specifying lexicon name.

    • We can use custom normalizer in mroonga_snippet_html() by this feature as below.

      CREATE TABLE terms (
        term VARCHAR(64) NOT NULL PRIMARY KEY
      ) COMMENT='normalizer "NormalizerNFKC130(''unify_kana'', true)"'
        DEFAULT CHARSET=utf8mb4
        COLLATE=utf8mb4_unicode_ci;
      
      SELECT mroonga_snippet_html('これはMroonga(ムルンガ)です。',
                                  'terms' as lexicon_name,
                                  'むるんが') as snippet;
      
      snippet
      <div class="snippet">これはMroonga(<span class="keyword">ムルンガ</span>)です。</div>
      
  • Added support for outputting vector column values as text not raw binary.

    • We can use mysqldump for dumping vector column values by this feature.

  • Don’t create .mrn files if nonexistent table is dropped. [groonga-dev: 04893][Reported by kenichi arimoto]

  • Added support for W pragma against elements of vector column.

    • We can set the weight to elements of vector column by this feature. However, Mroonga only search the specified section in this case. In a normal multiple column index, Mroonga also searches not specified sections with the default weight.

Fixes#

  • Fixed a bug that if we use “WHERE primary_key IN (“”)” in a where clause, Mroonga may return wrong record. [groonga-dev,04855][Reported by Katsuhito Watanabe]

    • For example, Mroonga may return wrong record as below.

      CREATE TABLE ids (
        id varchar(7) PRIMARY KEY,
        parent_id varchar(7)
      )ENGINE=Mroonga DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
      
      INSERT INTO ids VALUES("abcdefg", "");
      INSERT INTO ids VALUES("hijklmn", "");
      INSERT INTO ids VALUES("opqrstu", "hijklmn");
      
      SELECT * FROM ids WHERE id IN (SELECT parent_id FROM ids);
      +---------+-----------+
      | id      | parent_id |
      +---------+-----------+
      | abcdefg |           |
      | hijklmn |           |
      +---------+-----------+
      2 rows in set (0.00 sec)
      

Thanks#

  • Katsuhito Watanabe

  • kenichi arimoto

Release 11.06 - 2021-08-29#

Improvements#

  • [CentOS] Added support for MariaDB 10.2.40, 10.3.31, 10.4.21, and 10.5.12

  • [CentOS] Added support for MariaDB 10.6.4 [GitHub#434][Patched by Tomohiro KATO]

  • [CentOS] Added support for Percona Server 5.7.35.

  • [Debian GNU/Linux] Added support for Debian 11 (bullseye).

Thanks#

  • Tomohiro KATO

Release 11.05 - 2021-07-30#

Improvements#

  • [CentOS] Added support for Percona Server 8.0.25

  • [CentOS] Added support for MySQL 5.7.35, 8.0.26.

    • There are below restrictions in the MySQL 8.0 package.

      • [Wrapper mode] Wrapper mode is not supported yet.

      • [Storage mode] Storage mode does not support the following feature.

        • The feature of relevant to the optimization.

  • [Ubuntu] Dropped Ubuntu 20.10 (Groovy Gorilla) support.

    • Because Ubuntu 20.10 reached EOL July 22, 2021.

Fixes#

  • Fix a crash bug that may be caused after MySQL/MariaDB upgrade. [GitHub#423][Reported by Vincent Pelletier]

    • Mronnga may crash if we execute SELECT ... MATCH AGAINST after MySQL/MariaDB upgrade.

Thanks#

  • Vincent Pelletier

Release 11.04 - 2021-06-29#

Improvements#

  • [Server variables] We disabled mroonga_enable_operations_recording by default.

    mroonga_enable_operations_recording to determine whether recording operations for auto recovering are enabled or not.

    This recording of operations is for auto recovering Mroonga when it crashed. Normally, if lock remain in Mroonga, we can’t execute INSERT/DELETE/UPDATE, but if mroonga_enable_operations_recording is enable, we may not execute SELECT at times in addition to INSERT/DELETE/UPDATE. Because auto recovery is sometimes blocked by residual lock when they crashed.

    Therefore, we set OFF to the default value in this version. By we disable operation recording, INSERT/DELETE/UPDATE is blocked as usual because of the residual lock, but “SELECT” may bework.

    An appropriate way to handle to residual lock is as follows.

  • [Debian GNU/Linux] Added a install procedure for Mroonga for Debian GNU/Linux with Oracle MySQL package.

    We supoort Mroonga for Debian GNU/Linux with Oracle MySQL package in Mroonga 11.03. We wrote install procedure for these package to this documentation. When we will install these packages, please refer to this documentation.

  • [CentOS] Added support for MariaDB 10.2.39, 10.3.30, 10.4.20, and 10.5.11.

Fixes#

  • Fix a crash bag when we execute search

    This issue doesn’t occur under normal use.

    The occurrence condition is as below.

    • We directly make tables and columns on Groonga by using mroonga_command.

    • We execute search at the same time as delete the above tables and columns.

    When the above conditions are established, Mroonga might crash.

Release 11.03 - 2021-05-31#

Warning

This release has had a critical bug about uninstall and upgrade. If we install this version, we fail upgrade Mroonga and also uninstall it.

Therefore, please don’t use Mroonga of this version.

If we have already installed Mroonga of this version, we can upgrade Mroonga or uninstall it by using the following workaround.

  1. % echo “#!/bin/sh” > /usr/share/mroonga/deb/postrm.sh

  2. % chmod u+x /usr/share/mroonga/deb/postrm.sh

  3. Upgrade Mroonga or uninstall Mroonga.

Warning

The package names are changed from this release. Mroonga may be invalid after upgrade to this version by the influence of this modification. If we upgrade to this version, please always be sure to confirm the below points.

If Mroonga is invalid after the upgrade, we need to install manually Mroonga again. Please refer to the following URL about the manual installation of Mroonga and how to confirming whether Mroonga is valid or not.

Besides, please be careful the above phenomenon will continue from now if we will upgrade mroonga to stride over a Mroonga 11.03.

If Mroonga is valid after upgrade to this version but, Mroonga’s version is old, we need to restart MySQL, MariaDB, or PerconaServer. We can confirm Mroonga’s version as the below command.

  • SHOW VARIABLES LIKE 'mroonga_version';

Warning

There are broken backward compatibility on this version.

Users that are using GEOMETRY type need to store the current data before upgrading to Mroonga 11.03 and restore the stored data after upgrading to Mroonga 11.03.

Please be careful if we upgrade to this version without executing the above procedure, data is broken.

Users can use the following methods for dumping/restoring data.

  • mysqldump

  • Execute ALTER TABLE ENGINE=InnoDB before upgrading and execute ALTER TABLE ENGINE=Mroonga after upgrading.

If without this fix, INSERT/UPDATE/SELECT/SELECT works well but data stored in Groonga are wrong (Latitude and longitude are swapped in Groonga). Therefore, mroonga_command(‘select …’) doesn「t work for spatial data.

Improvements#

  • Renamed package names as below.

    • mariadb-server-10.x-mroonga -> mariadb-10.x-mroonga

    • mysql-server-5.x-mroonga -> mysql-community-5.x-mroonga

    • mysql-server-8.x-mroonga -> mysql-community-8.x-mroonga

    • percona-server-5x-mroonga -> percona-server-5.x-mroonga

    • percona-server-8x-mroonga -> percona-server-8.x-mroonga

  • [Debian GNU/Linux] Added support for the Oracle MySQL 5.7 package and the Oracle MySQL 8.0 package.

    • In this release, we newly provided the package of Mroonga for Debian GNU/Linux with the Oracle MySQL 5.7 and the Oracle MySQL 8.0.

      • By this, we make the Docker image of Mroonga with MySQL for Docker official images.

    • There are below restrictions in the MySQL 8.0 package.

      • [Wrapper mode] Wrapper mode is not supported yet.

      • [Storage mode] Storage mode does not support the following feature.

        • The feature of relevant to the optimization.

  • Added support for the SRID of Spatial Indexes.

    • the index of Mroonga is used in search with MBRContains function on MySQL 8.x since this release.

  • We added condition expressions that are applied condition push down.

    Note

    Condition push down doesn’t evaluate condition expressions in MySQL, but it evaluate condition expressions in Mroonga. Therefore, more queries will become high-performance, but the result of search may different than usual by Mroonga evaluate them. If Mroonga returns unexpected search results, we request that you report from the below URL. And we would like you to invalid for condition push down.

    We can invalid condition push down as below.

    • SET GLOBAL mroonga_condition_push_down_type = "NONE"

  • [CentOS] Added support for Percona Server 8.0.23

Fixes#

  • Fixed a bug that latitude and longitude are stored conversely.

    Warning

    backward compatibility is broken by this fix.

    Users that are using GEOMETRY type need to store the current data before upgrading to Mroonga 11.03 and restore the stored data after upgrading to Mroonga 11.03. Users can use the following methods for dumping/restoring data.

    • mysqldump

    • Execute ALTER TABLE ENGINE=InnoDB before upgrading and execute ALTER TABLE ENGINE=Mroonga after upgrading.

    If without this fix, INSERT/UPDATE/SELECT/SELECT works well but data stored in Groonga are wrong (Latitude and longitude are swapped in Groonga). Therefore, mroonga_command('select ...') doesn’t work for spatial data.

Release 11.02 - 2021-05-10#

Improvements#

  • [CentOS] Added support for MySQL 5.7.34, 8.0.25.

    • There are below restrictions in the MySQL 8.0 package.

      • [Wrapper mode] Wrapper mode is not supported yet.

      • [Storage mode] Storage mode does not support the following feature.

        • The feature of relevant to the optimization.

        • The SRID of Spatial Indexes.

          • For example, the index of Mroonga is not used in search with MBRContains function. (It search by sequential search.)

  • [CentOS] Added support for MariaDB 10.2.38, 10.3.29, 10.4.19, and 10.5.10.

  • [Ubuntu] Dropped Ubuntu 16.04 (Xenial Xerus) support.

    • Because it reached End of Standard Support at April, 2021.

Release 11.01 - 2021-04-02#

Improvements#

  • [CentOS] Added support for MariaDB 10.2.37, 10.3.28, 10.4.18, and 10.5.9.

  • [CentOS] Added support for Percona Server 5.7.33.

  • Added support for adding value with text in JSON format to reference vector columns as below.

    • It makes easier to add JSON data into reference columns by this feature. Because we can directly add values to columns for reference destination from the source table.

    CREATE TABLE attributes (
      _id int,
      name varchar(255),
      value varchar(255)
    ) DEFAULT CHARSET=utf8mb4;
    
    CREATE TABLE items (
      id int PRIMARY KEY AUTO_INCREMENT,
      attributes text DEFAULT NULL flags='COLUMN_VECTOR' groonga_type='attributes'
    );
    
    INSERT INTO items (attributes)
      VALUES ('[{"name": "color", "value": "white"},
                {"name": "size",  "value": "big"}]');
    INSERT INTO items (attributes)
      VALUES ('[{"name": "color", "value": "black"}]');
    INSERT INTO items (attributes) VALUES ('');
    
    SELECT * FROM attributes;
      _id      name    value
      1        color   white
      2        size    big
      3        color   black
    
    SELECT * FROM items;
    id attributes
    1  [1,2]
    2  [3]
    3  []
    

Fixes#

  • Fixed a bug that FOREIGN KEY constraint was not registered. [GitHub#393][Reported by Kosuke Yamashita]

    • This bug had only occurred on MySQL 8.0.

    • For example, the FOREIGN KEY constraint information had not been outputted even if we define it as below.

      CREATE TABLE referred (
        id int PRIMARY KEY AUTO_INCREMENT
      );
      
      CREATE TABLE refer (
        id int PRIMARY KEY AUTO_INCREMENT,
        id_referred int NOT NULL,
        CONSTRAINT id_referred FOREIGN KEY (id_referred) REFERENCES referred (id)
      );
      
      SELECT CONSTRAINT_NAME, TABLE_NAME, REFERENCED_TABLE_NAME
             FROM information_schema.REFERENTIAL_CONSTRAINTS;
      Empty set (0.000 sec)
      
  • Fixed a bug that DROP DATABASE had failed if a target database had FOREIGN KEY constraint as below. [GitHub#390][Reported by Kosuke Yamashita]

    CREATE DATABASE another;
    USE another;
    
    CREATE TABLE referred (
      id int PRIMARY KEY AUTO_INCREMENT
    ) ENGINE=mroonga DEFAULT CHARSET utf8mb4;
    
    CREATE TABLE refer (
      id int PRIMARY KEY AUTO_INCREMENT,
      id_referred int NOT NULL,
      CONSTRAINT id_referred FOREIGN KEY (id_referred) REFERENCES referred (id)
    ) ENGINE=mroonga DEFAULT CHARSET utf8mb4;
    
    DROP DATABASE another;
    ERROR 1016 (HY000): [table][remove] a column that references the table exists: <refer.id_referred> -> <referred>
    
  • Fixed a bug that DROP COLUMN had failed if a target table was referred a other table as below. [GitHub#389][Reported by Kosuke Yamashita]

    CREATE TABLE referred (
      id int PRIMARY KEY AUTO_INCREMENT,
      name varchar(255),
      text text
    ) ENGINE=mroonga DEFAULT CHARSET utf8mb4;
    
    CREATE TABLE refer (
      id int PRIMARY KEY AUTO_INCREMENT,
      id_referred int NOT NULL,
      CONSTRAINT id_referred FOREIGN KEY (id_referred) REFERENCES referred (id)
    ) ENGINE=mroonga DEFAULT CHARSET utf8mb4;
    
    ALTER TABLE referred DROP COLUMN name;
    ERROR 1016 (HY000): [table][remove] a column that references the table exists: <refer.id_referred> -> <#sql2-3bc-25>
    
  • Fixed a build error when we built Mroonga with MariaDB 10.3.28, 10.4.18, or 10.5.9. [GitHub#392][Patched by Tomohiro KATO]

  • Fixed a bug that a update of Mroonga fails on MariaDB. [Reported by ひじー]

Thanks#

  • Kosuke Yamashita

  • Tomohiro KATO

  • ひじー

Release 11.00 - 2021-02-09#

This is a major version up! But It keeps backward compatibility. You can upgrade to 11.00 without rebuilding database.

In this version, MySQL, MariaDB, or PerconaServer will be automatically restarted. Because Mroonga 11.00 requires Groonga 11.0.0 or later but it will not reloaded until MySQL, MariaDB, or PrerconaServer is restarted.

Improvements#

  • [CentOS] Dropped support for MySQL 5.6

    • Because it reached EOL at Feb 1, 2021.

  • [CentOS] Dropped support for Percona Server 5.6

  • Dropped support for MariaDB 10.1 on Ubuntu 18.04 LTS.

    • Because MariaDB 10.1 already has reached EOL in upstream.

  • Updated version of Groonga to 11.0.0 or later that Mroonga requires.

    • Because a high impact bug of index corruption is fixed in Groonga 11.0.0.