Blob ディスクリプタ

提供: InterBase

Blob データでの作業 へ戻る


Blob ディスクリプタは、Blob 情報への動的アクセスを提供するために使用されます。たとえば、テキスト Blob データの文字セット情報や、テキスト/非テキストの Blob データのサブタイプ情報など、フィルタリング(変換)で使用する Blob データについての情報を格納するのに使用できます。Blob を読み書きする際、フィルタが使用される場合には 2 つの Blob ディスクリプタが必要となります: 1 つは、フィルタのソース データを記述するもの、もう 1 つは、ターゲットを記述するものです。

Blob ディスクリプタは、ibase.h ヘッダー ファイルで定義されている構造体で、次のようになります:


typedef struct {
short blob_desc_version /* version of descriptor */
short blob_desc_subtype; /* type of Blob data */
short blob_desc_charset; /* character set */
short blob_desc_segment_size; /* segment size */
unsigned char blob_desc_field_name [METADATALENGTH]; /* Blob column name */
unsigned char blob_desc_relation_name [METADATALENGTH];   /* table name */
} ISC_BLOB_DESC_V2;
メモ: ISC_BLOB_DESC_V2 は、68 バイトのメタデータ名に対応します。古い ISC_BLOB_DESC ディスクリプタでは、32 バイトの名前までしか対応できません。これは、後方互換性のために維持されており、今後廃止される予定です。

blob_desc_version フィールドは isc_blob_default_desc2()isc_blob_lookup_desc2()isc_blob_set_desc2() によって、BLB_DESC_CURRENT_VERSION に設定されます。isc_blob_gen_bpb2() では、手動で、blob_desc_version フィールド BLB_DESC_CURRENT_VERSION に設定することが必要です。

METADATALENGTH は、ibase.h で定義されています。

InterBase で認識される文字セットの詳細については、『言語リファレンス ガイド』 を参照してください。

Blob のセグメント サイズは、アプリケーションが Blob に対して読み書きすることができる最大バイト数です。このサイズで、自分自身のバッファに割り当てることができます。

フィールド blob_desc_relation_nameblob_desc_field_name には、null 終端の文字列が格納されています。