Fremdcoding

In Allerlei

Heute durfte ich einen Kollegen unterstützen, der ein Problem mit fremdem Code hatte. Beim Speichern eines Objektbaums gab es immer eine Oracle-Exception, dass ein Wert zu gross für die Spalte ist. Oracle 9 ist da leider auch sehr sparsam mit der Fehlermeldung und sagt weder, welche Tabelle noch welches Feld gemeint ist. Nach einiger Suche haben wir dann auch herausgefunden, woran es lag – in der Hausnummer des zu speichernden Datensatzes. Die Quelldaten sahen nämlich so aus:

Irgendeinestrasse / Nochnestrasse

Es gab in den Quelldaten halt keine getrennten Felder für Strasse und Hausnummer, daher gibts in dem Importer eine Split-Routine. Nur hat die geschickterweise einfach bei Leerzeichen gesplittet und den letzten Teil als Hausnummer deklariert, ohne zu prüfen, ob überhaupt irgendeine Zahl drin vorkommt. So stand dann in unserem schönen Objekt als Hausnummer ein “Nochnestrasse” drin, was Oracle nicht in die paar Zeichen dafür reinquetschen wollte. Supertoll.

Meinungen

Ich habe mich mal mit nem Experten unterhalten, der meinte Oracle 10 hätte da die relevante Spalte genauer benannt.

Steff
#1 Steff 14.01.2006 02:45

Warum muss Oracle das eigentlich sagen? Die Applikation weiß doch wohl, in welche Tabelle sie gerade etwas einfügen will und könnte den Namen einfach ausgeben? Oder halt das Framework, wenn man eines verwendet.

Thomas
#2 Thomas 14.01.2006 14:48

Nun ja, wenn man mit einer Model Driven Architecture arbeitet, bei der man mit dem Modell arbeitet, und bei der dann irgendwo tief beim Speichern eines Objektes einige damit über Relationen verknüpfte Objekte mitgespeichert werden, ist es nicht mehr ganz so leicht, das rauszufinden. Und wenn du eine Tabelle mit 20 Attributen hast, und Oracle sagt, eines davon ist zu gross, dann sollte Oracle auch sagen, welches davon. Denn das kann auch das Framework nicht unbedingt wissen.

Dirk
#3 Dirk 14.01.2006 14:54