外部事前フィルタライブラリが、全文インデックスのデータ設定または更新のためにドキュメントの事前フィルタリングを実行する場合に実装する必要があるインタフェース。
typedef struct a_text_source { a_sql_uint32 ( SQL_CALLBACK *begin_document )( a_text_source *This ); a_sql_uint32 ( SQL_CALLBACK *get_next_piece )( a_text_source *This , unsigned char ** buffer , a_sql_uint32* len ); a_sql_uint32 ( SQL_CALLBACK *end_document )( a_text_source *This); a_sql_uint64 ( SQL_CALLBACK *get_document_size )( a_text_source *This ); a_sql_uint32 ( SQL_CALLBACK *fini_all )( a_text_source *This ); a_server_context *_context; // Only one of the following two members can have a valid pointer in a given implementation. // These members point to the current module's producer a_text_source *_my_text_producer; a_word_source *_my_word_producer; // Following members have been reserved for // future use ONLY a_text_source *_my_text_consumer; a_word_source *_my_word_consumer; } a_text_source, *p_text_source; |
メンバー | 型 | 説明 |
---|---|---|
begin_document | a_sql_uint32 |
ドキュメントの処理に必要なセットアップ手順を実行します。このメソッドは、成功の場合は 0 を返し、エラーが発生したか、使用可能なドキュメントがなくなった場合は 1 を返します。 |
get_next_piece | a_sql_uint32 |
フィルタされた入力バイトストリームのフラグメントをフラグメントの長さとともに返します。このメソッドは、指定されたドキュメントに対して複数回呼び出され、ドキュメントのすべての入力データが消費されるか、エラーが発生するまで、各呼び出しでドキュメントの後続のチャンクを返す必要があります。 バッファは、生成されたデータを指すように事前フィルタによって入力される OUT パラメータです。メモリは事前フィルタによって管理されます。 len は、生成されたデータの長さを示す OUT パラメータです。 |
end_document | a_sql_uint32 |
指定されたドキュメントに対するフィルタリングの完了を示し、必要に応じてドキュメント固有のクリーンアップを実行します。 |
get_document_size | a_sql_uint64 |
事前フィルタによって生成されたドキュメントの合計長 (バイト単位) を返します。a_text_source オブジェクトは、現在のドキュメントのこれまでに生成されたバイトの合計数の現在の数を保持する必要があります。 |
fini_all | a_sql_uint32 |
すべてのドキュメントの処理が完了し、パイプラインが閉じられようとしているときにデータベースサーバによって呼び出されます。fini_all では最後のクリーンアップ手順が実行されます。 |
_context | a_server_context * |
このメンバーを使用して、a_init_pre_filter 構造体内のエントリポイント関数に提供されたデータベースサーバのコンテキストを保持します。事前フィルタモジュールではこのコンテキストを使用してデータベースサーバとの直接通信を確立します。 |
_my_text_producer | a_text_source * |
このメンバーを使用して、a_init_pre_filter 構造体内のエントリポイント関数に提供された事前フィルタの a_text_source プロデューサーへのポインタを保存します。このポインタは、文字セット変換が必要な場合は、エントリポイント関数が実行された後に、データベースサーバによって置き換えられる可能性があります。このため、テキストプロデューサーへのこのポインタのみが事前フィルタによって使用されます。 |
_my_word_producer | a_word_source * |
今後の使用のために予約されており、NULL に初期化する必要があります。 |
_my_text_consumer | a_text_source * |
今後の使用のために予約されており、NULL に初期化する必要があります。 |
_my_word_consumer | a_word_source * |
今後の使用のために予約されており、NULL に初期化する必要があります。 |
a_text_source インタフェースはストリームベースのデータです。データはプロデューサーから順番に引き出され、各バイトは 1 回だけ表示されます。
a_text_source インタフェースは、SQL Anywhere インストールディレクトリの SDK\Include サブフォルダのヘッダファイル extpfapiv1.h によって定義されます。
複数の関数の呼び出しにまたがるオペレーティングシステムの同期プリミティブは、外部ライブラリに保持しないようにしてください。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |