Nouvelles fonctionnalités prévues pour 5.1
<<<
Ce qui doit être fait dans un futur proche Ce qui est prévu à moyen terme
>>>

1.6 Les évolutions de MySQL (la liste des tâches)
1 Informations générales
 Manuel de Référence MySQL 4.1 : Version Française

Nouvelles fonctionnalités prévues pour la version 4.1
Nouvelles fonctionnalités prévues pour la version 5.0
Nouvelles fonctionnalités prévues pour 5.1
->Ce qui doit être fait dans un futur proche
Ce qui est prévu à moyen terme
Ce qui n'est pas prévu

1.6.4 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 par exemple 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.

<< Ce qui doit être fait dans un futur proche >>
Nouvelles fonctionnalités prévues pour 5.1 Les évolutions de MySQL (la liste des tâches) Ce qui est prévu à moyen terme