Bretagne Urlaub 2018 – Tag 1 und 2 – Anreise

Diese Pfingsten ist der erste große Urlaub des Jahres für uns. Als Ziel haben wir die Bretagne gewählt. Praktischerweise dürfen wir ein Ferienhaus der Verwandtschaft aus Cumières nutzen. Wir verbinden daher den Familienbesuch in Cumières mit dem Urlaub. Zudem teilt das die Strecke von rund 1200km schon einmal in zwei (ungleiche) Teile. Da wir gefühlt den gesamten Hausstand mitnehmen müssen, haben wir uns entschlossen, mit Anhänger zu reisen – immerhin ist er ja saniert und wartet nur auf sinnvolle Nutzung. Allerdings ist man natürlich auch limitiert was die Reisegeschwindigkeit betrifft – in Deutschland sind es 80km/h, in Frankreich auf Autobahnen und Schnellstraßen immerhin 90km/h.

Wir kommen mit etwas Verzögerung daheim los, da die Woche vor dem Urlaub nochmal vollgepackt war mit allerhand Aktionen – somit war es Essig mit ausreichend vorher packen. Immerhin habe ich mir Freitag den Vormittag schon frei genommen, damit wenigstens einige größere Sachen schon erledigt sind. Unter anderem die Fahrräder und den Fahrradanhänger packe ich schon mal auf den Anhänger. Dazu kommt dann noch einiges an Kindersicherung (z.B. ein Gitter für die Treppe im Feriendomizil). Gewichtsmäßig ist der Anhänger damit noch lange nicht ausgelastet, aber das Volumen passt recht gut. Continue reading

SRH-Marathon 2018 in Mannheim

Der SRH-Marathon liegt praktischerweise vor der Haustüre, noch dazu war es dieser Dämmermarathon (damals noch mit MLP als Titelsponsor), der in die Laufgeschichte bei mir überhaupt Bewegung gebracht hat. Es spricht also vieles dafür ihn wieder einmal zu laufen. Noch dazu war mein Arbeitgeber als einer der Sponsoren so nett und hat Freistarts verteilt.

Dieses Jahr gibt es für mich eine Neuerung: Mein ältester Nachwuchs ist soweit und will an seiner ersten Laufveranstaltung teilnehmen. Immerhin 400m, einmal rund um den Park des Wasserturms in Mannheim sind zu bewältigen. Daher sind wir auch vergleichsweise früh für den Dämmermarathon am Start – der Bambini-Lauf startet bereits um 15h, für den Marathon (und den Halben) fällt der Startschuss erst um 19h. Glen bewältigt die Strecke fast mühelos – immer kräftig motiviert von Papa. Wie beim vollwertigen Marathon hat er um die Halbzeit herum einen kleinen Durchhänger aber als das Ziel in Sichtweite kommt geht es nochmal flott. Continue reading

SAS Halbmarathon in Heidelberg

Eigentlich hatte ich mir ja nach dem Wettkampf an der Weinstraße vorgenommen, etwas Regeneration zu machen – also etwas ruhigere Trainingseinheiten. Durch Verletzungspech eines anderen Teilnehmers bekam ich aber kurzfristig die Möglichkeit am Halbmarathon in Heidelberg teilzunehmen. Ob ich nun eine Trainingseinheit mache oder ob ich nach Heidelberg fahre und dort teilnehme nimmt sich ja nicht all zu viel.

Luftlinie sind es rund zehn bis zwölf Kilometer zwischen meinem Wohnort und dem Start. Wie ich leider bei der Prüfung der Option ÖPNV feststellen muss, liegen scheints aber doch Welten dazwischen – die meisten der vorgeschlagenen Verbindungen brauchen etwas mehr als eine Stunde für die Distanz. Da kann man es ja fast laufen oder mit dem Rad fahren. Am Ende entscheide ich mich dann für den kombinierten Verkehr: Mit dem Rad an einen günstig gelegenen S-Bahnhof und ab dort dann mit der Teilnahmebestätigung. Alles sehr gut organisiert und ausgeschildert. Am Start treffe ich dann auch Micha und Frank, sie haben für mich am Vortag schon die Unterlagen abgeholt und die Ummeldung vorgenommen. Bevor es losgeht laufen wir uns noch einige Meter warm – wobei warm ist mir auch so – es ist kurz nach neun und die Sonne strahlt vom blauen Himmel mit aller Kraft. Continue reading

Marathon an der deutschen Weinstraße

Seit dem letzten Mal ist er Tradition, daher diesmal zum vierten Mal – der Weinstraßen-Marathon. Der Lauf findet nur alle zwei Jahre statt, praktischerweise immer um ein Jahr versetzt zum Weltkulturerbelauf in Bamberg – so wechsle ich dann jedes Jahr zwischen den beiden ab.

Zeitlich liegt der Lauf in einer recht wechselhaften Jahreszeit – die meiste Zeit aber haben die Organisatoren einen guten Draht zu Petrus. Diesmal scheint es zumindest auf dem Weg zur Veranstaltung nicht ganz so gut geklappt zu haben: Leichter Sprühregen auf der Windschutzscheibe und starke Bewölkung prägen das Bild als ich mit samt Familie auf dem Weg nach Grünstadt an den Shuttle-Bus bin. Der Shuttle-Transfer ist auch diesmal wieder die Achilles-Ferse der Veranstaltung – da die Weinstraße für die Zeit der Veranstaltung gesperrt ist, fährt der Bus eine Sightseeing-Runde über die Dörfer – inklusive kleiner Nebenstraßen und Zusatzschleifen da an einigen Punkten der Wendekreis nicht mit den Kurven kompatibel ist. Irgendwie unverständlich – bei den letzten Veranstaltungen wurde bis kurz vor dem Start die gesperrte Strecke befahren. Immerhin wir sind pünktlich und Umziehen muss ich mich auch nicht – nur noch die Startunterlagen abholen und die Wechselsachen für hinterher einchecken. Kurz danach kommt dann auch die Lieferung „schönes Wetter“ – die Wolkendecke reißt auf und es wird deutlich wärmer. Meine Jacke verstaue ich daher gleich einmal im Kinderwagen – die werde ich wohl nicht brauchen. Continue reading

Rheintalquerung 2018

Es ist Februar, es ist kalt – beste Voraussetzungen um lange Läufe zu machen. Dabei muss es nicht immer nur im Kreis gehen wie Ende Januar in Rodgau. Ein entsprechend privat organisiertes Event mit großem Fun-Faktor ist dabei die Rheintalquerung. In den letzten Jahren hatte ich leider immer Terminkollisionen, dieses Jahr hat es endlich einmal wieder geklappt.

Das Motto des Laufs ist „von der Bergstraße an die Weinstraße“ – gestartet wird in Leutershausen. Da im Anschluss an den Lauf noch etwas Erholung und Erfahrungsaustausch auf dem Plan steht, startet der Lauf bereits um 8 Uhr in der Frühe. Immerhin ist es um diese Zeit bereits hell – zusammen mit Gudrun, Cornelia, Peter und Jürgen von der Laufgruppe PULT fahren wir in den Sonnenaufgang zum Startpunkt. Continue reading

Magento Rest(e) API – Token holen und Kategorien in Magento anlegen

Nach einem Wochenende zum Kopflüften geht es wieder an die Arbeit – und somit geht es auch weiter mit der Magento Rest(e)-API. Angefangen hatte ich mit den Grundlagen zu Magento. Die weiteren Posts folgen dann Stück für Stück, am Ende werde ich noch ein kurzes Fazit der ganzen Aktion ziehen.

Token holen

Noch die einfachste der Aufgaben – API abfragen mit Benutzernamen und Passwort an das Backend und sich merken, wie der Token ausschaut.

$baseUrl = "http://mein.host.irgendwo/rest/";
$username = "admin";
$pass = "meinPW";

$ch = curl_init($baseUrl . "/V1/integration/admin/token");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array("username" => $username, "password" => $pass)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$token = curl_exec($ch);
$token = json_decode($token);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: Bearer '.$token));

Soweit so einfach, es folgt der nächste Schritt…

Continue reading

Rodgau Ultramarahton 50km

Vor vier Jahren war ich schon einmal in Rodgau zum bekannten 50km Ultramarathon. Damals wusste ich noch nichts von meinen Glück Papa zu werden – mittlerweile ist der zweite Sohn auf der Welt … wie die Zeit vergeht. Nachdem auch in meiner DJK-Laufgruppe der Wunsch aufkam, doch einmal in die Ultra-Region vorzustoßen, habe ich recht bald an Rodgau als Trainings bzw. Testlauf gedacht. Immerhin hat der Rundelauf mit seinen 10 mal 5km den unbeschreiblichen Vorteil, dass man nach jeder Runde aussteigen kann und dennoch nicht irgendwo im Nirgendwo steht, wie es bei den klassischen Ultras der Fall wäre.

Die Fahrt nach Rodgau ist für mich im Vergleich zu anderen Veranstaltungen ein echter Katzensprung – etwas mehr als 100km und somit ca. eine Stunde bin ich unterwegs. Vor Ort ist bereits reichlich was los – die Einweiser haben alle Hände voll zu tun. Gut dass ich mit meinem alten Kleinwagen unterwegs bin, der passt auch in kleinere Lücken. Bei der Startnummern-Ausgabe ist es sehr voll – die Schlange steht bis auf den Parkplatz. Aber es läuft doch recht zügig. Als ich an der Reihe bin, gibt es etwas Chaos – versehentlich wurde meine Startnummer bereits ausgegeben – wohl ein Fehlgriff in die Kiste mit den Unterlagen. Aber das Team bekommt das schnell und unbürokratisch auf die Spur –  ich bekomme kurzerhand eine andere Startnummer ausgehändigt. Es tröstet mich, dass nicht nur bei unserem Herbstlauf gelegentlich etwas nicht ganz nach Plan läuft, sondern das auch andere Veranstaltungen mit ähnlichen Schwierigkeiten in Kontakt kommen. Continue reading

Magento 2 – Rest-API oder Reste-API?

Beruflich darf ich mich gerade mit Magento als Shop-System auseinandersetzen. Auf den ersten Blick ein Shopsystem wie es viele auf PHP-Basis gibt. Jedes System hat eine andere Geschichte und damit seine Eigenheiten und besonderen Pluspunkte. Leider finde ich von den Pluspunkten bei Magento für meinen aktuellen Fall etwas zu wenig bis gar keine. Wir haben eine externe Datenquelle, welche verschiedene Verwaltungsabläufe abbildet, an deren Ende eine Reihe von Produkten für den Shop stehen.

Anfänglich war ich vielleicht etwas naiv und dachte: Ein paar Zeilen SQL und dann lässt sich das Datenmodell sicherlich so extrahieren, dass man recht schnell und zuverlässig die Daten vom Quellsystem in den Shop überführen kann. Leider ist das nicht der Fall, denn Magento hat sich als Datenmodellierung für EAV entschieden. Damit ist nicht die erste allgemeine Verunsicherung gemeint (auch wenn die dann nicht mehr weit her ist) sondern eine Modellierungstechnik namens Entity-Attribute-Value. Im ersten Moment klingt das Modell für einen Shop sogar sehr lohnenswert, denn eine Shopsoftware muss ja ggf. mit verschiedensten Waren zurecht kommen. Genau das ist mit EAV möglich: Man bildet die Modellierung von zusätzlichen Eigenschaften über weitere Tabellen ab. So vernünftig das anfänglich klingen mag, um so schwieriger wird die Umsetzung in der Praxis. Da man bestimmte Attribute ja auch in verschiedenen Fällen wieder brauchen kann hat man die noch eine Stufe weiter abstrahiert. Das Ergebnis ist ein sehr umfangreiches Modell, das Anna Völkl schön aufbereitet hat. Übersichtlich ist etwas anderes, auf diesem Datenmodell  manuell direkt auf Tabellenebene zuzugreifen kann man getrost vergessen.
Continue reading

Posted in Web |

Jahresrückblick 2017

