MySQL 5: Bug in SUM-Funktion?

MySQL 5: Bug in SUM-Funktion?

am 19.01.2006 18:40:16 von stefan.glaesser

Hallo,

"Select sum(quantity) from sections where customerId=5"

liefert mir ein völlig falsches Ergebnis, wobei aber

"Select sum(quantity) from sections"

korrekt ist.

Ist das ein Bug in MySQL 5 oder ist meine SQL-Syntax falsch?


Gruß,
Stefan

Re: MySQL 5: Bug in SUM-Funktion?

am 20.01.2006 00:24:40 von Hartmut Holzgraefe

Stefan Gläßer wrote:
> "Select sum(quantity) from sections where customerId=3D5"
> liefert mir ein völlig falsches Ergebnis, wobei aber
> "Select sum(quantity) from sections"=20
> korrekt ist.
>=20
> Ist das ein Bug in MySQL 5 oder ist meine SQL-Syntax falsch?

Woher sollen wir das wissen ohne deine Daten sehen zu können?
Oder wenigstens zu wissen wie sich erwartetes und tatsächliches
Ergebnis voneinander unterscheiden?

--=20
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com

http://www.mysql.com/support/

Re: MySQL 5: Bug in SUM-Funktion?

am 20.01.2006 12:55:03 von stefan.glaesser

Hallo,

> Woher sollen wir das wissen ohne deine Daten sehen zu können?
> Oder wenigstens zu wissen wie sich erwartetes und tatsächliches
> Ergebnis voneinander unterscheiden?

Anbei ein Dump meiner Tabelle mit Daten.

--
-- Tabellenstruktur für Tabelle `sections`
--

