X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/4ba806ac9da862d3a8d96d2f560696c22492a622..7ee506b343e315d622fd94a5f774ad99aad63a5c:/doc/sql-upgrade-dateien.txt diff --git a/doc/sql-upgrade-dateien.txt b/doc/sql-upgrade-dateien.txt deleted file mode 100644 index 0d750698e..000000000 --- a/doc/sql-upgrade-dateien.txt +++ /dev/null @@ -1,142 +0,0 @@ -Neuer Mechanismus für SQL-Upgradedateien ----------------------------------------- - -Der alte Mechanismus für SQL-Upgradescripte, der auf einer -Versionsnummer beruht und dann in sql/Pg-upgrade nach einem Script für -diese Versionsnummer sucht, schränkt sehr ein, z.B. was die parallele -Entwicklung im stable- und unstable-Baum betrifft. - -Dieser Mechanismus wurde für Lx-Office 2.4.1 deutlich erweitert. Es -werden weiterhin alle Scripte aus sql/Pg-upgrade -ausgeführt. Zusätzlich gibt es aber ein zweites Verzeichnis, -sql/Pg-upgrade2. In diesem Verzeichnis muss pro Datenbankupgrade eine -Datei existieren, die neben den eigentlich auszuführenden SQL- oder -Perl-Befehlen einige Kontrollinformationen enthält. - -Neu sind die Kontrollinformationen, die Abhängigkeiten und Prioritäten -definieren können werden, sodass Datenbankscripte zwar in einer -sicheren Reihenfolge ausgeführt werden (z.B. darf ein "ALTER TABLE" -erst ausgeführt werden, wenn die Tabelle mit "CREATE TABLE" angelegt -wurde), diese Reihenfolge aber so flexibel ist, dass man keine -Versionsnummern mehr braucht. - -Lx-Office merkt sich dabei, welches der Upgradescripte in -sql/Pg-upgrade2 bereits durchgeführt wurde und führt diese nicht -erneut aus. Dazu dient die Tabelle "schema_info", die bei der -Anmeldung automatisch angelegt wird. - -Format der Kontrollinformationen --------------------------------- - -Die Kontrollinformationen sollten sich am Anfang der jeweiligen -Upgradedatei befinden. Jede Zeile, die Kontrollinformationen enthält, -hat dabei das folgende Format: - -Für SQL-Upgradedateien: - --- @key: value - - -Für Perl-Upgradedateien: - -# @key: value - - -Leerzeichen vor "value" werden entfernt. - -Die folgenden Schlüsselworte werden verarbeitet: - -* tag: Wird zwingend benötigt. Dies ist der "Name" des - Upgrades. Dieser "tag" kann von anderen Kontrolldateien in ihren - Abhängigkeiten verwendet werden (Schlüsselwort "depends"). Der "tag" - ist auch der Name, der in der Datenbank eingetragen wird. - - Normalerweise sollte die Kontrolldatei genau so heißen wie der - "tag", nur mit der Endung ".sql" bzw. "pl". - - Ein Tag darf nur aus alphanumerischen Zeichen sowie den Zeichen _ - - ( ) bestehen. Insbesondere sind Leerzeichen nicht erlaubt und - sollten stattdessen mit Unterstrichen ersetzt werden. - -* description: Benötigt. Eine Beschreibung, was in diesem Update - passiert. Diese wird dem Benutzer beim eigentlichen Datenbankupdate - angezeigt. Während der Tag in englisch gehalten sein sollte, sollte - die Beschreibung auf Deutsch erfolgen. - -* depends: Optional. Eine mit Leerzeichen getrennte Liste von "tags", - von denen dieses Upgradescript abhängt. Lx-Office stellt sicher, - dass die in dieser Liste aufgeführten Scripte bereits durchgeführt - wurden, bevor dieses Script ausgeführt wird. - - Abhängigkeiten werden rekursiv betrachtet. Wenn also ein Script "b" - existiert, das von Änderungen in "a" abhängt, und eine neue - Kontrolldatei für "c" erstellt wird, die von Änderungen in "a" und - "b" abhängt, so genügt es, in "c" nur den Tag "b" als Abhängigkeit - zu definieren. - - Es ist nicht erlaubt, sich selbst referenzierende Abhängigkeiten zu - definieren (z.B. "a" -> "b", "b" -> "c" und "c" -> "a"). - -* priority: Optional. Ein Zahlenwert, der die Reihenfolge bestimmt, in - der Scripte ausgeführt werden, die die gleichen Abhängigkeitstiefen - besitzen. Fehlt dieser Parameter, so wird der Wert 1000 benutzt. - - Dies ist reine Kosmetik. Für echte Reihenfolgen muss "depends" - benutzt werden. Lx-Office sortiert die auszuführenden Scripte zuerst - nach der Abhängigkeitstiefe (wenn "z" von "y" abhängt und "y" von - "x", so hat "z" eine Abhängigkeitstiefe von 2, "y" von 1 und "x" von - 0. "x" würde hier zuerst ausgeführt, dann "y", dann "z"), dann nach - der Priorität und bei gleicher Priorität alphabetisch nach dem - "tag". - -Hilfsscript dbupgrade2_tool.pl ------------------------------- - -Um die Arbeit mit den Abhängigkeiten etwas zu erleichtern, existiert -ein Hilfsscript namens "scripts/dbupgrade2_tool.pl". Es muss aus dem -Lx-Office-ERP-Basisverzeichnis heraus aufgerufen werden. Dieses Tool -liest alle Datenbankupgradescripte aus dem Verzeichnis sql/Pg-upgrade2 -aus. Es benutzt dafür die gleichen Methoden wie Lx-Office selber, -sodass alle Fehlersituationen von der Kommandozeile überprüft werden -können. - -Wird dem Script kein weiterer Parameter übergeben, so wird nur eine -Überprüfung der Felder und Abhängigkeiten vorgenommen. Man kann sich -aber auch Informationen auf verschiedene Art ausgeben lassen: - -1. Listenform: "./scripts/dbupgrade2_tool.pl --list" - - Gibt eine Liste aller Scripte aus. Die Liste ist in der Reihenfolge - sortiert, in der Lx-Office die Scripte ausführen würde. Es werden - neben der Listenposition der Tag, die Abhängigkeitstiefe und die - Priorität ausgegeben. - -2. Baumform: "./scripts/dbupgrade2_tool.pl --tree" - - Listet alle Tags in Baumform basierend auf den Abhängigkeiten - auf. Die "Wurzelknoten" sind dabei die Scripte, von denen keine - anderen abhängen. Die Unterknoten sind Scripte, die beim - übergeordneten Script als Abhängigkeit eingetragen sind. - -3. Umgekehrte Baumform: "./scripts/dbupgrade2_tool.pl --rtree" - - Listet alle Tags in Baumform basierend auf den Abhängigkeiten auf. - Die "Wurzelknoten" sind dabei die Scripte mit der geringsten - Abhängigkeitstiefe. Die Unterknoten sind Scripte, die das - übergeordnete Script als Abhängigkeit eingetragen haben. - -4. Baumform mit Postscriptausgabe: "./scripts/dbupgrade2_tool.pl --graphviz" - - Benötigt das Tool "graphviz", um mit seiner Hilfe die Baumform aus - 3. in eine Postscriptdatei namens "db_dependencies.ps" - auszugeben. Dies ist vermutlich die übersichtlichste Form, weil - hierbei jeder Knoten nur einmal ausgegeben wird. Bei den - Textmodusbaumformen hingegen können Knoten und all ihre - Abhängigkeiten mehrfach ausgegeben werden. - -5. Scripte, von denen kein anderes Script abhängt: - "./scripts/dbupgrade2_tool.pl --nodeps" - - Listet die Tags aller Scripte auf, von denen keine anderen Scripte - abhängen. -