Schon nach Weihnachten – allerhöchste Zeit das Jahr nocheinmal durch den Filter laufen zu lassen. Ein wichtiges Ereignis hat sicherlich das gesamte Jahr etwas überlagert – die Geburt von Yann im Juni – in den Monaten davor die Vorfreude und die ganze Vorbereitung und danach geht es natürlich erst richtig los (vor allem kann Papa dann auch endlich etwas mehr tun als nur „Babybauchstreicheln“).

Januar

Der Einstieg ins Lauftraining war diesmal etwas anders als gedacht. Gleich bei einem der ersten Trainings gab es einen Sprint außer der Reihe – nachdem wir ein Duo beim Handtaschendiebstahl überrascht hatten, ist es mir wenigstens gelungen einen der Täter so lange zu verfolgen bis die Polizei ihn festnehmen konnte – zum Wegrennen bzw. zur Flucht in den Neckar hat er sich da einfach den falschen Partner rausgesucht – Langstreckenläufer und Rettungsschwimmer – da konnte er nahezu machen was er wollte, ein Entkommen war nahezu unmöglich. Sogar für einen Bericht in der Lokalpresse hat es gereicht. Insgesamt war ja klar, dass ich dieses Jahr mit dem Laufen etwas weniger machen kann, immerhin fällt der Geburtstermin in die Hochzeit der Laufveranstaltungen.
Zudem gab es erste Vorbereitungen auf einen Famlienwagen – wir haben verschiedenen Probefahrten gemacht um zu sehen was es wohl werden soll.

Februar

Auch der Februar war relativ ruhig. Wie fast jedes Jahr waren wir auf der Weinmesse in Strasbourg und haben unsere Vorräte wieder etwas ergänzt. Wobei durch die Schwangerschaft die Verkostung und Auswahl alleine bei mir lag. Zudem war der Keller ohnehin noch gut gefüllt, der Einkauf war also relativ selektiv und vom Ausprobieren neuer Winzer geprägt. Am Rande gab es auch ein Wiedersehen mit der Familie und einigen ausgeschiedenen Mitarbeitern der Bahag, die ich schon länger nicht mehr gesehen hatte.

März

Der letzte Urlaub zu dritt, oder besser gesagt zu dreieinhalbt? Mit dem TGV nach Marseille und in die Umgebung. Insgesamt ein sehr schöner Urlaub, auch wenn wir einige Erkenntnisse für die Familie mitgenommen haben. So ist der ÖPNV in Marseille nicht auf Familien mit Kinderwagen ausgelegt (geschweige denn wir hätten so etwas wie den Chariot CX2 mitgenommen – das möchte ich mir gar nicht ausmalen…). Zudem ist die Unterkunft in den günstigen Hotels für Singles und Paare nicht verkehrt – für Familien mit kleinen Kindern dann doch eher nicht. Auch die Idee mit dem Zug zu fahren hört sich anfänglich gut an und ist auch günstig – als Familie zahlt man dann beim Mietwagen und dem notwendigen Kindersitz allerdings deutlich drauf – noch dazu hatten wir etwas Pech bei der Fahrzeugauswahl – ein Mini-Jeep ist definitiv kein Familienauto, schon für den Kinderwagen muss man den Rücksitz umklappen – das kenne ich aus meinem alen Corsa besser …

April

Das letzte Schwangerschaftstrimester ist angebrochen. Daher hatten wir unter anderem diverse Termine wegen Papierkram (Sorgerecht und Co). Anfang des Monats hatten wir noch ein Familientreffen in Mainz mit den diversen Familienteilen von Marion.
Am Monatsende war dann nochmals ein Termin für mich: Es ging wie alle zwei Jahre nach Bamberg zum Weltulturerbelauf. Das ist auch immer ein Termin um Helgas Lauffreunde aus Nürnberg einmal wieder zu sehen. Aus dem Urlaub in Marseille haben wir unsere Erfahrungen gleich umgesetzt und diesmal für das verlängerte Wochenende eine Ferienwohnung in Bad Staffelstein genommen. Deutlich besser und vor allem flexibler. Zum Abschluss sind wir noch ins Spaßbad „Aqua-Riese“ (in Anlehnung an „Adam Riese“ – welcher in Bad Staffelstein geboren wurde).

