Neues in der Txt-db-api (Changelog)

Da das Changelog in Englisch ist werde ich von nun an hier einige wichtige Änderungen der
Txt-db-api kurz aufführen.

Neu seit Version 0.2.0-Alpha-01

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.

Neu seit Version 0.1.5-Alpha-01

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!

Neu seit Version 0.1.4-Beta-01

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.

Neu seit Version 0.1.3-Alpha-08

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).

 

Neu seit Version 0.1.3-Alpha-03/04

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...

Neu seit Version 0.1.3-Alpha-02

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.

 

Neu seit Version 0.1.3-Alpha-01

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

 

Neu seit Version 0.1.2-Beta-06

LIKE wird nun auch unterstützt. Als wildcard * verwenden. Das ganze ist noch schlecht getestet
und funktioniert eventuell nicht in allen fällen...

Neu seit Version 0.1.2-Beta-05

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.

Neu seit Version 0.1.2-Beta-04

In SELECT Statements können nun GROUP BY und DISTINCT verwendet werden. Mehr dazu
im SQL teil das Manuals.

Neu seit Version 0.1.2-Beta-03

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 seit Version 0.1.2-Beta-02

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.

Vorherige Versionen

Wird erst seit 0.1.2-Beta-02 in deutsch geführt.. siehe changelog.txt