$Id: Changes,v 1.44 2006/10/20 09:57:50 cvsinst Exp $

Revision history for Perl extension Dimedis::Sql.

0.44 20.10.2006 joern
        Bugfix:
        - Dimedis::SqlDriver::mysql: cmpi() funktionierte bei
          binary Spalten nicht.

0.43 12.09.2006 joern
        Bugfix:
        - Bei Nicht-utf-8 Handles Daten mit utf-8 Flag vorm Einfgen
          in die Datenbank nach windows-1252 konvertieren.

0.42 08.09.2006 joern
	Feature:
	- beim Export werden keine Dateien fr leere Blobs erzeugt

0.41 16.09.2005 joern
	Bugfix:
	- Dimedis::SqlDriver::mysql: blob_read zerstrte Blobdaten
	  beim Schreiben in ein FilehHandle wenn utf8 Modus aktiviert.

0.40 19.07.2005 joern
	Bugfix:
	- Dimedis::SQL::Import: wenn "inserts_per_transaction" gesetzt
	  wurden "berhngende" INSERT's am Ende nicht committed.

0.39 01.02.2005 joern
	Bugfix:
	- Dimedis::SqlDriver::Oracle->db_contains(): Suche nach
	  Begriffen in Grobuchstaben fhrte zu einer Oracle
	  Exception wg. zu komplexer Abfrage.

0.38 09.12.2004 joern
	Bugfix:
	- Dimedis::SqlDriver::mysql: die Verwendung von "set
	  character set latin1" funktionierte nicht, da falsche
	  collate eingestellt wurde (die System-Collate utf8_general_ci).
	  Nun werden explizit die Variablen character_set_client,
	  character_set_connection, character_set_results und
	  collation_connection entsprechend gesetzt.

0.37 23.11.2004 joern
	Bugfix:
	- Dimedis::SqlDriver::Oracle->db_contains(): alle
	  Sonderzeichen escapen, sonst knnen immer noch
	  "DRG-50937: query too complex" Fehler auftreten.

0.36 22.11.2004 joern
	Bugfix:
	- Dimedis::SqlDriver::mysql: set_utf8() mu die
	  Datenbankverbindung entsprechend einstellen.

0.35 12.11.2004 joern
	Features:
	- Export Programm kann auch utf8 Datenbanken exportieren
	- Import Programm kann sowohl latin1 als auch utf8 Daten
	  importieren. Hierzu gibt es die neue Konfigurations-Option
	  'recode', die die alte Option 'iso2utf8' ablst
	  (siehe Doku von dsql_import). Ein Konvertierung von utf8
	  nach latin1 ist aber derzeit noch nicht implementiert.
	- Dimedis::SqlDriver::mysql: bei MySQL Servern >= 4.1 wird
	  nun die Datenbankverbindung auf CHARACTER SET UTF8
	  gesetzt, wenn Dimedis::Sql->{utf8} gesetzt ist.
	- dsql_export: mit der neuen Option 'include_tables' knnen
	  ausgewhlte Tabellen exportiert werden.

	Bugfix:
	- Dimedis::SqlDriver::mysql: CLOBs wurden bei einer
	  utf8 Datenbank doppelt utf8 kodiert ins Filesystem
	  geschrieben.

0.34 15.09.2004 joern
	- Bugfix: left_outer_join() funktionierte nicht im
	  utf8 Modus.

0.33 28.06.2004 joern
	- Bugfix: Datei I/O mit utf8 Clobs funktionierte nicht
	  immer, zumindest nicht unter Perl 5.8.2 (welches ein
	  Bug in join() unter utf8 hat).
	- Feature: man kann nun auch von Dimedis::Sql erben,
	  indem die abgeleitete Klasse dynamisch in die
	  Vererbungslinie der SqlDriver Module eingefgt wird.

0.32 03.02.2004 joern
	- Feature: Dimedis::SqlDriver::MySQL untersttzt jetzt
	  auch die contains() Methode, allerdings ohne speziellen
	  Volltext-Index sondern mit einer einfachen LIKE Suche.

0.31 15.08.2003 joern
	- Bugfix: leere MySQL Clob's werden nun nicht mehr zu NULL
	  gemacht. Leere Clob's drfen grundstzlich nicht zu NULL
	  gemacht werden, da dies nicht datenbankbergreifend portabel
	  ist.