Mai

Im gleichen Maße wie Marions Bauch an Umfang zulegt, reduziere ich mein Training. Das heißt vor allem erst einmal Abschied von der täglichen Radfahrt zu nehmen um im Falle eines Falles schnell daheim zu sein – daher mit dem Auto zur Arbeit – obwohl das Wetter eigentlich zum Radeln einlädt.
Zudem gibt es noch eine handwerkliche Herausforderung – bei Marions Mutter steht die Generalsanierung des Wohnzimmers auf dem Plan – inklusive Möbelabbau und Malern.

Juni

Final Countdown für Papa 2.0 – eine sehr angespannte Zeit, vor allem was den Job betrifft – so richtig anfangen will man nichts größeres mehr und ständig sitzt man gefühlt auf Kohlen.
Der Marathon in Mannheim lässt sich kurz vor Geburt anfänglich gut an, aber in Reingönnheim kurz nach Kilometer 35 erhält das Ziel 3:30 einen derben Rückschlag – Krämpfe zwingen mich zum Gehen – am Ende reicht es gerade noch so für eine Nettozeit unter 4h. Aber angesichts des reduzierten Trainings war das Ziel wohl doch etwas vermessen.
Ende Juni ist dann auch die neun Monate Wartefrist vorbei – zwar lässt sich Yann wie sein Bruder etwas mehr Zeit als gedacht, aber das kennen wir ja schon. Als dickes Ende zeigt er dann auch noch sein Interesse am Kunstturnen und verstellt somit jeden Weg auf eine natürliche Gebut – na sei es drumm – immerhin diesmal alles ohne große Hektik. Glen kommt derweil bei den Großeltern unter.

Juli

Ganz klare Aufgabe: Familienleben neu organisieren – immerhin haben wir jetzt zwei Kinder – somit müssen sich die Eltern auch immer wieder neu verteilen. Das bekommen wir aber recht gut hin, besser als erwartet. Zudem nehmen etliche liegen gebliebene Handwerkprojekte in der Wohnung endlich einmal Form an und kommen zum Abschluss. Zudem schicke ich endlich meinen alten Server im Rechenzentrum in Rente – nachdem zum wiederholten Male die Festplatten ihr Alter angemeldet haben, ist es an der Zeit ihn zu ersetzen. Erstaunlicher Weise klappt das besser als gedacht, auch wenn ich doch etwas aus der Übung war.
Zudem schlagen wir beim Angebot eines Familienwagens zu – mit Yanns Geburt hat sich endgültig gezeigt, dass es sehr schwierig wird, ohne ein größeres Auto. Diesmal steht das Fahrzeug auch noch fast vor der Haustür in Hassloch bereit, in unserer Wunschausstattung (uns sogar noch ein wenig mehr als erhofft).

August

Fertig! (ohne Plane)

Das Wetter ist gut und ich nutze die Elternzeit um ein lang gehegtes Projekt endlich umzusetzen – seit fast vier Jahren habe ich meinen PKW-Anhänger und fast genauso lange habe ich mir vorgenommen, die Bordwände und die Bodenplatte zu ersetzen. Ein reichlich aufwändiges Projekt, dass ich auch nicht mal „nebenher“ hätte umsetzen können. Besonderer Dank gilt hier Martin für die Werkstatt um die ganzen Arbeiten überhaupt durchführen zu können. Als Bonus erneuere ich nicht nur die Bodenplatte sondern bringe auch gleich noch eine Reihe Zurrösen an. Derartig generalüberholt wird er mir noch viele Jahre gute Dienste leisten.
Ziemlich genau passend dazu können wir unseren Familienwagen abholen – ein Peugeot 5008 ist es geworden. In diversen Probefahrten hat er uns am meisten überzeugt.

September

Nach zwei Monaten Elternzeit heißt es dann doch wieder arbeiten. Gefühlt ist in den zwei Monaten Abwesenheit aber nicht all zu viel passiert.
Sportlich geht es nun auf den Herbstlauf zu – wenn auch weniger als aktiver Teilnehmer, vielmehr als aktiver Organisator. Wie üblich sind dafür viele Maßnahmen im Vorfeld notwendig.
Zudem bereite ich mich schon einmal auf das kommende Jahr vor und habe angefangen einmal pro Woche den Rettungsschwimmkurs in Schwetzingen zu besuchen – schon einige Zeit her dass ich den letzten gemacht habe und mit kleinen Kindern ist man ja doch häufiger im Schwimmbad, da kann das auf alle Fälle nicht schaden.

Oktober

Drei Monate nach Geburt darf Papa auch wieder auf einen Wettkampf – wenn auch nur auf einen „kurzen“ – es geht zum Traditionslauf nach Nürnberg über die 21km. Die Zeit ist diesmal im Rahmen wenn auch nichts außergewöhnliches. Ganz stilecht bin ich seit langem einmal wieder mit meinem alten Corsa nach Nürnberg gefahren – inklusive Mitfahrgelegenheit wie zu Praktikumszeiten. Das Fahrzeug behalten wir vorerst mal noch – immerhin habe ich noch etwas mehr als ein Jahr TÜV. Liebevoll ist es jetzt der Sport-Wagen, denn bei dem Alter macht es jetzt auch nichts mehr aus wenn man nach einem Waldlauf völlig eingedreckt einsteigt.
Beim Herbstlauf hat der frisch sanierte Anhänger seine Feuertaufe – alles funktioniert einwandfrei und mit dem neuen Fahrzeug vorneweg ist auch die volle Ladung Bierbänke kein Drama mehr.
Etwas ungeplant habe ich dann noch mit Frank in Heidelberg am MTB&Run teilgenommen – einer Abwandlung der erfolgreichen Aktion Bike&Run in Mannheim. So richtig erfolgreich war die Werbung nicht, ganze vier Teams sind an den Start gegangen – dafür waren wir um so erfolgreicher – bei der Erstauflage auf Platz eins – das hat schon was. Schon etwas ungewohnt, dass man noch länger dableiben muss wegen der Siegerehrung, und das auch noch bei feinstem November-Regen.

November

Es geht langsam auf das Jahresende zu, und nach dem dicht gepackten Oktober ist im November deutlich weniger los. Der Umzug eines Kollegen beschäftigt mich aufgrund der Transportmöglichkeit mit Anhänger etwas länger als gedacht, mit Monatsende ist aber auch dieses Projekt dann endlich abgeschlossen.
Auf Arbeit übernehme ich die Leitung eines kleineren Projekts, das wird mich wohl auch noch einige Zeit begleiten.
Sportlich gibt es erfreuliches zu berichten – die Laufgruppe wächst um einige Mitglieder.

Dezember

Zwar habe ich bereits weit vor dem Dezember-Fieber alle Geschenke besorgt, dennoch ist die Zeit irgendwie etwas anstrengend – ich merke dass ich mich an vielen Stellen ziemlich strecken muss zwischen Familie, Job und Sportaktivitäten. Früher fand ich den Dezember nicht so anstrengend wie in diesem Jahr. Ich bin richtig erleichtert, dass an Weihnachten auch endlich einmal einige Tage Ruhe angesagt sind.

 

Soweit einmal der Jahresrückblick – mal sehen was das neue Jahr bringen wird. Ich hoffe ich finde wieder etwas häufiger Zeit mich hier im Blog zu melden.

Fiese Falle in MySQL bei Verwendung von Views in (Left)-Joins

Da habe ich doch kurz vor Weihnachten noch eine echte Knobelaufgabe erlebt, deren Ergebnis für den ein oder anderen sicherlich interessant sein dürfte. Ausgangspunkt war folgendes eigentlich simple SQL-Statement:

Select * from tableA left join viewC 
     on tableA.id=viewC.lookup

Soweit so unspektakulär, auch wenn das Original noch mit einigen weiteren Filtern gespickt war und die View nicht gerade ein einfaches Query kappselt.

