Announcement

Collapse
No announcement yet.

Bug in MariaDB?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bug in MariaDB?

    Hallo,

    folgendes Script:[highlight=sql]CREATE TABLE `t1` (`id` INT NULL
    ) COLLATE='latin1_german1_ci' ENGINE=InnoDB;
    CREATE TABLE `t2` (`id` INT NULL
    ) COLLATE='latin1_german1_ci' ENGINE=InnoDB;
    INSERT INTO t1 VALUES (1), (2), (3);
    INSERT INTO t2 VALUES (4), (5), (6);

    SELECT x.id, message FROM (
    SELECT id FROM t1
    ) x
    LEFT JOIN (SELECT id, 1 AS message FROM t2
    ) y ON x.id = y.id
    WHERE COALESCE(message, 0) <> 0[/highlight]
    Führe ich das Statement aus (MariaDB 10.0.12), dann wird die letzte WHERE-Klausel ignoriert, ich erhalte also Zeilen mit message = NULL.
    Führe ich das Script auf MySQL (5.5.15) aus, bekomme ich - korrekt - keine Ergebnisse.

    Wenn ich t1 nicht als derived Table anspreche, sondern gleich normal hinterm FROM (was näher läge), funktioniert's übrigens korrekt, aber als derived table eben nicht.

    Könnt Ihr dieses Verhalten bestätigen? Was übersehe ich? Woran liegt das? Ich würde denken, dass da MySQL korrekt arbeitet, MariaDB nicht. Ist das ein Bug?

    Über Eure Einschätzung würde ich mich freuen, ich bin ein wenig verunsichert ...

    Dave

  • #2
    Hab weder mysql noch maria am Start.
    Sieht nach einem Bug aus.

    Hast Du versucht, das Statement noch deutlicher zu formulieren.
    Alle Alias Angaben mit " as " einleiten und auch weiterverwenden, also y.message.
    Das wäre dann falls es geht natürlich nur ein workaround.
    Gruß, defo

    Comment


    • #3
      Hast Du mal den Where Ausdruck in die Ausgabe aufgenommen?
      Gruß, defo

      Comment


      • #4
        Nein, wenn ich es deutlicher mache wie Du vorschlägst, ändert das nichts. Was Du mit 'Ausdruck in die Ausgabe aufnehmen' meinst, weiß ich nicht. Wenn ich die gesamte Abfrage quasi nochmal als Unterabfrage schreibe und auf die den Filter setze, ändert sich auch nichts.

        Auch verrückt: Ändere ich die WHERE-Klausel in WHERE message IS NULL, bekomme ich keine Ergebnisse, ändere ich es in WHERE NOT message IS NULL, bekomme ich Ergebnisse, alle eben mit message = NULL. Korrekt müsste es genau andersherum sein. Ich kapier's nicht.

        Als würde in message irgendwas anderes als NULL stehen, dann würden die Ergebnisse alle Sinn machen. Angezeigt wird aber NULL, und nach meinem Verständnis sollte es auch NULL sein.

        Ändere ich zum Beispiel y innerhalb des Statements, mache also aus SELECT id, 1 AS message FROM t2[highlight=sql]SELECT 4 AS id, 1 AS message FROM t2[/highlight]funktioniert es immer noch nicht. Aber wenn ich dann noch auf die Angabe der Tabelle t2 verzichte[highlight=sql]SELECT 4 AS id, 1 AS message[/highlight]funktioniert alles so wie es soll.

        Kann diese Ergebnisse jemand mit MariaDB bestätigen? Ich finde diese Dinge recht gravierend und wundere mich, dass die noch nicht bekannt sein sollen. Daher gehe ich noch immer davon aus, dass ich irgendwo einen Fehler mache. Nur wo?

        Comment


        • #5
          Wie wäre es sowas direkt beim Hersteller der SW zu melden:

          https://mariadb.com/kb/en/mariadb/de...eporting-bugs/

          Und vor allem gleich mit der aktuellen 10.0.14er Version prüfen.

          Comment


          • #6
            Habe es jetzt auch mit MariaDB 10.0.14 (Win 8.1, 64bit) getestet, dasselbe ...

            Comment


            • #7
              Originally posted by Dave_Bowman View Post
              Habe es jetzt auch mit MariaDB 10.0.14 (Win 8.1, 64bit) getestet, dasselbe ...
              Ich meinte COALESCE(message, 0) einfach mit ausgeben zu lassen, jeweils mit / ohne eben diesem Ausdruck als Where Bedingung.
              Sicher richtig, dass an den "Hersteller" zu melden, mal rumzufragen und ggF. einzugrenzen ist aber auch nicht verkehrt.
              Gruß, defo

              Comment


              • #8
                Originally posted by Dave_Bowman View Post

                Könnt Ihr dieses Verhalten bestätigen? Was übersehe ich? Woran liegt das? Ich würde denken, dass da MySQL korrekt arbeitet, MariaDB nicht. Ist das ein Bug?

                Über Eure Einschätzung würde ich mich freuen, ich bin ein wenig verunsichert ...

                Dave
                https://mariadb.atlassian.net/browse/MDEV-6892

                Comment


                • #9
                  ... Danke für's Melden ...

                  Comment

                  Working...
                  X