Bug MySQL 3.23.x

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Bug MySQL 3.23.x

par Hubert Roksor » 26 mars 2006, 22:59

En fait, la vraie question est: pourquoi utilises-tu MySQL 3.23 ? D'après ce que je me rappelle, l'optimiseur de requête de la 3.23 est moins évolué que celui des versions qui l'ont précédé (4.0, 4.1, 5.0) donc ça ne va pas trop avec "plusieurs dizaines e tables avec des requêtes complexes".

À part ça, je dirais que c'est soit un bug™ soit une confusion entre la valeur 1 et l'ancienne notation numérique des champs (où 1 signifie "le premier champs de la tables", notation abandonnée depuis), même si dans ce cas le résultat devrait être différent... En règle générale je recommande de ne pas utiliser de valeurs numériques telles quelles, mais d'utiliser un opérateur tel que "CAST(1 AS INT)" mais CAST() n'existe qu'à partir de la 4.0... désolé, mais je pense que tu as le choix entre mettre à jour le serveur (de loin la meilleure solution) ou utiliser un hack comme celui que tu as posté. Et puisque les résultats renvoyés par les fonctions MySQL de PHP sont toujours des chaînes tu peux utiliser quelque chose comme:

Code : Tout sélectionner

SELECT `c1`, `c2`, `c3`, '1' FROM `t`;

par Cyrano » 26 mars 2006, 21:32

Et puisque tu n'as que trois champs, qu'est-ce qui t'empêche de faire simplement :

Code : Tout sélectionner

SELECT `c1`, `c2`, `c3` FROM `t`;
:?:

Bug MySQL 3.23.x

par jlsypro » 26 mars 2006, 20:54

Bonsoir,

je viens de rencontrer un problème sur un projet assez important (plusieurs dixaines de tables avec requêtes complexes) et après plusieurs tests, j'ai isolé une requête simple mais buggée :

SELECT `c1`, `c2`, `c3`, 1 FROM `t`;

Réponse obtenue :

Code : Tout sélectionner

c1 | c2 | c3 | 1 l1c1 | 1 | l1c3 | 1
Réponse attendue :

Code : Tout sélectionner

c1 | c2 | c3 | 1 l1c1 | l1c2 | l1c3 | 1
Pour le contexte, voici la création et le remplissage de la table :

CREATE TABLE `t` (`c1` VARCHAR(10), `c2` VARCHAR(10), `c3` VARCHAR(10));
INSERT INTO `t` (`c1`, `c2`, `c3`) VALUES ('l1c1', 'l1c2', 'l1c3');

Constatez-vous le même bug ?

Julien

PS : En exécutant la requête suivante, plus de bug !!!

SELECT `c1`, `c2`, `c3`, 1*1 FROM `t`;