Was allerdings gar nicht lustig war, waren die Ergebnisse dieser Abfrage, denn sie entsprachen nicht den Erwartungen. Aus der View erhielt ich nämlich keinen Join-Partner obwohl ich diesen als Test extra geprüft hatte mit:

 Select * from viewC where lookup='TestValue'

Folgende Punkte habe ich als „übliche Verdächtige“ abgeprüft:

  • Vergleich der Datentypen – auch nicht die Ursache
  • Collations (also Zeichensätze) – auch mit Casting, das Ergebnis bleibt das Gleiche

Spannender Nebeneffekt, der bei der weiteren Untersuchung heraus kam – nutze ich die view nicht sondern packe 1:1 den Code aus der Definition mit in mein Statement

 
Select * from tableA left join 
   (select * from tableB 
     left join tableF 
         on tableB.id=tableF.foo 
      where tableF.bar='baz' and deletedDate is null)
   as testview on testview.id=tableA.id

Dann funktioniert wieder alles wie erwartet. Es staunt der Laie und der Fachmann wundert sich. Höchste Zeit das Problem genauer unter die Lupe zu nehmen und die bekannten Bugs von MySQL bzw. den Deviraten wie MariaDB und Percona zu durchforsten. Ergebnisse sind leider recht dürftig und beschreiben nicht das was ich erlebe. Immerhin stoße ich auf weitere Probleme die erst einmal völlig losgelöst von der Thematik erscheinen, es geht dabei um möglich Einstellungen des Servers und den Standard-Verhalten. Das hat sich in den letzten Jahren immer mal wieder etwas verändert und spiegelt des „Erwachsen werden“ von MySQL wieder. Wir erinnern uns: Es hat eine geraume Zeit gedauert bis MySQL endlich als Standard auf INNODB als Engine gewechselt hat und somit referenzielle Integrität in Form von Transaktionen und Foreign Keys unterstützt wurden. Ebenso aus der grauen Urzeit von MySQL stammen Probleme mit NULL-Werten bei Datumsfeldern (DATE,DATETIME). Und genau da liegt der Hase am Ende auch begraben. Die Server-Konfiguration gibt vor, dass der Server sich strikt verhalten soll, unter anderem bei den Datumsfeldern.
Somit ist es nicht mehr zulässig den „uralten NULL-Ersatz 0000-00-00 00:00:00“ zu verwenden. Die Routinen für den Ersatz kann man aber per Session einschalten, und genau das ist bei der manuellen Abfrage der Werte jedes mal passiert, sei es per manuellem Join oder bei der Abfrage der einzelnen Tabellen. Dabei verhält sich das isnull je nach eingestelltem Modus. Mal liefert es Zeilen mit „0000-00-00 00:00:00“ als Ergebnis, mal nicht, je nachdem ob strict-mode gesetzt ist oder nicht.

Warum läuft es dann beim Verwenden der View aus dem Ruder? Das liegt an der Art und Weise wie MySQL mit Views umgeht: Sind diese übermäßig komplex werden sie als separater Thread gestartet, der eine temporäre Tabelle bereitstellt auf die dann wiederum gejoined werden kann. Dieser Thread wird allerdings vom Serverprozess angestoßen, und dort steht der Modus per default auf strict und dieser wird dann auch angewandt. Somit ist das Ergebnis nicht das was ich bei der singulären Abfrage erhalten habe, sondern leider eben ein leeres da in der Tabelle anstelle NULL eben noch „0000-00-00 00:00:00“ verwendet wird.

Die temporäre Lösung ist, den Join manuell auszuführen, mittelfristig werden wir den Server umstellen. Das sind aber eigentlich nur kosmetische Lösungen. Die eigentlich korrekte Maßnahme für dieses Problem ist die Verwendung von sauberen NULL-Werten anstelle obskurer Workarounds. Leider verlassen sich sehr viele Applikationen bei uns noch auf die Tabelle und diese kruden Werte, einfach Umstellen ist also erstmal leider nicht drin. Ich kann jedem Entwickler nur wärmstens empfehlen, sich auf derartige Altlasten nicht zu verlassen und schnellstmöglich dafür zu sorgen diese abzubauen.