テーブル演算子は入力行に対して反復実行する必要があります。したがって、演算子は次のように構成してください。
- 入力ストリームを開く
- 行を反復処理
- ストリームをクローズ
CREATE FUNCTION文のSQLTABLEパラメータ スタイルを指定して、テーブル演算子を定義します。このパラメータ スタイルでは、テーブル演算子はIndicData形式で入力行を渡され、デフォルトではIndicData形式で出力行を返すことになっています。
入力ストリーム
- 1回のテーブル演算子の呼び出し内で、入力ストリームを複数回オープンおよびクローズすることができます。読み取り位置はオープンの度にストリームの開始位置にリセットされます。
- 選択的に、入力ストリームを決してオープンしないことや、入力行のサブセットのみを読み取りまたはオープンし、入力ストリームを決して読み取らないことを選択することが可能です。
- オープンしていない入力ストリームをクローズしたり、すでにオープンしている入力ストリームをオープンしたり、またはファイルの終端を超えて読み取ることはできません。
出力ストリーム
- 1回のテーブル演算子の呼び出し内で、出力ストリームを複数回オープンおよびクローズすることができます。
- 選択的に、出力ストリームを決してオープンしないことや、出力ストリームをオープンはするが決して書き込みをしないことを選択することが可能です。
- 開いていない出力ストリームをクローズしたり、すでにオープンしている出力ストリームを開いたり、または出力ストリームをクローズしてから再び開くことはできません。
完了決定メカニズムは、テーブル演算子を終了する際に設定します。
PARTITION BY句が指定されている場合には、ストリームのオープンやクローズは、パーティション内の行を指します。例えば、ファイルの終端はパーティション内の最終行の読み取り後に発生します。PARTITION BY が指定されていない場合には、ストリームのオープンやクローズは、AMP 内の行を指します。
テーブル演算子作成者は、次のSQLTABLE イテレータ関数を使用できます。
- FNC_TblOpGetStreamCount
- FNC_TblOpOpen
- FNC_TblOpRead
- FNC_TblOpGetAttributeByNdx
- FNC_TblOpBindAttributeByNdx
- FNC_TblOpWrite
- FNC_TblOpClose
これらの関数についての詳細は、<テーブル演算子インターフェース>を参照してください。