Revision 4c24a5f4
Von Sven Schöling vor mehr als 14 Jahren hinzugefügt
doc/sql-upgrade-dateien.txt | ||
---|---|---|
1 |
Neuer Mechanismus f?r SQL-Upgradedateien
|
|
1 |
Neuer Mechanismus für SQL-Upgradedateien
|
|
2 | 2 |
---------------------------------------- |
3 | 3 |
|
4 |
Der alte Mechanismus f?r SQL-Upgradescripte, der auf einer
|
|
5 |
Versionsnummer beruht und dann in sql/Pg-upgrade nach einem Script f?r
|
|
6 |
diese Versionsnummer sucht, schr?nkt sehr ein, z.B. was die parallele
|
|
4 |
Der alte Mechanismus für SQL-Upgradescripte, der auf einer
|
|
5 |
Versionsnummer beruht und dann in sql/Pg-upgrade nach einem Script für
|
|
6 |
diese Versionsnummer sucht, schränkt sehr ein, z.B. was die parallele
|
|
7 | 7 |
Entwicklung im stable- und unstable-Baum betrifft. |
8 | 8 |
|
9 |
Dieser Mechanismus wurde f?r Lx-Office 2.4.1 deutlich erweitert. Es
|
|
9 |
Dieser Mechanismus wurde für Lx-Office 2.4.1 deutlich erweitert. Es
|
|
10 | 10 |
werden weiterhin alle Scripte aus sql/Pg-upgrade |
11 |
ausgef?hrt. Zus?tzlich gibt es aber ein zweites Verzeichnis,
|
|
11 |
ausgeführt. Zusätzlich gibt es aber ein zweites Verzeichnis,
|
|
12 | 12 |
sql/Pg-upgrade2. In diesem Verzeichnis muss pro Datenbankupgrade eine |
13 |
Datei existieren, die neben den eigentlich auszuf?hrenden SQL- oder
|
|
14 |
Perl-Befehlen einige Kontrollinformationen enth?lt.
|
|
13 |
Datei existieren, die neben den eigentlich auszuführenden SQL- oder
|
|
14 |
Perl-Befehlen einige Kontrollinformationen enthält.
|
|
15 | 15 |
|
16 |
Neu sind die Kontrollinformationen, die Abh?ngigkeiten und Priorit?ten
|
|
17 |
definieren k?nnen werden, sodass Datenbankscripte zwar in einer
|
|
18 |
sicheren Reihenfolge ausgef?hrt werden (z.B. darf ein "ALTER TABLE"
|
|
19 |
erst ausgef?hrt werden, wenn die Tabelle mit "CREATE TABLE" angelegt
|
|
16 |
Neu sind die Kontrollinformationen, die Abhängigkeiten und Prioritäten
|
|
17 |
definieren können werden, sodass Datenbankscripte zwar in einer
|
|
18 |
sicheren Reihenfolge ausgeführt werden (z.B. darf ein "ALTER TABLE"
|
|
19 |
erst ausgeführt werden, wenn die Tabelle mit "CREATE TABLE" angelegt
|
|
20 | 20 |
wurde), diese Reihenfolge aber so flexibel ist, dass man keine |
21 | 21 |
Versionsnummern mehr braucht. |
22 | 22 |
|
23 | 23 |
Lx-Office merkt sich dabei, welches der Upgradescripte in |
24 |
sql/Pg-upgrade2 bereits durchgef?hrt wurde und f?hrt diese nicht
|
|
24 |
sql/Pg-upgrade2 bereits durchgeführt wurde und führt diese nicht
|
|
25 | 25 |
erneut aus. Dazu dient die Tabelle "schema_info", die bei der |
26 | 26 |
Anmeldung automatisch angelegt wird. |
27 | 27 |
|
... | ... | |
29 | 29 |
-------------------------------- |
30 | 30 |
|
31 | 31 |
Die Kontrollinformationen sollten sich am Anfang der jeweiligen |
32 |
Upgradedatei befinden. Jede Zeile, die Kontrollinformationen enth?lt,
|
|
32 |
Upgradedatei befinden. Jede Zeile, die Kontrollinformationen enthält,
|
|
33 | 33 |
hat dabei das folgende Format: |
34 | 34 |
|
35 |
F?r SQL-Upgradedateien:
|
|
35 |
Für SQL-Upgradedateien:
|
|
36 | 36 |
|
37 | 37 |
-- @key: value |
38 | 38 |
|
39 | 39 |
|
40 |
F?r Perl-Upgradedateien:
|
|
40 |
Für Perl-Upgradedateien:
|
|
41 | 41 |
|
42 | 42 |
# @key: value |
43 | 43 |
|
44 | 44 |
|
45 | 45 |
Leerzeichen vor "value" werden entfern. |
46 | 46 |
|
47 |
Die folgenden Schl?sselworte werden verarbeitet:
|
|
47 |
Die folgenden Schlüsselworte werden verarbeitet:
|
|
48 | 48 |
|
49 |
* tag: Wird zwingend ben?tigt. Dies ist der "Name" des
|
|
49 |
* tag: Wird zwingend benötigt. Dies ist der "Name" des
|
|
50 | 50 |
Upgrades. Dieser "tag" kann von anderen Kontrolldateien in ihren |
51 |
Abh?ngigkeiten verwendet werden (Schl?sselwort "depends"). Der "tag"
|
|
51 |
Abhängigkeiten verwendet werden (Schlüsselwort "depends"). Der "tag"
|
|
52 | 52 |
ist auch der Name, der in der Datenbank eingetragen wird. |
53 | 53 |
|
54 |
Normalerweise sollte die Kontrolldatei genau so hei?en wie der
|
|
54 |
Normalerweise sollte die Kontrolldatei genau so heißen wie der
|
|
55 | 55 |
"tag", nur mit der Endung ".sql" bzw. "pl". |
56 | 56 |
|
57 | 57 |
Ein Tag darf nur aus alphanumerischen Zeichen sowie den Zeichen _ - |
58 | 58 |
( ) bestehen. Insbesondere sind Leerzeichen nicht erlaubt und |
59 | 59 |
sollten stattdessen mit Unterstrichen ersetzt werden. |
60 | 60 |
|
61 |
* description: Ben?tigt. Eine Beschreibung, was in diesem Update
|
|
61 |
* description: Benötigt. Eine Beschreibung, was in diesem Update
|
|
62 | 62 |
passiert. Diese wird dem Benutzer beim eigentlichen Datenbankupdate |
63 |
angezeigt. W?hrend der Tag in englisch gehalten sein sollte, sollte
|
|
63 |
angezeigt. Während der Tag in englisch gehalten sein sollte, sollte
|
|
64 | 64 |
die Beschreibung auf Deutsch erfolgen. |
65 | 65 |
|
66 | 66 |
* depends: Optional. Eine mit Leerzeichen getrennte Liste von "tags", |
67 |
von denen dieses Upgradescript abh?ngt. Lx-Office stellt sicher,
|
|
68 |
dass die in dieser Liste aufgef?hrten Scripte bereits durchgef?hrt
|
|
69 |
wurden, bevor dieses Script ausgef?hrt wird.
|
|
70 |
|
|
71 |
Abh?ngigkeiten werden rekursiv betrachtet. Wenn also ein Script "b"
|
|
72 |
existiert, das von ?nderungen in "a" abh?ngt, und eine neue
|
|
73 |
Kontrolldatei f?r "c" erstellt wird, die von ?nderungen in "a" und
|
|
74 |
"b" abh?ngt, so gen?gt es, in "c" nur den Tag "b" als Abh?ngigkeit
|
|
67 |
von denen dieses Upgradescript abhängt. Lx-Office stellt sicher,
|
|
68 |
dass die in dieser Liste aufgeführten Scripte bereits durchgeführt
|
|
69 |
wurden, bevor dieses Script ausgeführt wird.
|
|
70 |
|
|
71 |
Abhängigkeiten werden rekursiv betrachtet. Wenn also ein Script "b"
|
|
72 |
existiert, das von Änderungen in "a" abhängt, und eine neue
|
|
73 |
Kontrolldatei für "c" erstellt wird, die von Änderungen in "a" und
|
|
74 |
"b" abhängt, so genügt es, in "c" nur den Tag "b" als Abhängigkeit
|
|
75 | 75 |
zu definieren. |
76 | 76 |
|
77 |
Es ist nicht erlaubt, sich selbst referenzierende Abh?ngigkeiten zu
|
|
77 |
Es ist nicht erlaubt, sich selbst referenzierende Abhängigkeiten zu
|
|
78 | 78 |
definieren (z.B. "a" -> "b", "b" -> "c" und "c" -> "a"). |
79 | 79 |
|
80 | 80 |
* priority: Optional. Ein Zahlenwert, der die Reihenfolge bestimmt, in |
81 |
der Scripte ausgef?hrt werden, die die gleichen Abh?ngigkeitstiefen
|
|
81 |
der Scripte ausgeführt werden, die die gleichen Abhängigkeitstiefen
|
|
82 | 82 |
besitzen. Fehlt dieser Parameter, so wird der Wert 1000 benutzt. |
83 | 83 |
|
84 |
Dies ist reine Kosmetik. F?r echte Reihenfolgen muss "depends"
|
|
85 |
benutzt werden. Lx-Office sortiert die auszuf?hrenden Scripte zuerst
|
|
86 |
nach der Abh?ngigkeitstiefe (wenn "z" von "y" abh?ngt und "y" von
|
|
87 |
"x", so hat "z" eine Abh?ngigkeitstiefe von 2, "y" von 1 und "x" von
|
|
88 |
0. "x" w?rde hier zuerst ausgef?hrt, dann "y", dann "z"), dann nach
|
|
89 |
der Priorit?t und bei gleicher Priorit?t alphabetisch nach dem
|
|
84 |
Dies ist reine Kosmetik. Für echte Reihenfolgen muss "depends"
|
|
85 |
benutzt werden. Lx-Office sortiert die auszuführenden Scripte zuerst
|
|
86 |
nach der Abhängigkeitstiefe (wenn "z" von "y" abhängt und "y" von
|
|
87 |
"x", so hat "z" eine Abhängigkeitstiefe von 2, "y" von 1 und "x" von
|
|
88 |
0. "x" würde hier zuerst ausgeführt, dann "y", dann "z"), dann nach
|
|
89 |
der Priorität und bei gleicher Priorität alphabetisch nach dem
|
|
90 | 90 |
"tag". |
91 | 91 |
|
92 | 92 |
Hilfsscript dbupgrade2_tool.pl |
93 | 93 |
------------------------------ |
94 | 94 |
|
95 |
Um die Arbeit mit den Abh?ngigkeiten etwas zu erleichtern, existiert
|
|
95 |
Um die Arbeit mit den Abhängigkeiten etwas zu erleichtern, existiert
|
|
96 | 96 |
ein Hilfsscript namens "scripts/dbupgrade2_tool.pl". Es muss aus dem |
97 | 97 |
Lx-Office-ERP-Basisverzeichnis heraus aufgerufen werden. Dieses Tool |
98 | 98 |
liest alle Datenbankupgradescripte aus dem Verzeichnis sql/Pg-upgrade2 |
99 |
aus. Es benutzt daf?r die gleichen Methoden wie Lx-Office selber,
|
|
100 |
sodass alle Fehlersituationen von der Kommandozeile ?berpr?ft werden
|
|
101 |
k?nnen.
|
|
99 |
aus. Es benutzt dafür die gleichen Methoden wie Lx-Office selber,
|
|
100 |
sodass alle Fehlersituationen von der Kommandozeile überprüft werden
|
|
101 |
können.
|
|
102 | 102 |
|
103 |
Wird dem Script kein weiterer Parameter ?bergeben, so wird nur eine
|
|
104 |
?berpr?fung der Felder und Abh?ngigkeiten vorgenommen. Man kann sich
|
|
103 |
Wird dem Script kein weiterer Parameter übergeben, so wird nur eine
|
|
104 |
Überprüfung der Felder und Abhängigkeiten vorgenommen. Man kann sich
|
|
105 | 105 |
aber auch Informationen auf verschiedene Art ausgeben lassen: |
106 | 106 |
|
107 | 107 |
1. Listenform: "./scripts/dbupgrade2_tool.pl --list" |
108 | 108 |
|
109 | 109 |
Gibt eine Liste aller Scripte aus. Die Liste ist in der Reihenfolge |
110 |
sortiert, in der Lx-Office die Scripte ausf?hren w?rde. Es werden
|
|
111 |
neben der Listenposition der Tag, die Abh?ngigkeitstiefe und die
|
|
112 |
Priorit?t ausgegeben.
|
|
110 |
sortiert, in der Lx-Office die Scripte ausführen würde. Es werden
|
|
111 |
neben der Listenposition der Tag, die Abhängigkeitstiefe und die
|
|
112 |
Priorität ausgegeben.
|
|
113 | 113 |
|
114 | 114 |
2. Baumform: "./scripts/dbupgrade2_tool.pl --tree" |
115 | 115 |
|
116 |
Listet alle Tags in Baumform basierend auf den Abh?ngigkeiten
|
|
116 |
Listet alle Tags in Baumform basierend auf den Abhängigkeiten
|
|
117 | 117 |
auf. Die "Wurzelknoten" sind dabei die Scripte, von denen keine |
118 |
anderen abh?ngen. Die Unterknoten sind Scripte, die beim
|
|
119 |
?bergeordneten Script als Abh?ngigkeit eingetragen sind.
|
|
118 |
anderen abhängen. Die Unterknoten sind Scripte, die beim
|
|
119 |
übergeordneten Script als Abhängigkeit eingetragen sind.
|
|
120 | 120 |
|
121 | 121 |
3. Umgekehrte Baumform: "./scripts/dbupgrade2_tool.pl --rtree" |
122 | 122 |
|
123 |
Listet alle Tags in Baumform basierend auf den Abh?ngigkeiten auf.
|
|
123 |
Listet alle Tags in Baumform basierend auf den Abhängigkeiten auf.
|
|
124 | 124 |
Die "Wurzelknoten" sind dabei die Scripte mit der geringsten |
125 |
Abh?ngigkeitstiefe. Die Unterknoten sind Scripte, die das
|
|
126 |
?bergeordnete Script als Abh?ngigkeit eingetragen haben.
|
|
125 |
Abhängigkeitstiefe. Die Unterknoten sind Scripte, die das
|
|
126 |
übergeordnete Script als Abhängigkeit eingetragen haben.
|
|
127 | 127 |
|
128 | 128 |
4. Baumform mit Postscriptausgabe: "./scripts/dbupgrade2_tool.pl --graphviz" |
129 | 129 |
|
130 |
Ben?tigt das Tool "graphviz", um mit seiner Hilfe die Baumform aus
|
|
130 |
Benötigt das Tool "graphviz", um mit seiner Hilfe die Baumform aus
|
|
131 | 131 |
3. in eine Postscriptdatei namens "db_dependencies.ps" |
132 |
auszugeben. Dies ist vermutlich die ?bersichtlichste Form, weil
|
|
132 |
auszugeben. Dies ist vermutlich die übersichtlichste Form, weil
|
|
133 | 133 |
hierbei jeder Knoten nur einmal ausgegeben wird. Bei den |
134 |
Textmodusbaumformen hingegen k?nnen Knoten und all ihre
|
|
135 |
Abh?ngigkeiten mehrfach ausgegeben werden.
|
|
134 |
Textmodusbaumformen hingegen können Knoten und all ihre
|
|
135 |
Abhängigkeiten mehrfach ausgegeben werden.
|
|
136 | 136 |
|
137 |
5. Scripte, von denen kein anderes Script abh?ngt:
|
|
137 |
5. Scripte, von denen kein anderes Script abhängt:
|
|
138 | 138 |
"./scripts/dbupgrade2_tool.pl --nodeps" |
139 | 139 |
|
140 | 140 |
Listet die Tags aller Scripte auf, von denen keine anderen Scripte |
141 |
abh?ngen.
|
|
141 |
abhängen.
|
|
142 | 142 |
|
Auch abrufbar als: Unified diff
Dokumentation komplett nach utf8 konvertiert.