Die Version 12.2.2 des Datenbanksystems MariaDB wurde veröffentlicht und gilt als die erste stabile Version des 12.2-Zweigs. Der MariaDB 12.2-Zweig wird als Rolling-Releases betrachtet, setzt die schrittweise Entwicklung neuer Funktionen fort und ersetzt den MariaDB 12.1-Zweig. Gleichzeitig wurde die Version 12.3.1 von MariaDB veröffentlicht, die eine neue Implementierung des Binärprotokolls (binlog) enthält und den Status eines Kandidaten für zukünftige LTS-Versionen hat. Der MariaDB 12.2-Zweig wird bis zur Veröffentlichung von 12.3.2 unterstützt.
Das MariaDB-Projekt ist eine Abspaltung von MySQL, die die Abwärtskompatibilität beibehält und sich durch die Integration zusätzlicher Speicher-Engines und erweiterte Funktionen auszeichnet. Die Entwicklung von MariaDB wird von der unabhängigen Organisation MariaDB Foundation geleitet, die einen offenen und transparenten Entwicklungsprozess pflegt und nicht von einzelnen Anbietern abhängig ist. MariaDB wird in vielen Linux-Distributionen (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) anstelle von MySQL bereitgestellt und ist in großen Projekten wie Wikipedia, Google Cloud SQL und Nimbuzz implementiert.
Zu den Änderungen im MariaDB 12.2-Zweig gehören:
- Im Kompatibilitätsmodus mit Oracle-Datenbanken wurden die Funktionen TO_NUMBER (Umwandlung eines Strings in eine Zahl) und TRUNC (Abschneiden von Zeitangaben, z.B. auf Stunde, Tag, Monat, Jahr) implementiert.
- Bei der Durchführung von JOIN-Operationen wurde eine Optimierung implementiert, die die Einzigartigkeit der Zeilen in Unterabfragen mit dem Ausdruck „GROUP BY“ berücksichtigt, um eine genauere Prognose der Anzahl der resultierenden Zeilen (out_rows) zu ermöglichen und die Anwendung von Indizes korrekt zu gestalten.
- Neue Steuerungsoptionen für den Optimierer ROWID_FILTER/NO_ROWID_FILTER und INDEX_MERGE/NO_INDEX_MERGE wurden hinzugefügt. Außerdem besteht die Möglichkeit, Blocknamen in den Abfragen implizit anzugeben (Optimierungsoptionen können Punkt-zu-Punkt auf Teile von Abfragen angewendet werden, indem auf sie mit den Namen „select#N“ verwiesen wird, wobei N die fortlaufende Nummer des Blocks ist). Zum Beispiel: „select /*+ JOIN_ORDER(@„select#2“ twenty,ten) */ ….“.
- Die Einschränkungen bezüglich der Verschachtelungstiefe von Strukturen in Funktionen zur Verarbeitung von JSON wurden aufgehoben (das Limit JSON_DEPTH_LIMIT, das zuvor den Wert 32 hatte, wurde entfernt).
- Eine Tabelle TRIGGERED_UPDATE_COLUMNS wurde im INFORMATION_SCHEMA (INFORMATION_SCHEMA.TRIGGERED_UPDATE_COLUMNS) hinzugefügt, die die Spalten anzeigt, die bei der Auslösung eines Triggers geändert werden.
- In der Tabelle PARAMETERS im INFORMATION_SCHEMA wurde die Spalte PARAMETER_DEFAULT implementiert, die die Standardwerte der Parameter gespeicherter Prozeduren enthält.
- Unterstützung für den Ausdruck „CREATE GLOBAL TEMPORARY TABLE“ zur Erstellung globaler temporärer Tabellen wurde experimentell implementiert. Solche temporären Tabellen werden nach Beendigung der Sitzung gelöscht und sind für alle Benutzer sichtbar, enthalten jedoch Daten, die für jeden Benutzer individuell sind.
- Im Testmodus wurde eine verbesserte Unterstützung für die Replikation zwischen Tabellen mit unterschiedlicher Struktur angeboten.
Quelle: opennet.ru
