Blob ディスクリプタ
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_name
と blob_desc_field_name
には、null 終端の文字列が格納されています。