Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 4c24a5f4

Von Sven Schöling vor mehr als 14 Jahren hinzugefügt

  • ID 4c24a5f44bf065a820ec1a540334ebd48446ac04
  • Vorgänger 32afa3f4
  • Nachfolger 238d4f5f

Dokumentation komplett nach utf8 konvertiert.

Unterschiede anzeigen:

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