Annexe B. Crédits
Précédent |  | Suivant

## Annexe B. Crédits

Cet annexe liste les développeurs, contributeurs, et supporters qui ont fait de MySQL est ce qu'il est aujourd'hui.

## B.1. Développeurs chez MySQL AB

Voici les développeurs qui sont employés par `MySQL AB` pour travailler sur la base de données MySQL, grosso modo dans leur ordre d'embauche. Pour chaque développeur, vous trouverez une petite liste de leur tâches et de leur responsabilités, ainsi que leur réalisations. Tous les développeurs sont impliqués dans le support.

- Michael (Monty) Widenius

  - Chef d'équipe et auteur principal du serveur MySQL (`mysqld`).

  - Nouvelles fonctions dans la bibliothèque de chaînes de caractères.

  - La majorité de la bibliothèque `mysys`.

  - Les bibliothèques `ISAM` et `MyISAM` (les fichiers d'index `B-tree` avec compression d'index et différentes formats d'enregistrement).

  - La bibliothèque `HEAP`. Un système de gestion des tables en mémoire avec un hashage dynamique efficace. Utilisé depuis 1980 et publié en 1984.

  - Le programme `replace` (jetez y un oeil c'est carrément COOL!).

  - `MyODBC`, le pilote ODBC de Windows95.

  - La correction de bogues avec les `MIT-pthreads` pour qu'ils fonctionnent avec MySQL. Et aussi l'Unireg, une application à base de curses avec de nombreuses utilisations.

  - Le port d'outils `mSQL` comme `msqlperl`, `DBD`/`DBI` et `DB2mysql`.

  - La majorité de `crash-me` et les fondations des tests de performances de MySQL.

- David Axmark

  - Auteur original du manuel de référence, incluent les améliorations de `texi2html`.

  - La mise à jour automatique du site web depuis le manuel.

  - Le support initial de Autoconf, Automake et Libtool.

  - Les licences.

  - Des parties de tous les fichiers textes (de nos jours, uniquement le `README` est encore présent. le reste est dans le manuel).

  - Nombreux tests des nouvelles fonctionnalités.

  - Notre expert légal des logiciels libres.

  - Le responsable des listes de diffusion (qui n'a jamais le temps de le faire correctement...).

  - Notre code initial pour le port (bientôt plus de 10 ans). De nos jours, seules des parties de `mysys` restent.

  - La personne que Monty appelle au milieu de la nuit lorsqu'il a réussi a faire fonctionner la nouvelle fonctionnalité!

  - Le chef "Open Source" (Relations avec la communauté MySQL).

- Jani Tolonen

  - `mysqlimport`

  - Un grand nombre d'extension pour le client en ligne de commande.

  - `PROCEDURE ANALYSE()`

- Sinisa Milivojevic

  - Compression du protocole client/serveur avec `zlib`.

  - Hashing parfait pour la phase d'analyse lexicale.

  - Insertions multi-lignes

  - Option `mysqldump` -e

  - `LOAD DATA LOCAL INFILE`

  - Option `SQL_CALC_FOUND_ROWS` `SELECT`

  - Option `--max-user-connections=...`

  - `net_read` et `net_write_timeout`

  - `GRANT`/`REVOKE` et `SHOW GRANTS FOR`

  - Nouveau protocole client/serveur pour la version 4.0

  - `UNION` en version 4.0

  - Traitements multi-table de `DELETE`/`UPDATE`

  - Tables dérivées en version 4.1

  - Gestion des ressources utilisateurs.

  - Développeur initial de l'API `MySQL++` C++ API et du client `MySQLGUI`.

- Tonu Samuel (ancien développeur)

  - Interface VIO (la base pour le protocole client/serveur chiffré ).

  - Système de fichier MySQL (une méthode pour utiliser la base MySQL comme un système de fichiers).

  - L'expression `CASE`.

  - Les fonctions `MD5()` et `COALESCE()`.

  - Le support `RAID` des tables `MyISAM`.

- Sasha Pachev

  - Implémentation initiale de la réplication (jusqu'en version 4.0).

  - `SHOW CREATE TABLE`.

  - `mysql-bench`

- Matt Wagner

  - Suite de tests MySQL.

  - Webmestre (jusqu'en 2002).

  - Coordinateur du développement.

- Miguel Solorzano

  - Développement Win32 et publications.

  - Code du serveur sur Windows NT.

  - WinMySQLAdmin

- Timothy Smith (ancien développeur)

  - Support des jeux de caractères dynamiques.

  - le script configure, les `RPM` et d'autres parties du système de compilation.

  - Développeur initial de `libmysqld`, le serveur intégré.

- Sergei Golubchik

  - Recherche en texte plein.

  - bibliothèque de clés pour `MERGE`.

- Jeremy Cole

  - Relecture et édition de ce manuel.

  - `ALTER TABLE ... ORDER BY ...`.

  - `UPDATE ... ORDER BY ...`.

  - `DELETE ... ORDER BY ...`.

- Indrek Siitan

  - Design et programmation de notre interface web.

  - Auteur de notre lettre d'actualité.

- Jorge del Conde

  - `MySQLCC` (`MySQL Control Center`)

  - Développement Win32

  - Implémentation initiale des portails du site web.

- Venu Anuganti

  - MyODBC 3.51

  - Nouveau protocole client/serveur pour la version 4.1 (pour les requêtes préparées).

- Arjen Lentz

  - Responsable du manuel de référence MySQL.

  - Préparation de la version imprimée chez O'Reilly.

- Alexander (Bar) Barkov, Alexey (Holyfoot) Botchkov et Ramil Kalimullin

  - Données spatiales (GIS) et R-Trees en version 4.1

  - Unicode et jeux de caractères pour la version 4.1

- Oleksandr (Sanja) Byelkin

  - Cache de requêtes en version 4.0

  - Implémentation des sous-requêtes en version 4.1.

- Aleksey (Walrus) Kishkin et Alexey (Ranger) Stroganov

  - Design des tests de performance et analyse.

  - Maintenance de la suite de test MySQL.

- Zak Greant

  - Porte parole Open Source, relation avec la communauté.

- Carsten Pedersen

  - Le programme de certification MySQL.

- Lenz Grimmer

  - Ingénierie de mise en production (compilation et publication).

- Peter Zaitsev

  - Fonction `SHA1()`, `AES_ENCRYPT()` et `AES_DECRYPT()`.

  - Débogage et nettoyage de diverses fonctionnalités.

- Alexander (Salle) Keremidarski

  - Support.

  - Débogage.

- Per-Erik Martin

  - Chef de projet pour les procédures stockées et les triggers.

- Jim Winstead

  - Chef développeur web.

- Mark Matthews

  - Connecteur/Pilote J (Java).

- Peter Gulutzan

  - Compatibilité avec les standards SQL-99, SQL-2003.

  - Documentation des codes/algorithmes MySQL existant.

- Guilhem Bichot

  - Réplication, depuis MySQL version 4.0.

  - Correction de la gestion des exposants pour les `DECIMAL`.

  - Auteur de `mysql_tableinfo`.

- Antony T. Curtis

  - Port de MySQL sur OS/2.

## B.2. Contributeurs à MySQL

Bien que `MySQL AB` possède tous les droits du `serveur MySQL` et du `manuel MySQL`, nous voulons montrer notre reconnaissance à ceux qui ont apportés leur contribution d'une manière ou d'une autre à la `distribution MySQL`. Les contributeurs sont listés ici, dans un ordre aléatoire :

- Gianmassimo Vigazzola `<qwerg@mbox.vol.it>` ou `<qwerg@tin.it>`

  Le portage initial sur Win32/NT.

- Per Eric Olsson

  Pour des critiques plus ou moins constructives, et des tests sur les formats de lignes dynamiques.

- Irena Pancirov `<irena@mail.yacc.it>`

  Portage sur Win32 avec le compilateur Borland. `mysqlshutdown.exe` et `mysqlwatch.exe`

- David J. Hughes

  Pour ses efforts de constitution d'une base de données SQL partagée. Chez TcX, le prédécesseur de MySQL AB, nous avons commencé avec `mSQL`, mais nous nous sommes aper¸us que cela ne satisfaisait pas nos besoins, et nous avons écrit une interface SQL avec notre application Unireg. Les clients `mysqladmin` et `mysql` ont été largement influencés par leur équivalent `mSQL`. Nous avons mis une grande partie de nos efforts à faire que la syntaxe de MySQL soit un sur ensemble de celle de `mSQL`. De nombreuses idées d'API ont été empruntées à `mSQL` pour rendre plus facile le portage des programmes depuis `mSQL` vers MySQL. Le logiciel MySQL ne contient aucun code extrait de `mSQL`. Les deux fichiers (`client/insert_test.c` et `client/select_test.c`) qui font partie de la distribution sont basés sur les fichiers correspondants, et sans droits de la distribution `mSQL`, mais sont modifiés, pour servir d'exemple aux modifications nécessaires à la conversion de code de `mSQL` vers MySQL. (`mSQL` est la propriété de David J. Hughes).

- Patrick Lynch

  Pour nous avoir aidé à acquérir http://www.mysql.com/.

- Fred Lindberg

  Pour avoir configuré qmail pour qu'il gère les listes de diffusions MySQLm et pour l'aide incroyable que nous avons re¸u pour gérer les listes de diffusions de MySQL.

- Igor Romanenko `<igor@frog.kiev.ua>`

  `mysqldump` (précédemment appelé `msqldump`, mais porté et amélioré par Monty).

- Yuri Dario

  Pour avoir suivi et amélioré la version MySQL pour OS/2.

- Tim Bunce

  Auteur de `mysqlhotcopy`.

- Zarko Mocnik `<zarko.mocnik@dem.si>`

  Tri pour le slovène.

- "TAMITO" `<tommy@valley.ne.jp>`

  Les macros de jeu de caractères `_MB`m et les jeux de caractères ujis et sjis.

- Joshua Chamas `<joshua@chamas.com>`

  La base des insertions concurrentes, la syntaxe de date améliorée, le débogage sous NT et les réponses sur la liste de diffusion.

- Yves Carlier `<Yves.Carlier@rug.ac.be>`

  `mysqlaccess`, un programme qui affiche les droits des utilisateurs.

- Rhys Jones `<rhys@wales.com>` (et GWE Technologies Limited)

  Pour JDBC, un module pour extraire des données de bases MySQL avec un client Java.

- Dr Xiaokun Kelvin ZHU `<X.Zhu@brad.ac.uk>`

  Développement du pilote JDBC et d'autres outils MySQL liés à Java.

- James Cooper `<pixel@organic.com>`

  Pour la configuration d'une archive indexée des listes de diffusion sur son site.

- Rick Mehalick `<Rick_Mehalick@i-o.com>`

  Pour `xmysql`, un client graphique X pour MySQL.

- Doug Sisk `<sisk@wix.com>`

  Pour les paquets `RPM` de MySQL pour RedHat Linux.

- Diemand Alexander V. `<axeld@vial.ethz.ch>`

  Pour les paquets `RPM` de MySQL pour RedHat Linux-Alpha.

- Antoni Pamies Olive `<toni@readysoft.es>`

  Pour les paquets `RPM` de MySQL pour Intel et SPARC.

- Jay Bloodworth `<jay@pathways.sde.state.sc.us>`

  Pour les paquets `RPM` de MySQL pour MySQL Version 3.21.

- David Sacerdote `<davids@secnet.com>`

  Idées pour la vérification sécuritaire des noms d'hôtes.

- Wei-Jou Chen `<jou@nematic.ieo.nctu.edu.tw>`

  Le support des caractères chinois (BIG5).

- Wei He `<hewei@mail.ied.ac.cn>`

  Un grand nombre de fonctionnalités pour le jeu de caractères Chinese(GBK).

- Jan Pazdziora `<adelton@fi.muni.cz>`

  Ordre de tri tchèque.

- Zeev Suraski `<bourbon@netvision.net.il>`

  Format d'heure `FROM_UNIXTIME()`, fonctions `ENCRYPT()` et conseiller `bison`. Membre actif des listes de diffusion.

- Luuk de Boer `<luuk@wxs.nl>`

  Portage et amélioration de la suite de tests avec `DBI`/`DBD`. A été d'une grande aide avec le test `crash-me` et l'exécution des tests. Certaines améliorations de la fonction de date. Le script `mysql_setpermissions`.

- Alexis Mikhailov `<root@medinf.chuvashia.su>`

  Fonctions utilisateurs (`UDF`); `CREATE FUNCTION` et `DROP FUNCTION`.

- Andreas F. Bobak `<bobak@relog.ch>`

  L'extension `AGGREGATE` des fonctions `UDF`.

- Ross Wakelin `<R.Wakelin@march.co.uk>`

  Aide avec InstallShield pour MySQL-Win32.

- Jethro Wright III `<jetman@li.net>`

  La bibliothèque `libmysql.dll`.

- James Pereria `<jpereira@iafrica.com>`

  Mysqlmanager, un outil d'administration Win32 graphique pour MySQL.

- Curt Sampson `<cjs@portal.ca>`

  Portage des `MIT-pthreads` vers NetBSD/Alpha et NetBSD 1.3/i386.

- Martin Ramsch `<m.ramsch@computer.org>`

  Exemples dans les tutoriels du manuel MySQL.

- Steve Harvey

  Pour la sécurisation de `mysqlaccess`.

- Konark IA-64 Centre of Persistent Systems Private Limited

  http://www.pspl.co.in/konark/. Aide avec le port Win64 du serveur MySQL.

- Albert Chin-A-Young.

  Modifications de la configuration pour Tru64, support des grands fichiers, et amélioration des gestionnaires TCP.

- John Birrell

  Emulation de `pthread_mutex()` pour OS/2.

- Benjamin Pflugmann

  Tables `MERGE` améliorée pour la gestion des `INSERTS`. Membre actif des listes de diffusion.

- Jocelyn Fournier

  Travail excellent et report d'un grand nombre de bogues (surtout dans le code des requêtes imbriquées de MySQL 4.1).

- Marc Liyanage

  Maintenance des paquets Mac OS X et informations de grande valeur en ce qui concerne la création des paquets pour Mac OS X.

D'autres contributeurs, chasseurs de bugs et testeurs : James H. Thompson, Maurizio Menghini, Wojciech Tryc, Luca Berra, Zarko Mocnik, Wim Bonis, Elmar Haneke, `<jehamby@lightside>`, `<psmith@BayNetworks.com>`, `<duane@connect.com.au>`, Ted Deppner `<ted@psyber.com>`, Mike Simons, Jaakko Hyvatti.

Et de nombreux autres patches et rapports issus des mailing listes :

Un grand merci à ceux qui aident à répondre aux questions sur la liste de diffusion de MYSQL :

- Daniel Koch `<dkoch@amcity.com>`

  Configuration Irix.

- Luuk de Boer `<luuk@wxs.nl>`

  Questions performances.

- Tim Sailer `<tps@users.buoy.com>`

  Questions sur `DBD::mysql`.

- Boyd Lynn Gerber `<gerberb@zenez.com>`

  Questions sur SCO.

- Richard Mehalick `<RM186061@shellus.com>`

  Questions sur `xmysql` et les questions d'installation de base.

- Zeev Suraski `<bourbon@netvision.net.il>`

  Configuration du module Apache (log & identification), MySQL et PHP, syntaxe SQL et autres questions.

- Francesc Guasch `<frankie@citel.upc.es>`

  Questions générales.

- Jonathan J Smith `<jsmith@wtp.net>`

  Questions spécifiques aux OS comme Linux, syntaxe SQL et autres sujets intéressants.

- David Sklar `<sklar@student.net>`

  Utilisation de MySQL avec PHP et Perl.

- Alistair MacDonald `<A.MacDonald@uel.ac.uk>`

  Pas encore spécifié mais généraliste : Linux et un peu HP-UX. Pousse les utilisateurs à utiliser `mysqlbug`.

- John Lyon `<jlyon@imag.net>`

  Questions sur l'installation de MySQL sur le système Linux, avec soit les fichiers `.rpm` ou en compilant depuis la source.

- Lorvid Ltd. `<lorvid@WOLFENET.com>`

  Questions sur la facturation, les licences, le support et le copyright de MySQL.

- Patrick Sherrill `<patrick@coconet.com>`

  Questions sur les interfaces ODBC et VisualC++.

- Randy Harmon `<rjharmon@uptimecomputers.com>`

  `DBD`, Linux, et quelques questions SQL.

## B.3. Documenteurs et traducteurs

La liste des personnes suivantes nous a aidé à écrire la documentation MySQL et à la traduire. Certains ont aussi travaillés sur les messages d'erreurs MySQL.

- Paul DuBois

  Contribution continuelle pour rendre ce manuel présentable et compréhensible. Cela inclut la réécriture des courageux essais de Monty et David, dans un anglais que tout le monde comprend.

- Kim Aldale

  Aide à la réécriture des premières versions de Monty et David.

- Michael J. Miller Jr. `<mke@terrapin.turbolift.com>`

  Pour le premier manuel MySQL. Et beaucoup de corrections orthographiques et typographiques dans la FAQ, qui a été finalement transformée en une documentation complète.

- Yan Cailin

  Premier traducteur du manuel de référence MySQL en chinois simplifié, au début de l'année 2000, en Big5 et HK. (http://mysql.hitstar.com/) Page personnelle linuxdb.yeah.net.

- Jay Flaherty `<fty@mediapulse.com>`

  Grosses contributions dans la section Perl `DBI`/`DBD` du manuel.

- Paul Southworth `<pauls@etext.org>`, Ray Loyzaga `<yar@cs.su.oz.au>`

  Relecture du manuel de référence.

- Therrien Gilbert `<gilbert@ican.net>`, Jean-Marc Pouyot `<jmp@scalaire.fr>`

  Messages d'erreurs en fran¸ais.

- Petr Snajdr, `<snajdr@pvt.net>`

  Messages d'erreurs en tchèque.

- Jaroslaw Lewandowski `<jotel@itnet.com.pl>`

  Messages d'erreurs en polonais.

- Miguel Angel Fernandez Roiz

  Messages d'erreurs en espagnol.

- Roy-Magne Mo `<rmo@www.hivolda.no>`

  Messages d'erreurs en norvégien et test de la version 3.21.#.

- Timur I. Bakeyev `<root@timur.tatarstan.ru>`

  Messages d'erreurs en russe.

- `<brenno@dewinter.com>` & Filippo Grassilli `<phil@hyppo.com>`

  Messages d'erreurs en italien.

- Dirk Munzinger `<dirk@trinity.saar.de>`

  Messages d'erreurs en allemand.

- Billik Stefan `<billik@sun.uniag.sk>`

  Messages d'erreurs en slovaque.

- Stefan Saroiu `<tzoompy@cs.washington.edu>`

  Messages d'erreurs en roumain.

- Peter Feher

  Messages d'erreurs en hongrois.

- Roberto M. Serqueira

  Messages d'erreurs en portugais.

- Carsten H. Pedersen

  Messages d'erreurs en danois.

- Arjen G. Lentz

  Messages d'erreurs en hollandais, et fin de la traduction partielle.

## B.4. Bibliothèques utilisées et incluses dans MySQL

Voici une liste des auteurs de bibliothèques que nous avons inclus dans le source du serveur MySQL, pour le rendre plus facile à compiler et à installer. Nous sommes reconnaissants envers ceux qui les ont créé : ils nous ont facilité la vie.

- Fred Fish

  Pour son excellente bibliothèque de débogage et de trace. Monty a ajouté de nombreuses petites améliorations à la bibliothèque (en terme de vitesse et fonctionnalités).

- Richard A. O'Keefe

  Pour la bibliothèque de gestion des chaînes de caractères, disponible dans le domaine public.

- Henry Spencer

  Pour sa bibliothèque d'expressions régulières, utilisée dans `WHERE column REGEXP regexp`.

- Chris Provenzano

  Pthreads utilisateurs. Dans le copyright : `This product includes software developed by Chris Provenzano, the University of California, Berkeley, and contributors.` Nous utilisons la version 1_60_beta6, modifiée par Monty (voir `mit-pthreads/Changes-mysql`).

- Jean-loup Gailly et Mark Adler

  Pour la bibliothèque zlib (utilisée avec MySQL sous Windows).

- Bjorn Benson

  Pour son paquet safe_malloc (contrôle de mémoire), qui est utilisé lorsque vous configurez MySQL avec `--debug`.

- Free Software Foundation

  La bibliothèque `readline` (utilisée par le client mysql).

- La fondation `NetBSD`

  Le paquet `libedit` (utilisé optionnellement par le client mysql).

## B.5. Applications qui supportent MySQL

Voici une liste de responsables et auteurs d'interfaces, applications et paquets, que de nombreuses personnes utilisent avec MySQL.

Nous ne pouvons pas lister tous les paquets possibles car la liste serait trop difficile à entretenir. Pour les autres paquets, voyez le portail d'applications à http://www.mysql.com/portal/software.

- Tim Bunce, Alligator Descartes

  Pour l'interface `DBD` (Perl).

- Andreas Koenig `<a.koenig@mind.de>`

  Pour l'interface Perl avec MySQL.

- Jochen Wiedmann `<wiedmann@neckar-alb.de>`

  Pour le module Perl `DBD::mysql`.

- Eugene Chan `<eugene@acenet.com.sg>`

  Pour le port de PHP sur MySQL Server.

- Georg Richter

  Tests de MySQL 4.1 et chasse aux bugs. Nouvelle extensions PHP 5.0 `mysqli` (API) pour MySQL 4.1 et plus récent.

- Giovanni Maruzzelli `<maruzz@matrice.it>`

  Pour le port de iODBC (Unix ODBC).

- Xavier Leroy `<Xavier.Leroy@inria.fr>`

  L'auteur de `LinuxThreads` (utilisé par MySQL Server sur Linux).

## B.6. Outils utilisés pour créer MySQL

Voici une liste des outils que nous avons utilisés pour créer MySQL. Nous utilisons cette page pour remercier les auteurs qui les ont créé, et sans lesquels nous n'aurions pas pu faire de MySQL ce qu'il est aujourd'hui.

- Free Software Foundation

  De qui nous avons re¸u un excllent compilateur (`gcc`), un excellent débogueur (`gdb` et la bibliothèque `libc` (à laquelle nous avons emprunté le fichier `strto.c` pour faire fonctionner du code sur Linux).

- Free Software Foundation & l'équipe de développement XEmacs

  Pour un éditeur texte et un environnement de programmation fantastique, utilisé par presque tout le monde chez MySQL AB.

- Julian Seward

  L'auteur de `valgrind`, un excellent outil de vérification de mémoire, qui nous a aidé à trouver des bugs très difficiles à traquer.

- Dorothea Lütkehaus et Andreas Zeller

  Pour `DDD` (Le Data Display Debugger) qui est une excellente interface graphique pour `gdb`).

## B.7. Supporters de MySQL

Tandis que `MySQL AB` possède tous les droits du `serveur MySQL` et du `manuel MySQL`, nous voulons montrer notre reconnaissances aux compagnies suivantes, qui nous ont aidé à financer le développement du `serveur MySQL`, soit en nous payant pour développer de nouvelles fonctionnalités, soit en nous fournissant en matériel pour le développement du `serveur MySQL`.

- VA Linux / Andover.net

  Financement de la réplication.

- NuSphere

  Edition du manuel MySQL.

- Stork Design studio

  Le site web MySQL utilisé entre 1998 et 2000.

- Intel

  Contribution au développement sur les plates-formes Windows et Linux.

- Compaq

  Contribution au développement sur Linux/Alpha.

- SWSoft

  Développement de la version embarquée `mysqld`.

- FutureQuest

  `--skip-show-database`

## B.8. Les évolutions de MySQL (la liste des tâches)

Cette section liste les fonctionnalités que nous prévoyons d'ajouter à MySQL. Les listes sont réparties par version, et les actions sont réparties approximativement par ordre de priorité.

Note : si vous êtes un utilisateur professionnel, avec un besoin urgent pour une fonctionnalité, contactez `<sales@mysql.com>` pour discuter de possibilités de sponsor. En allouant des finances à certaines fonctionnalités, nous pouvons nous concentrer sur certains objectifs à court terme. Un des exemples de fonctionnalité sponsorisé est la réplication.

### B.8.1. Nouvelles fonctionnalités prévues pour la version 5.0

Les fonctionnalités suivantes sont prévues pour la version 5.0. Notez que comme nous avons de nombreux développeurs qui travaillent sur différents projets, il peut aussi y avoir des ajouts de fonctionnalités. Il y a aussi des chances que ces fonctionnalités soient ajoutées en MySQL 4.1. Pour une liste des fonctionnalités déjà disponibles en MySQL 4.1, voyez Section 1.3.2.1, « Fonctionnalités disponibles en MySQL 4.1 ».

Pour ceux qui souhaitent étudier en détail les tous derniers développements de MySQL, vous pouvez accéder au serveur BitKeeper public de MySQL 5.0. See Section 2.4.3, « Installer à partir de l'arbre source de développement ». Depuis décembre 2003, des versions binaires pour les versions 5.0 sont aussi disponibles.

- Procédures stockées

  - Les procédures stockées sont actuellement développées avec notre version 5.0. See Chapitre 19, Procédures stockées et fonctions.

    Nous allons aussi ajouter un environnement pour permettre l'utilisation de langages externes et assurer (lorsque c'est possible) une compatibility avec PL/SQL et T-SQL.

- Nouvelles fonctionnalités

  - Support élémentaire des curseurs. See Section 19.2.11, « Curseurs ».

  - La capacité de spécifier explicitement pour les tables `MyISAM` qu'un index est de type `RTREE`. En version 4.1, les index `RTREE` sont généralement utilisé pour les données géométriques (types GIS), mais ne peuvent pas être créés à la demande.

  - Les tables `HEAP` à taille de ligne dynamique.

- Compatibilité avec les standards, portabilité et migration.

  - Ajout d'un véritable type `VARCHAR` (ce support est déjà disponible avec le format de table `MyISAM`).

- Amélioration de la vitesse

  - `SHOW COLUMNS FROM table_name` (utilisé par le client `mysql` pour permettre la recherche de nom de colonnes) ne devrait pas ouvrir la table, mais seulement le fichier de définition. Cela prendra moins de mémoire, et sera bien plus rapide.

  - Permettre à la commande `DELETE` sur les tables `MyISAM` l'utilisation des caches de lignes. Pour cela, nous devons modifier le thread de cache de ligne lorsque nous modifions le fichier `.MYD`.

  - Amélioration des tables en mémoire `HEAP` :

    - Lignes de taille dynamique.

    - Gestion plus rapide des lignes (moins de copies).

- Amélioration de l'ergonomie

  - Résolution du problème avec `RENAME TABLE`, utilisé sur une table active dans un `MERGE`, qui conduit à la corruption de la table.

Le manuel inclut le changelog de la version, avec plus de détails sur les nouvelles fonctionnalités. See Section C.1, « Changements de la version 5.0.0 (Développement) ».

### B.8.2. Nouvelles fonctionnalités prévues pour 5.1

- Nouvelle fonctionnalité

  - `FOREIGN KEY` supporte tous les types de tables.

  - Contraintes de niveau colonne.

  - Réplication protégé contre les crash.

  - Sauvegarde à chaud, avec peu d'impact sur les performances. La sauvegarde à chaud permettra de simplifier l'ajout d'esclaves de réplication sans avoir à éteindre le maître.

- Amélioration de la vitesse

  - Nouveau format de définition des tables en format texte (fichiers `.frm`) et un cache de table pour les définitions de tables. Cela permettra d'accélérer les requêtes de structure de tables, et de consolider le support des clés étrangères.

  - Optimisation du type `BIT` pour qu'il prenne 1 bit (actuellement, `BIT` prend 1 caractère).

- Amélioration de l'ergonomie

  - Ajout Ajout d'option au protocole client/serveur pour obtenir des indications de progression pour les requêtes longues.

  - Implémentation de `RENAME DATABASE`. Pour que cela soit sécuritaire pour tous les pilotes de stockage, cela doit fonctionner comme ceci :

    - Crée une nouvelle base de données.

    - Pour chaque table, faire un renommage d'une base à l'autre, comme nous le faisons avec `RENAME`.

    - Effacer l'ancienne base.

  - Nouvelle interface interne pour les fichiers. Cela rendra la gestion des fichiers bien plus générale, et simplifiera l'ajout d'extensions comme `RAID` (l'implémentation actuelle est un bidouillage).

### B.8.3. Ce qui doit être fait dans un futur proche

- Nouvelle fonctionnalité

  - Commande `CONNECT BY PRIOR ...`, inspirée d'Oracle, pour traiter les structures de type arbre (hiérarchisée).

  - Tous les types manquants de ANSI92 et ODBC 3.0.

  - Ajout de `SUM(DISTINCT)`.

  - `INSERT SQL_CONCURRENT` et `mysqld --concurrent-insert` pour faire des insertions concurrents à la fin du fichier, même si il est verrouillé en lecture.

  - Permettre la modification de variables dans une commande `UPDATE`. Par exemple : `UPDATE TABLE foo SET @a=a+b,a=@a, b=@a+c`.

  - Changer le moment de modifications des variables, pour que l'on puisse les utiliser avec les commandes de groupement `GROUP BY`, comme ceci : `SELECT id, @a:=COUNT(*), SUM(sum_col)/@a FROM table_name GROUP BY id`.

  - Ajout de l'option `IMAGE` à la commande `LOAD DATA INFILE` pour ne pas modifier les champs `TIMESTAMP` et `AUTO_INCREMENT`.

  - Ajout de la syntaxe `LOAD DATE INFILE ... UPDATE`, qui fonctionne comme ceci :

    - Pour les tables ayant des clés primaires, si les données contiennent une clé primaire, les données qui existent et correspondent à cette clé, sont modifiées. Cependant, les colonnes omises sont ignorées.

    - Pour les tables ayant une clé primaire dont il manque une partie dans les données entrantes, ou qui n'ont pas de clé primaire, le flux est traité comme `LOAD DATA INFILE ... REPLACE INTO`.

  - Rendre la syntaxe `LOAD DATA INFILE` utilisable comme ceci :

        LOAD DATA INFILE 'file_name.txt' INTO TABLE tbl_name
             TEXT_FIELDS (text_field1, text_field2, text_field3)
             SET table_field1=CONCAT(text_field1, text_field2),
                 table_field3=23
             IGNORE text_field3

    Cela peut être utilisé pour ignorer des colonnes supplémentaires dans le fichier texte, ou pour modifier des colonnes en fonction de données dans les valeurs entrantes.

  - De nouvelles fonctions pour travailler avec le type de colonne `SET` :

    - `ADD_TO_SET(value,set)`

    - `REMOVE_FROM_SET(value,set)`

  - Si vous interrompez `mysql` au beau milieu d'une requête, vous pouvez ouvrir une autre connexion pour tuer la requête en cours. Ou bien, une tentative doit être faite pour détecter cela sur le serveur.

  - Ajout d'une interface au moteur de sauvegarde pour que vous puissiez l'utiliser comme table système. Cela sera un peu lent si vous demandez toutes les informations de toutes les tables, mais très souple. `SHOW INFO FROM tbl_name` doit être implémenté pour connaître les informations de bases des tables.

  - Permettre `SELECT a FROM crash_me LEFT JOIN crash_me2 USING (a)`; dans ce cas, `a` est supposé provenir de la table `crash_me`.

  - Les options `DELETE` et `REPLACE` dans les commandes `UPDATE` (cela va effacer les lignes lors d'un doublon dans la requête).

  - Modification du format de `DATETIME` pour stocker les fractions de secondes.

  - Rendre possible l'utilisation de la bibliothèque GNU `regexp` au lieu de la bibliothèque actuelle (la bibliothèque GNU devrait être plus rapide que l'ancienne).

- Compatibilité avec les standards, migration et portabilité.

  - Ne pas utiliser de valeur par défaut (`DEFAULT`) pour les colonnes. Indiquer une erreur lors des commandes `INSERT`, si elle contient une colonne qui n'a pas de valeur par défaut.

  - Ajout des fonctions de groupement `ANY()`, `EVERY()` et `SOME()`. En ANSI SQL, elles ne fonctionnent que sur les colonnes de type booléens, mais nous pouvons étendre leur champ d'action aux colonnes et expression, en appliquant la règle suivante : value == 0 -> FALSE et value <> 0 -> TRUE.

  - Correction du type pour que `MAX(column)` ait le même type de colonne :

        mysql> CREATE TABLE t1 (a DATE);
        mysql> INSERT INTO t1 VALUES (NOW());
        mysql> CREATE TABLE t2 SELECT MAX(a) FROM t1;
        mysql> SHOW COLUMNS FROM t2;

- Amélioration des performances

  - Ne permettre qu'à un nombre défini de threads d'exécuter des réparations `MyISAM` simultanément.

  - Changer `INSERT ... SELECT` pour utiliser optionnellement des insertions simultanées.

  - Ajouter une option pour écrire sur le disque les pages de clés pour les tables à clés retardées, qui n'ont pas été sauvées dernièrement.

  - Permettre les jointures sur des parties de clés (problème d'optimisation).

  - Un analyseur de logs, qui permettrait d'extraire des informations sur les tables les plus souvent utilisées, les jointures, etc... Cela permettra aux utilisateurs d'identifier les tables qui peuvent être optimisées.

- Internationalisation

- Ergonomie

  - Retourner le type de champs original lors des requêtes `SELECT MIN(column) ... GROUP BY`.

  - Rendre possible la spécification de `long_query_time` avec une granularité de l'ordre de la microseconde.

  - Intégrer le code de `myisampack` dans le serveur, activer les commandes `PACK` or `COMPRESS` depuis le serveur.

  - Ajouter un cache de buffer de clé temporaire durant les commandes `INSERT/DELETE/UPDATE` pour que nous puissions nous rétablir si jamais le fichier d'index est plein.

  - Si vous effectuez la commande `ALTER TABLE` sur une table qui est un lien symbolique sur un autre disque, les tables temporaires seront aussi faites sur ce disque.

  - Implémenter un type `DATE/DATETIME` qui gère les fuseaux horaire correctement, pour résoudre le problème du décalage horaire.

  - Corriger la configuration pour que l'on puisse compiler toute les bibliothèques (comme `MyISAM`) sans les threads.

  - Permettre toutes les variables SQL dans la clause `LIMIT`, comme `LIMIT @a,@b`.

  - Affichage automatique de `mysql` vers un navigateur web.

  - `LOCK DATABASES` (avec différentes options).

  - De nombreuses nouvelles variables dans `SHOW STATUS`. Les lignes lues et modifiées. Les sélections sur tables uniques et les jointures. Le nombre moyen de tables dans une sélection. Le nombre de requêtes `ORDER BY` et `GROUP BY`.

  - `mysqladmin copy database new-database`; a besoin de la commande `COPY` dans `mysqld`.

  - La liste des processus doit afficher le nombre de requêtes et de threads.

  - `SHOW HOSTS` affichera les informations concernant le cache de noms d'hôtes.

  - Changer le nom des tables de chaîne vide à `NULL` pour les colonnes calculées.

  - Ne pas utiliser la fonction `Item_copy_string` sur les valeurs numériques, pour éviter les conversions nombre -> chaîne -> nombre en cas de : `SELECT COUNT(*)*(id+0) FROM table_name GROUP BY id`

  - Changer `ALTER TABLE` pour qu'il n'interrompe pas le client qui exécute des `INSERT DELAYED`.

  - Lorsque les colonnes sont spécifiées dans `UPDATE`, elles contiennent les anciennes valeurs d'avant la modification.

- Nouveaux systèmes d'exploitation.

  - Port des clients MySQL vers LynxOS.

### B.8.4. Ce qui est prévu à moyen terme

- Implémenter la fonction : `get_changed_tables(timeout,table1,table2,...)`.

- Remplacer la lecture dans les tables par une zone mémoire aussi souvent que possible. Actuellement, seules les tables compressées utilisent des memmap.

- Rendre le code des timestamp automatiques bien plus pratique. Ajouter les timestamps dans le log avec `SET TIMESTAMP=#;`.

- Utiliser un mutex de lecture/écriture pour gagner de la vitesse.

- Vues simples (implémentation progressive jusqu'à support total). See Section 1.5.5.6, « Les vues ».

- Fermer automatiquement des tables si une table, une table temporaire ou un fichier temporaire re¸oit une erreur 23 (plus assez de fichiers ouverts).

- Meilleure propagation des constantes. Lorsqu'une occurrence de `col_name=n` est trouvée dans une expression, pour une `n`, remplacer les autres occurrences de `col_name` de l'expression avec `n`. Actuellement, cela n'arrive que pour les cas les plus simples.

- Changer toutes les expressions constantes par des expressions calculées, si possible.

- Optimiser les comparaisons `key` = `expression`. Actuellement, seules les relations `key` = `column` or `key` = `constant` sont optimisées.

- Fusionner les fonctions de copie pour améliorer le code.

- Changez `sql_yacc.yy` pour le remplacer par un analyseur de ligne de commande plus petit, et qui gère mieux les messages.

- Changer l'analyseur pour utiliser uniquement une règle pour tous les nombres d'arguments possibles dans une fonction.

- Utiliser les calculs de noms complets dans la clause ORDER (pour ACCESS97).

- `MINUS`, `INTERSECT` et `FULL OUTER JOIN`. (actuellement, `UNION` [en 4.0] et `LEFT OUTER JOIN` fonctionnent).

- `SQL_OPTION MAX_SELECT_TIME=#` pour donner une limite de temps à une requête.

- Diriger le log de modification vers une base.

- Améliorer `LIMIT` pour permettre la lecture de données à la fin du résultat.

- Alertes lors des connexions/écritures/lectures du client.

- Notez ces modifications de `safe_mysqld` : selon la FSSTND (que Debian essaie de suivre) les fichiers PID devraient être placés dans `/var/run/<progname>.pid` et les fichiers de logs dans `/var/log`. Il serait bien si vous pouviez mettre le "DATADIR" dans la première déclaration de "pidfile" et "log", de fa¸on à ce que l'emplacement de ces fichiers puisse être modifié en une seule ligne.

- Permettre au client de commander le log des actions.

- Ajouter l'utilisation de `zlib()` pour les fichiers `gzip`, avec la commande `LOAD DATA INFILE`.

- Corriger le tri et le groupage avec les colonnes `BLOB` (en partie résolu).

- Utiliser des sémaphores pour compter les threads. Il faut commencer par implémenter des sémaphores pour `MIT-pthreads`.

- Ajouter le support complet pour les `JOIN` avec parenthèses.

- Comme alternative à la relation un thread, une connexion, gérer un groupe de threads pour répondre aux requêtes.

- Permettre la pose de plusieurs verrous avec `GET_LOCK`. Lors de ces verrous multiples, gérer le cas des blocages par verrous qui pourrait être introduit.

Le temps est indiqué en temps de travail et non pas en temps normal.

### B.8.5. Ce qui n'est pas prévu

Rien. Nous nous dirigeons vers la compatibilité complète avec ANSI 92/ANSI 99.

This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

Précédent |  | Suivant
Annexe A. Problèmes et erreurs communes | Sommaire | Annexe C. Historique des changements MySQL