0.30 07.08.2003 joern
	- Leer-Strings werden beim Einfgen / Updaten zu undef
	  (bzw. NULL) konvertiert. Das vereinheitlicht die Behandlung
	  von Leer-Strings bei verschiedenen Datenbanksystemen. Z.B.
	  konvertiert Oracle Leer-Strings immer zu NULL, whrend
	  MySQL diese sehr wohl als Leer-String speichert.

0.29 08.07.2003 gert
	- ODBC.pm / Microsoft SQL Server: proprietaere Outerjoin-Syntax
	  mit *= Operator ersetzt durch die ANSI-Outer-Join-On-Notation
	  in der From-Klausel. Der Code wurde vom MySQL Driver
	  bernommen.

0.28 30.01.2003, joern
	- Import: iso2utf8 Option, konvertiert Daten nach Unicode
	  beim Import.

0.27 15.01.2003, joern
	- Bugfix, Oracle: Inserts/Updates in Tabellen mit mehreren
	  CLOB's (oder BLOB's) funktionierten nicht.

0.26 15.11.2002 joern
	- UTF8 Support
	- Import/Export Anpassung fr Sybase

0.25 15.07.2002 joern
	- Bugfix: MySQL Treiber untersttzte das explizte Einfgen
	  von Serial Werten nicht.

0.24 27.06.2002 joern
	- In der cmpi Methode wurde 'use locale' hinzugefgt,
	  so da eine mit setlocale() eingestellte Locale nun
	  bercksichtigt wird. Dazu muten folgende SqlDriver
	  gendert werden:
	  - ASAny (0.03)
	  - Informix (0.10)
	  - Oracle (0.19)
	  - Pg (0.02)
	  - Sybase (0.12)

0.23 21.06.2002 joern
	- SqlDriver::mysql (0.08), SqlDriver::Informix (0.09)
	  - Bugfix: es wurde eine Exception geworfen, wenn ein
	    blob_read auf einen leeren bzw. undefinierten
	    Blob ging, statt einen Leer-String zurckzuliefern.
	- Dimedis::Sql::Export
	  - ODBC/MS-SQL Support: $dbh->{odbc_SQL_ROWSET_SIZE} = 2
	- Sybase:
	  - automatische Serial-Ermittlung (max(id)+100), wenn
	    Serial noch nicht existent

0.22 28.04.2002 stefan
	- SqlDriver::Sybase
	  - Outer Join warf Fehlermeldung

0.21 26.04.2002 sabine, joern
	- SqlDriver::Oracle
	  - lesen von Blobs, die NULL waren, gab eine Exception.
	    NULL Blobs werden nun als leere Blobs zurckgegeben
	    (joern)
	- Dimedis::Sql
	  - neues Attribut 'serial_write', um gezieltes Setzen von
	    serial Spalten zu erlauben.
	- SqlDriver::mysql
	  - Abfrage des neuen Attributes 'serial_write' beim Insert
	    in serial Spalten, um gezieltes Setzen von serial
	    Spalten zu erlauben.
	- SqlDriver::Sybase
	  - Abfrage des neuen Attributes 'serial_write' beim Insert
	    in serial Spalten, um gezieltes Setzen von serial
	    Spalten zu erlauben.
	- Import / Export

0.20 12.04.2002 joern
	- Umstrukturierung der Dimedis::Sql und Dimedis::SqlDriver
	  Module, allerdings nur die Distribution betreffend.
	  Die CVS Module fr die SqlDriver wurden gelscht und
	  die SqlDriver alle unterhalb des Dimedis::Sql Moduls
	  im lib Ordner eingebettet. D.h. ab jetzt gibt es nur
 	  noch eine Dimedis::Sql Distribution, die immer alle
	  SqlDriver enthlt.

0.19 05.06.2001 gert
	- blob_read versteht nun bind-parameters (lediglich die
          Doku angepasst).

0.18 27.02.2001 joern
	- die Methode $sqlh->get() liefert u.a. einen Hash des
	  eingelesenen Datensatzes zurck. Die Schlssel im Hash
	  sind die Spalten des Datensatzes, und werden von nun an
	  *immer* lower cased zurckgeliefert. Einige Datenbanken
	  weichen hiervon ab, deshalb mu Dimedis::Sql der
	  Portabilitt halber diese Konvertierung vornehmen.

0.17 23.02.2001 joern
	- Fehlerausgaben enthalten nun wo mglich den SQL Code,
	  der zu dem Fehler fhrte