CREATE TABLE `sections` (
`customerId` int(11) NOT NULL default '0',
`section_name` text collate latin1_german2_ci NOT NULL,
`quantity` int(11) NOT NULL default '0',
PRIMARY KEY (`customerId`,`section_name`(100),`quantity`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;

--
-- Daten für Tabelle `sections`
--

INSERT INTO `sections` VALUES (5, 'Anthropologie/Ethnologie', 14);
INSERT INTO `sections` VALUES (5, 'Antike', 32);
INSERT INTO `sections` VALUES (5, 'Architektur', 30);
INSERT INTO `sections` VALUES (5, 'Belletristik', 1275);
INSERT INTO `sections` VALUES (5, 'Biographien, Autobiographien', 104);
INSERT INTO `sections` VALUES (5, 'Erotika', 5);
INSERT INTO `sections` VALUES (5, 'Essen und Trinken', 20);
INSERT INTO `sections` VALUES (5, 'Film', 20);
INSERT INTO `sections` VALUES (5, 'Geschichte', 192);
INSERT INTO `sections` VALUES (5, 'Grenzwissenschaften, Esoterik', 28);
INSERT INTO `sections` VALUES (5, 'Judaika', 28);
INSERT INTO `sections` VALUES (5, 'Jura', 11);
INSERT INTO `sections` VALUES (5, 'Kinder- und Jugendbücher', 44);
INSERT INTO `sections` VALUES (5, 'Köln und Rheinland', 99);
INSERT INTO `sections` VALUES (5, 'Kulturgeschichte', 30);
INSERT INTO `sections` VALUES (5, 'Kunst', 245);
INSERT INTO `sections` VALUES (5, 'Kunsthandwerk', 42);
INSERT INTO `sections` VALUES (5, 'Lexika', 3);
INSERT INTO `sections` VALUES (5, 'Literaturwissenschaft', 161);
INSERT INTO `sections` VALUES (5, 'Musik', 38);
INSERT INTO `sections` VALUES (5, 'Orientalistik', 9);
INSERT INTO `sections` VALUES (5, 'Pädagogik', 22);
INSERT INTO `sections` VALUES (5, 'Philologie', 14);
INSERT INTO `sections` VALUES (5, 'Philosophie', 117);
INSERT INTO `sections` VALUES (5, 'Photographie', 26);
INSERT INTO `sections` VALUES (5, 'Reisen und Landeskunde', 149);
INSERT INTO `sections` VALUES (5, 'Seefahrt und Marine', 22);
INSERT INTO `sections` VALUES (5, 'Soziologie', 32);
INSERT INTO `sections` VALUES (5, 'Studentica', 13);
INSERT INTO `sections` VALUES (5, 'Technik', 26);
INSERT INTO `sections` VALUES (5, 'Theater', 30);
INSERT INTO `sections` VALUES (5, 'Theologie', 38);
INSERT INTO `sections` VALUES (5, 'Varia', 352);
INSERT INTO `sections` VALUES (5, 'Verlage, Verleger, Autoren', 32);
INSERT INTO `sections` VALUES (5, 'Wirtschaft', 34);
INSERT INTO `sections` VALUES (5, 'Zeichner und Illustratoren', 18);


Ich hoffe der Fehler ist reproduzierbar. Ich verwende MySQL 5.0.18.


Gruß,
Stefan

Re: MySQL 5: Bug in SUM-Funktion?

am 20.01.2006 13:01:16 von stefan.glaesser

Hallo nochmal,

> Woher sollen wir das wissen ohne deine Daten sehen zu können?
> Oder wenigstens zu wissen wie sich erwartetes und tatsächliches
> Ergebnis voneinander unterscheiden?

Unter MySQL 4.1.10a bekomme ich das korrekte Ergebnis von 3355.
Unter MySQL 5.0.18 bekomme ich das falsche Ergebnis von 46.

Gruß,
Stefan

Re: MySQL 5: Bug in SUM-Funktion?

am 20.01.2006 14:03:03 von Kai Ruhnau

Stefan Gläßer wrote:
> Hallo nochmal,
>
>> Woher sollen wir das wissen ohne deine Daten sehen zu können?
>> Oder wenigstens zu wissen wie sich erwartetes und tatsächliches
>> Ergebnis voneinander unterscheiden?
>
> Unter MySQL 4.1.10a bekomme ich das korrekte Ergebnis von 3355.
> Unter MySQL 5.0.18 bekomme ich das falsche Ergebnis von 46.
>
> Gruß,
> Stefan

Ich kann das hier nicht nachvollziehen:

mysql> SELECT VERSION();
+------------+
| VERSION() |
+------------+
| 5.0.18-log |
+------------+
1 row in set (0.00 sec)

mysql> Select sum(quantity) from sections;
+---------------+
| sum(quantity) |
+---------------+
| 3355 |
+---------------+
1 row in set (0.00 sec)

mysql> Select sum(quantity) from sections where customerId=5;
+---------------+
| sum(quantity) |
+---------------+
| 3355 |
+---------------+
1 row in set (0.00 sec)

Grüße
Kai

Re: MySQL 5: Bug in SUM-Funktion?

am 20.01.2006 15:17:41 von stefan.glaesser

Hallo Kai,

danke für's Testen. Bei mir schaut die Ausgabe wie folgt aus:

mysql> select sum(quantity) from sections;
+---------------+
| sum(quantity) |
+---------------+
| 3355 |
+---------------+
1 row in set (0.00 sec)

mysql> select sum(quantity) from sections where customerId=5;
+---------------+
| sum(quantity) |
+---------------+
| 46 |
+---------------+
1 row in set (0.00 sec)


Gruß,
Stefan

Re: MySQL 5: Bug in SUM-Funktion?

am 20.01.2006 16:37:45 von Dirk Brosowski

Stefan Gläßer schrieb:
> Hallo,
>
>> Woher sollen wir das wissen ohne deine Daten sehen zu können?
>> Oder wenigstens zu wissen wie sich erwartetes und tatsächliches
>> Ergebnis voneinander unterscheiden?
>
>
> Anbei ein Dump meiner Tabelle mit Daten.
>

Ich habe es unter 5.0.16 und 5.0.18 unter Linux (non-rpm, Standard)
getestet und bekomme jeweils das gleich Ergebniss 3355. Wobei das weder
einen Bug bestätigt, noch kann man daraus folgern, dass es kein Bug ist.

mysql> use test
Database changed
mysql> Select sum(quantity) from sections;
+---------------+
| sum(quantity) |
+---------------+
| 3355 |
+---------------+
1 row in set (0.11 sec)

mysql> Select sum(quantity) from sections where customerId=5
-> ;
+---------------+
| sum(quantity) |
+---------------+
| 3355 |
+---------------+
1 row in set (0.04 sec)


Grüße

Dirk

Re: MySQL 5: Bug in SUM-Funktion?

am 20.01.2006 17:54:08 von Hartmut Holzgraefe

Stefan Gläßer wrote:
> Unter MySQL 4.1.10a bekomme ich das korrekte Ergebnis von 3355.
> Unter MySQL 5.0.18 bekomme ich das falsche Ergebnis von 46.

Auch ich bekomme auf 5.0 für beide Abfragen 3355

Allerdings zeigt EXPLAIN das nur bei der zweiten Abfrage der
PRIMARY index benutzt wird. Ich würde daher mal auf einen beschädigte=
n
Indexbaum tippen. Schon mal ein CHECK TABLE oder REPAIR TABLE versucht?

--=20
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com

http://www.mysql.com/support/