Da das Changelog in Englisch ist werde ich von nun an hier einige
wichtige Änderungen der
Txt-db-api kurz aufführen.
Im WHERE, ODER BY und GROUP BY teil können nun auch spelten
verwendet werden die nach
SELECT nicht aufgeführt wurden (sie müssen einfach in einer der
Tabellen unter FROM sein)
Funktionen werden nun unterstützt und zwar in den Statements
SELECT, INSERT, UPDATE
und DELETE. Dabei sind folgende Funktionen unterstützt:
UNIX_TIMESTAMP, MD5, NOW, ABS, LCASE (oder LOWER), UCASE (oder UPPER).
Man kann diese Funktionen auch im WHERE, GROUP BY und ORDER BY teil verwenden.
Ebenfalls sind folgende gruppierenden Funktionen unterstützt
(nur bei SELECT Statements):
MIN, MAX, COUNT, SUM, AVG
Im WHERE Teil können nun auch 'wert'='wert' und 'wert'=spalte
kombinationen verwendet
werden.
Funktionen können auch direkt auf Werte angewand werden, z.B. md5('bla') oder ABS(-1)
Bei Database wurde die Funktion getLastInsertId() hinzugefügt,
siehe Dokumentation.
Das Error Handling hat sich geändert. Mit den funktionen
txtdbapi_error_occurred(),
txtdbapi_get_last_error() und txtdbapi_get_error() kann man prüfen ob
Fehler aufgetreten
sind und kann diese gegebenenfalls abfragen. Siehe dazu die Fehler
Handling Seite.
Mario hat etwas an der Performance gebastelt und vorallem ORDER
BY sollte einiges schneller
sein nun.
Die Rückgabewerte von executeQuery() wurden auf false vereinheitlich
für alle Statements
(im Fehlerfalle)
Hier sind nur die wichtigsten Neuerungen aufgeführt, der Rest steht im
changelog.
DAS TABELLENFORMAT HAT IN VERSION 0.1.5-Alpha-01 NOCHMAL GEÄNDERT:
JEDES TABELLEN-FILE HAT NUN NOCH EINE DRITTE ZEILE FÜR DIE SPALTEN-KONFIGURATION,
UND ZWAR WERDEN IN DIESER ZEILE DIE STANDART-WERTE FÜR DIE SPALTEN
FESTGELEGT. UM DIE PORTIERUNG EINFACH ZU MACHEN KÖNNT IHR EINFACH EINE
ZEILE
UNTERHALB DER DATENTYPEN-ZEILE EINFÜGEN, UND SOVIELE # MACHEN WIE
DIE ZEILE OBEN HAT, UND SONST NICHTS. NATÜRLICH KÖNNT IHR ABER
AUCH GLEICH
DIE GEWÜNSCHTE STANDARDWERTE EINTRAGEN :)
Wie eine Tabelle im neusten Format etwa aussieht kann man hier sehen.
Aliase für Tabellen werden nun unterstützt (bei SELECT).
Informationen über reservierte Wörter und Zeichen sowie die Konfiguration
der
Text-Db-Api wurden dem Manual hinzugefügt.
Wie oben schon erwähnt kann man nun für jede Spalte einen Standardwert
festlegen,
was natürlich auch änderungen am CREATE TABLE Statement mit sich
bringt!
Dies sollte die stabilste von allen Versionen sein (auch besser
als die ohne "-beta", ich hatte
früher halt einfach eine andere Namensgebung).
Windows Newlines sind nun wieder unterstützt (lesen), geschrieben
werden aber nachwievor
nur Unix newlines.
Das Error Handling wurde ein wenig verändert. Mit den Einstellungen
$PRINT_ERRORS und
$PRINT_WARNINGS kann man konfigurieren ob die Text-Db-Api Fehlermeldungen
anzeigen
soll oder nicht. Ebenfalls hat Database zwei neue Funktionen errorOccurred()
und getLastErrors()
um nach Fehlermeldungen zu prüfen und diese zu empfangen.
Beim LIST TABLES Statement können nun WHERE, GROUP BY, ORDER BY und LIMIT
ebenfalls
verwendet werden.
Weiterhin hat es in const.php eine neue Einstellung $ORDER_CASE_SENSITIVE:
Wenn auf 1 ist ORDER BY case sensitive (GROSS klein Schriebung wird unterschieden),
ansonsten case insensitive (GROSS klein Schreibung wird NICHT unterschieden).
Also mal grundsätzlich gingen alpha 1 und 2 garnicht, sie
löschten ganze tabellen bei
DELETE/ UPDATE :) Diese Probleme sollten nun behoben sein.
Weiterhin wurde einige Bugs gefixt und vorallem an der performance gearbeitet!
Im Forum kann man performance-vergleiche zwischen den alten und neuen
Versionen ansehen. Bis zu 3-4 mal schneller jetzt!
Bitte nur noch Unix newlines in den Tabellen Files benutzen
(sofern ihr sie von hand
editiert, ein guter texteditor wie ultraedit kann die newlines einfach ins
unix format
konvertieren.
Beachtet das es immer noch eine Alpha ist, vielleicht enthält
diese Version ja immer
noch so ein par unbemerkte Tabellen-lösch-bugs...
ACHTUNG: DAS TABELLEN FORMAT HAT IN VERSION 0.1.3-Alpha-02
GEÄNDERT!
WHEN EIN # TEIL EINES FELDWERTES IST, IST ES NUN NICHT MEHR ALS
%# IM TEXT FILE GESPEICHERT, SONDERN ALS %h!
UM DIE ALTEN TABELLEN-TEXT-FILES ZU KONVERTIEREN
MUSS MAN SIE EINFACH IN EINEM TEXTEDITOR ÖFFNEN, NACH
%# SUCHEN UND DURCH %h ERSETZTEN.
PASST AUF DAS IHR NICHT %%# DURCH %h ERSETZT,
DENN %%# HAT EINE ANDERE BEDEUTUNG IM ALTEN FORMAT
(DAS % IST DURCH EIN % ESCAPED, WAS ZU EINEM EINFACHEN % WIRD,
UND DAS # BEHÄLT SEINE ABGRENZENDE WIRKUNG IN DIESEM FALLE!)
EBENFALLS IST % NICHT MEHR ALS %% SONDERN ALS %p GESPEICHERT,
UM DIE ALTEN TABELLEN ZU KONVERTIEREN MACHT ES GLEICH WIE
OBEN. EBENFALLS MUSS DAS # AM ENDE JEDER ZEILE ENTFERNT WERDEN!
Ansonsten enthält diese Version vorallem bugfixes und performance verbesserungen.
Beachte das dies eine Alpha Version ist!! Für Bug Reports
oder Beta(bzw. Alpha)-Tester
bin ich sehr dankbar!!
Die INSERT Performance wurde um einiges verbessert. Vorallem
für grosse
Tabellen. Wenn die Tabellen grösser werden wird INSERT nicht mehr langsamer
so wie früher.
Neue Einstellung in const.php: $LIKE_CASE_SENSITIVE. Wenn auf
1 gesetzt
dann ist LIKE case sensitive (gross-kleinschreibung wird unterschieden).
Wenn auf 0, ist LIKE is case insensitive, d.h. gross klein schreibung wird
NICHT
unterschieden.
Die grösse eines Datensatzes ist nicht mehr begrenzt. Daher
wurde auch die Konstante
RECORD_MAX_SIZE entfernt. Anstelle von RECORD_MAX_SIZE ist jetzt eine neue
Konstante:
ASSUMED_RECORD_SIZE. Diese begrenzt die grösse der Datensätze NICHT!
Es ist ein intern
verwendeter wert. Man sollte ich nicht auf <1 setzten. Wenn man den Wert
für ASSUMED_RECORD_SIZE
geschickt wählt, kann das INSERT einiges schneller machen. Am besten
wählt man für
diese Konstante die durchschnittliche grösse eines Datensatzes. Wenn
du dir nicht sicher bist,
lass einfach den Standardwert.
Ein Bug welcher die Zeichenkette like falsch interpretierte,
wenn sie z.B. teil eines Tabellennamens
war wurde gefixt.
Das wildcard für LIKE ist nun % und nicht mehr *
Mit LIKE kann nun auch nach dem wildcard selbst gesucht werden,
dazu ist es mit dem escape char \
zu versehen:
"SELECT * FROM myTable WHERE field LIKE '%test\%test%'"
Dieses Beispiel findet xxtest%testxx aber nicht xxtestAtestxx.
Beim Parser wurden einige Dinge umgeschrieben und es ist auch
eine neue Datei hinzugekommen:
stringparser.php
LIKE wird nun auch unterstützt. Als wildcard * verwenden.
Das ganze ist noch schlecht getestet
und funktioniert eventuell nicht in allen fällen...
Wenn man bei UPDATE oder DELETE Statements nach dem WHERE ein
; hatte und nach dem
; noch Leerschläge kamen, so führte das zu einem Fehler. Das ; wurde
dann als Teil
der WHERE Expression interpretiert. Dieser Fehler ist nun behoben. Man kann
nun beliebig
viele Leerschläge nach dem ; haben.
In SELECT Statements können nun GROUP BY und DISTINCT verwendet
werden. Mehr dazu
im SQL teil das Manuals.
In der Konfigurations-Datei txt-db-api.php können nun für
$DB_DIR und $API_HOME_DIR auch
relative Pfade verwendet werden. Unter Installation
hat es einen Abschnitt zu diesem Thema.
Neu sind folgende Statements hinzugekommen: CREATE DATABASE,
DROP DATABASE, DROP TABLE und
LIST TABLES. Alle sind unter SQL Syntax dokumentiert.
Um CREATE DATABASE und DROP DATABASE Statements auszuführen braucht man
eine Instanz der
ROOT_DATABASE. Diese kiregt man folgendermassen: $db=new Database(ROOT_DATABASE);
Das ganze ist vielleicht noch etwas ein "Hack", aber wenn man sich
an die regeln hält und
ROOT_DATABASE nur für CREATE DATABASE und DROP DATABASE verwendet läuft
es gut.
Wird erst seit 0.1.2-Beta-02 in deutsch geführt.. siehe changelog.txt