0.16 23.10.2000 joern
	- $sqlh->do und $sqlh->get benutzen nun nicht mehr bei jedem
	  Befehl das DBI Statement Caching. Wenn keine SQL Parameter
	  bergeben wurden, so wird ohne Caching gearbeitet. Darber
	  hinaus ist bei einigen Methoden das Caching durch den
	  Anwender steuerbar (siehe Dokumentation)
	- teilweise bentigt das Cache Feauture Support durch die
	  Dimedis::SqlDriver. Der Sybase Treiber enthlt bereits
	  die entsprechenden nderungen, die andern Treiber mssen
	  noch berprft werden. Nach auen hin ist das Feature aber
	  transparent, lediglich der Speicherverbrauch kann je nach
	  Datenbanktyp variieren. Das Funktionsverhalten ist berall
	  identisch, an der API gab es keine inkompatiblen nderungen.

0.15 16.03.2000 stefan
	- im Konstruktor kann ein globales Typehash angegeben werden, 
	  dass aber immer von einem lokalen ueberspielt werden kann

0.14 03.03.2000 joern
	- do Methode arbeitet mit prepare_cached. Das bringt
	  bei Sybase fast den doppelten Durchsatz.

0.13 02.03.2000 joern
	- neue Methode: db_prefix

0.12 29.02.2000 stefan
	- neue Datentypen eingefuegt (integer,numeric,varchar,char)
	- Konstruktor erweitert, damit auch DBD::Proxy verwendet
	  werden kann

0.11 17.02.2000 joern
	- Hinweis in Doku, da $where von left_outer_join immer
	  zurckgeliefert wird.
	- neue Methode: use_db zum Wechseln einer Datenbank

0.10 09.11.1999 joern
	- nun wird auch Sybase supported
	- Neue Methode: get_features()

0.09 18.10.1999 joern
	- Dokumentation leicht berarbeitet, einige Beispiele
	  eingefgt.

0.08 29.07.1999 joern
	- Die $sqlh->contains Schnittstelle wurde gendert,
	  entsprechender Code mu leider angepat werden. Dafr
	  kann man jetzt mehrere Suchwrter eingeben, die
	  mit 'and' oder 'or' verknpft werden.
	- Exceptions werden nun mit croak geworfen

0.07 23.07.1999 joern
	- Volltextsupport durch neue Methode $sqlh->contains.

0.06 16.07.1999 joern
	- bei Serial Spalten ist die explizite Angabe von Werten
	  von nun an verboten, da sich das nicht mit allen
	  Datenbanksystem realisieren lt (Informix: ja,
	  Oracle: nein)

0.05 07.07.1999 joern
	- Windows NT: Filehandles mssen mit binmode behandelt
	  werden. In der Dokumentation wurde ein entsprechender
	  Hinweis hinzugefgt, am Code gibt es hierzu keine
	  Vernderungen, da diese nur in den SqlDrivern
	  erforderlich waren.

0.04 18.06.1999 joern
	- Implementation von
	  - install
	- die Angabe eines Sequence Namens beim serial Datentyp
	  ist nicht mehr mglich
	- den Outer Join Fall II gibt es nicht mehr
	- Fall III wurde umbenannt zu Fall II
	- Die SqlDriver::* erben nun von Dimedis::Sql statt ihre
	  Methoden direkt im Dimedis::Sql Package zu definieren.
	  Nur so ist es mglich, mehrere Dimedis::Sql Instanzen
	  fr unterschiedlichen Datenbankplattformen parallel
	  zu erzeugen.
	  Der Konstruktor gibt nun ein Handle auf die SqlDriver
	  Klasse zurck, statt eines Handles auf Dimedis::Sql.
	  Es handelt sich dabei aber nicht um eine imkompatible
	  nderung der Schnittstelle. Alle Dimedis::Sql Programme
	  funktionieren unverndert weiter.
	- Dokumentation auf den aktuellen Stand gebracht

0.03 17.06.1999 joern
	- tmp_dir Parameter beim Konstruktor entfernt

0.02 16.06.1999 joern
	- Implementation von
	  - cmpi
	- filehandle Parameter bei blob_read

0.01 12.06.1999 joern
	- Implementation von
	  - new
	  - insert
	  - update
	  - blob_read
	  - do
	  - get
	  - outer_join

