Blobfilter
<< Benutzerdefinierte Funktionen - UDF | IBExpert | Role >>
Die deutschsprachige Dokumentation wird seit dem 26. Juli 2016 nicht mehr gepflegt. Aktuelle und vollständige Dokumentation finden Sie auf der englischsprachigen Webseite: IBExpert Documentation
Blobfilter
Blobfilter sind Routinen für Blobs. Sie übersetzen Blobdaten von einem Typ zum anderen, d.h. sie ermöglichen die Anzeige der Inhalte des Blob-Subtypes X
als Subtype Y
oder umgekehrt. Diese Filter sind ideale Werkzeuge für bestimmte binäre Operationen, wie die Kompression oder Übersetzung von Blobs, je nach Anforderung der Anwendung.
Ein Blobfilter gleicht technisch einer Benutzerdefinierten Funktion - UDF. Er stellt sich selbst in den Hintergrund einer Datenbankmaschine und wird beispielsweise zur Komprimierung des Blobs verwendet oder, um das Format festzulegen, wie GIF
oder JPG
(abhängig davon, ob Windows oder Apple Mac verwendet wird). Der Blobfiltermechanismus muss wissen, was die verschiedenen Subtypen sind, um zu funktionieren.
Blobfilter werden auf die gleiche Weise geschrieben, wie UDFs und sind generell, genau wie UDFs, Teil der Standardbibliotheken.
Blobfilter deklarieren
Ein Blobfilter muss explizit in der Datenbank deklariert werden, bevor er verwendet wird. Dies geschieht über das Schlüsselwort DECLARE FILTER
. Zunächst ist es notwendig die Datenbank via Blobfilter zu verbinden und dann die Anweisung zu erstellen. Die Syntax des DECLARE FILTER
lautet wie folgt:
DECLARE FILTER <IB/FB_Filter_Name> <Parameter_List> INPUT TYPE <Type> OUPUT TYPE <Type> ENTRY_POINT <External_Function_Name> MODULE_NAME <Library_Name>;
Neu seit Firebird 2.0: Vorher war die einzig erlaubte Syntax zur Deklarierung eines Blobfilters die oben gezeigte. Seit Firebird 2.0 gibt es alternative eine neue Syntax:
DECLARE FILTER <name> INPUT_TYPE <mnemonic> OUTPUT_TYPE <mnemonic> ENTRY_POINT <function_in_library> MODULE_NAME <library_name>;
Wobei <mnemonic>
sich auf einen der Engine bekannten Subtype-Identifizierer bezieht.
Anfänglich sind sie binär, Text und andere meist für den internen Gebrauch, aber es ist möglich ein neues mnemonic
in rdb$types
azu schreiben und zu verwenden, da es nur zum Zeitpunkt der Deklaration geparst wird. Die Engine behält den numerischen Wert. Bitte vergessen Sie nicht, dass nur negative Subtype-Werte vom Benutzer definiert werden sollen.
Um die vordefinierten Typen einzusehen, machen Sie folgendes
select RDB$TYPE, RDB$TYPE_NAME, RDB$SYSTEM_FLAG from rdb$types where rdb$field_name = 'RDB$FIELD_SUB_TYPE';
RDB$TYPE | RDB$TYPE_NAME | RDB$SYSTEM_FLAG |
========= | ============================ | ================= |
0 | BINARY | 1 |
1 | TEXT | 1 |
2 | BLR | 1 |
3 | ACL | 1 |
4 | RANGES | 1 |
5 | SUMMARY | 1 |
6 | FORMAT | 1 |
7 | TRANSACTION_DESCRIPTION | 1 |
8 | EXTERNAL_FILE_DESCRIPTION | 1 |
Beispiele finden Sie unter: Declare BLOB subtypes by known descriptive identifiers.
Blobfilter aufrufen
Wie auch UDFs können Blobfilter von Firebird/InterBase® Code aufgerufen werden, wan immer ein eingebauter Firebird/InterBase® Funktionsaufruf verwendet wird. Um den Blobfilter zu verwenden, rufen Sie die FILTER
-Anweisung auf, wenn ein Cursor deklariert wird. Dann wird immer, wenn Firebird/InterBase® den Cursor verwendet, der Blobfilter automatischa aufgerufen.
Blobfilter löschen
DROP FILTER <filter_name>
DROP FILTER
entfernt eine Blobfilter-Deklaration von der Datenbank. Die Entfernung der Blobfilter-Deklaration von der Datenbank bedeutet nicht, dass er von der entsprechenden Blobfilter Bibliothek entfernt wird. Der Filter wird aber von der Datenbank unzugänglich sein. Nachdem der Löschung der Definition, alle am Filter abhängigen Anwendungen werden Fehlermeldungen zurückgeben.
Ein Filter kann nur vom Datenbankbesitzer, vom SYDBA und von aller User mit Betriebssystem Rootprivilegien gelöscht werden.
Textblobs
In Firebird 2.0 wurden viele Erweiterungen für Textblobs eingeführt. Weiteres finden Sie unter Enhancements for BLOBs.
Siehe auch:
deutschsprachig:
Blob
Blob Anzeige/Editor
Benutzerdefinierte Funktionen (UDF)
Firebird für Datenbankexperten: Episode 2 - Seitentypen
englischsprachig:
InterBase, Firebird and Blobs - a technical overview
Blob filter sample code
Firebird 2.1 Release Notes: Descriptive identifiers for BLOB subtypes
Stream blobs
zurück zum Seitenanfang
<< Benutzerdefinierte Funktionen - UDF | IBExpert | Role >>