$Id: Changes,v 1.39 2005/02/22 16:53:46 cvsinst Exp $
Revision history for Perl extension Dimedis::Ddl.
0.38 22.02.2005 joern
- Bugfixes: dddl config Test funktionierte nicht; MySQL
hatte Fehler beim Index droppen.
0.36 11.02.2005 joern
- Bugfix: Dimedis::DdlDriver::mysql-drop_index();
Fehlerhafter Zugriff auf interne Datenstruktur beim
Löschen von Referenz-Indices
0.35 05.08.2003 joern
- Feature: MySQL Treiber an 4.0.13 angepaßt, die nun ein
DROP FOREIGN KEY unterstützt.
ACHTUNG: diese Dimedis::Ddl Version läuft *nicht* mehr
mit MySQL 4.0.12.
- Bugfix: in generierter Type Hash Config wurde die
Type Hash Variable nicht wie früher zurückgegeben.
0.34 02.06.2003 joern
- Bugfix: print_type_hash erzeugte Code zur Erzeugung von
%var, statt $var als Hash Referenz.
0.33 02.06.2003 joern
- Feature: print_type_hash( var => $var ) gibt das Type Hash
nun in diesem Format aus: $var{$table} = { ... };
Damit können mehrere Type Hash Dateien ohne weiteres
hintereinander eingelesen werden, und alle Tabellen-
Definitionen landen dabei im selben Hash.
- Feature: neue Option -c bei dddl, zur Syntaxprüfung der
angegebenen Config-Datei.
0.32 19.05.2003 joern
- Feature: neues Script dddl_create_pk. Erzeugt aus einer
gegebenen Config eine neue Config, die nur die Primary
Keys anlegt.
0.31 16.05.2003 joern
- Bugfix: beim altern von PrimaryKey, Constraint und
Reference müssen nun alle Angaben gemacht werden, der
Name allein reicht nicht aus.
- Bugfix: bei MySQL ALTER/DROP REFERENCE wurde der
dazugehörige Index auf den lokalen Spalten nicht gelöscht.
Wenn nun versucht wurde, eine gleichbenannte aber auf andere
Spalten bezogene Referenz wieder neu anzulegen, gab es einen
Fehler, weil ein Index unter diesem Namen bereits existierte.
- Feature: Achtung, INKOMPATIBLE ÄNDERUNG
Neues Attribut croak_config_errors steuert, ob bei
Konfigurationsfehlern eine Exception geworfen werden
soll oder nicht. Per Default wird nun eine Exception
geworfen, was bislang nicht der Fall war.
- Feature: MySQL Support nur noch mit aktiver Datenbank-
verbindung, sonst wird eine Exception geworfen.
0.30 13.05.2003 joern
- Feature: neue Ddl Methode ->cleanup(), die anhand der
gegebenen DDL Config die referenzielle Integrität einer
Datenbank prüft und im Falle von DELETE CASCADE Referenzen
Datensätze löscht, die nicht vorhanden sein dürfen.
Damit kann eine MySQL Datenbank bereinigt werden, bevor
für diese References eingeschaltet werden.
0.29 23.04.2003 joern
- Bugfix: MySQL: DROP REFERENCE funktioniert nicht, wenn die
Tabelle anderweitig schon geändert wurde (z.B. Spalten
hinzugefügt oder gelöscht). Es wird nun eine Fehlermeldung
produziert, wenn das versucht wird. Für die DROP REFERENCE
Klausel muß eine eigene Config erstellt werden, damit es
funktioniert.
0.28 22.04.2003 joern
- Bugfix: Angabe von $dbh und $db_type ist nun gleichzeitig
möglich. Nur wenn kein $db_type gegeben ist, wird dieser
aus dem $dbh extrahiert.
0.27 11.04.2003 joern
- Bugfix: für MySQL DROP UNIQUE INDEX wurde kein SQL Code
generiert.
- Feature: _type_hash_only bewirkt bei einer Tabellendefinition,
daß für diese Tabelle kein DDL Code generiert wird, sondern
nur ein Type Hash Eintrag.
- Feature: voller MySQL Support für Referenzen bzw. FOREIGN
KEY CONSTRAINTS. Bedingt min. MySQL 4.0.12 sowie die
Übergabe eines DBI Handles.
- Feature: _references darf auch _reference geschrieben werden.
- Feature: experimentelle ->query() Methode, zum Durchsuchen
der aufgrund der DDL Konfiguration intern angelegten Objekte.
Kann z.B. verwendet werden, um 'drop' und 'modify' Reference
Fälle zu ermitteln.
- Feature: Type Hash Generierung berücksichtigt auch ALTER
TABLE Fälle.
- Feature: das Type Hash kann in zwei Varianten generiert werden.
Per Default sind nur die für Dimedis::Sql unbedingt nötigen
Spalten (serial, blob/clob) enthalten. Alternativ kann
ein vollständiges Type Hash generiert werden, das z.B. für
das Dimedis::Sql Export/Import Programm benötigt wird.
ACHTUNG: das ist eine inkompatible Änderung. Bislang wurde
------- immer ein vollständiges Type Hash generiert!
0.26 08.04.2003 joern
- Feature: neue Spaltenoption CASE SENSITIVE. Wirkt sich
derzeit nur bei MySQL aus. Die betroffene Spalte wird
mit der BINARY Option angelegt. D.h. die Sortierung
erfolgt per ASCII (Umlaute werden falsch einsortiert),
dafür werden Indices, Unique Constraints aber case
sensitive.
0.25 25.03.2003 joern
- Bugfix: alter => 'drop_table' schrieb hart verdrahtet
ein "drop table" raus, ohne die Driver Table->get_drop_ddl
Methode zu benutzen. Dadurch wurden bei Oracle Sequences
nicht gelöscht.
0.24 12.03.2003 joern
- Nutzlose IO::String-Einbindung entfernt.
0.23 12.03.2003 joern
- Bugfix: Oracle Sequences wurden im DROP TABLE Fall nicht
mit gelöscht. Nun werden Sequences für jede Tabelle
angelegt und gelöscht, auch wenn die Tabelle keine 'serial'
Spalte haben sollte (nach wie vor nur, wenn auch der
"create_oracle_sequence" Hint gesetzt ist).
0.22 08.01.2003 joern
- Bugfix: print_type_hash() gab nicht alles in die Datei
aus, sondern Teile auf STDOUT.
0.21 06.01.2003 joern
- print_type_hash(): gibt Type Hash nun in der Reihenfolge
aus, in der die Tabellen in der Konfiguration stehen.
- get_type_hash_lref(): neue Methode, die Type Hash als
Liste in der ursprünglichen Reihenfolge zurückgibt
(genauer Aufbau der Liste: siehe Doku).
- Bugfix: "use strict" Verletzungen in Config-Dateien landeten
nur auf STDERR, wurden aber nicht in der DDL eigenen
Fehlermeldung wiedergegeben.
- Bugfix: wenn '_alter' fehlte, gab es eine Exception und
keine verständliche Ddl eigene Fehlermeldung.
0.20 01.10.2002 joern
- Perl 5.004_04 Syntax kompatibel gemacht (keine postfix
for und foreach Statements mehr).
0.19 10.09.2002 joern, gert
- bin/dddl_create_config: Spezialfall eingebaut: ni_id
werden immer serial gesetzt. Nur bei it_otp ist es eine
integer spalte.
- MySQL Blob Typen nun "LONG", die "MEDIUM" Typen waren
zu klein.
0.18 04.09.2002 joern
- Feature: MySQL Referenzen werden zwar immer noch nicht
unterstützt, aber nun werden wenigstens die dazugehörigen
Indices erzeugt, was der Performance zuträglich ist.
0.17 03.09.2002 joern
- Bugfix: MySQL Treiber lieferte leere SQL Strings für
References Befehle zurück, statt *gar* keinen SQL
Code zu liefern. Die Ausführung eines Leerstrings
mit DBI gibt eine "emtpy query" Exception.
0.16 27.08.2002 joern
- Feature: print_type_hash(). New parameter var which passes
the variable name to be used in the dump.
0.15 26.08.2002 joern, gert
- Feature: Ddl::Config->add_directory kann optional
eine Regex übergeben werden, auf die alle zu ladenden
Dateien passen müssen. Verzeichnisse werden automatisch
herausgefiltert. (joern)
- Feature: dddl_create_config, bei storage-Klausel: erzeugter
Code besser formatiert. Unterscheidung table- und
lob-storage-Klausel war noetig. Alternativ-Wertepaare
muessen in Klammern gesetzt werden. (gert)
0.14 13.08.2002 joern, gert
- Bugfix mysql: eine Spalte mit Index wurde automatisch
NOT NULL gesetzt. Das ist für aktuelle MySQL Versionen
aber nicht mehr erforderlich. (joern)
- Bugfix dddl_create_config: cascade wurde fehlerhaft
in ausgegeben, dadurch haben DELETE CASCADEs nicht
funktioniert. (gert)
0.13 15.07.2002 joern
- Reference Support für MySQL per Default wieder
abgeschaltet. Über die Umgebungsvariablen
* DDL_MYSQL_CREATE_REFERENCES
* DDL_MYSQL_DROP_REFERENCES
kann das zu Testzwecken wieder eingeschaltet
werden. Allerdings hat auch die aktuelle MySQL
Version noch Probleme damit, die noch nicht
genau evaluiert sind.
0.12 12.07.2002 joern
- Create References Support für MySQL
- ACHTUNG: min. MySQL 3.23.50 erforderlich
- ACHTUNG: drop_references funktioniert auch mit
MySQL 3.23.51 noch nicht !!!
0.11 28.06.2002 joern
- Unique Constraints werden nun nicht mehr über einen
Unique Index abgebildet. Das 'unique' Attribut gibt
es also bei _index nicht mehr, stattdessen gibt es
ein 'unique' bei _constraint, das die Spalte(n)
zugeordnet bekommt, die unique sein soll(en).
0.10 27.06.2002 joern
- Bugfix: _alter => 'drop', _index => { name => 'foo' }
funktionierte nicht, weil das Attribut 'on' als
fehlend moniert wurde.
0.09 26.06.2002 joern
- _primary_key Definition nun auch Hash mit den Schlüsseln
'name' und 'on'
- Unterstützung von alter/drop/add PRIMARY KEY
- Erweiterung der Fehlerbehandlung um Methode
get_formatted_errors_sref(), sowie die Möglichkeit ein
FileHandle an print_errors() zu übergeben
- Bugfix: KEEP/ALTER NOT NULL/NULL, keep und alter wurden
intern vertauscht
- Bei SERIAL darf kein NULL/NOT NULL angegeben werden, weil
SERIALs per Default NOT NULL sind.
- Doku: Hinweis zum Löschen von SERIAL Primary Keys (wegen
Problemen by MySQL).
- get_ddl_llref() liefert leere Liste, wenn Fehler beim
Code-Generieren aufgetreten sind, da der darin enthaltene
DDL Code fehlerhaft sein kann. Mit ->has_errors muß vorher
abgefragt werden, ob Fehler aufgetreten sind, oder nicht.
- an einigen Stellen gab es noch croak() bei fehlerhaften
Konfigurationsparametern, die nun auch in die Liste der
Fehlermeldungen aufgenommen werden.
0.08 18.06.2002 joern
- Neues Konzept für datenbankspezifische Erweiterungen:
set_hint() Methode. Hier zunächst genutzt für die
Steuerung ob Oracle CREATE/DROP SEQUENCE erzeugen soll,
oder nicht.
0.07 18.06.2002 joern
- Bugfix: "DEFAULT 0" wurde nicht in DDL Statements übernommen.
- Bugfix: Endlosschleife wenn _db Angaben vorkamen, die nicht
zur aktuellen Datenbank gehörten.
0.06 17.06.2002 joern
- Bugfix: interner Default Value für DB-spezifische Optionen
war eine Liste statt eines Hashes, was bei Oracle zu
einer Exception führte.
0.05 17.06.2002 joern
- print() und print_type_hash() geben per Default auf
STDOUT aus
- Bugfix: execute() warf eine Exception
- new() kann nun auch ein $dbh zur Typ-Ermittlerung übergeben
werden, statt db_type.
- die Konfigurationswerte für _index, _reference, _constraint
und _db_* können nun wahlweise als Hash oder als Liste
übergeben werden. dddl_create_config gibt jetzt Listen aus, da
diese Schreibweise wegen der Einheitlichkeit besser ist.
0.04 07.06.2002 joern
- Fehlerbehandlung: kein die() mehr bei Fehlern in der
Konfiguration. Fehler werden gesammelt und können
formatiert ausgegeben werden
- dddl gibt Fehler aus und bricht nicht mehr ab
- KEEP/ALTER bei NULL/NOT NULL für_alter => 'modify'
- dddl_create_config warnt Indices ohne dazugehörige
Tabelle nur, bricht aber nicht mehr ab
- ->print_type_hash produziert nun anonyme Hash-Referenz
- Dokumentation angepaßt
0.03 29.05.2002 joern
- dddl_create_config erweitert um normale Indices
0.02 16.05.2002 joern
- kleinere Korrekturen an der Dokumentation
- Umbenennung $ddl->get_type_hash nach $ddl->get_type_hash_ref
0.01 13.05.2002 joern
- erste Release mit Oracle, MySQL und MS-SQL Support
(Sybase ungetestet)