反復実行間でデータを保持するために使用するクラス - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQL外部ルーチン プログラミング

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/uhh1512082756414.ditamap
dita:ditavalPath
ja-JP/uhh1512082756414.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

Tbl.allocCtx()がクラス オブジェクトをバイナリ ストリームにシリアライズして、そのための記憶域を割り当てられるようにするには、JavaのテーブルUDFが中間データを保持するのに使用するクラスは、java.io.Serializableインターフェースを実装している必要があります(クラスはシリアル化できる必要があります)。(クラスがシリアライズ可能であること。)シリアライズされるバイナリ ストリームのサイズにより、割り当てられる中間記憶域のサイズが決まります。サイズは、オブジェクトのデータがすべて入れられる大きさである必要があります。

Javaでは、シリアライズ可能なクラスにより、デフォルトのメソッドであるwriteObject(java.io.ObjectOutputStreamの出力)とreadObject(java.io.ObjectInputStreamの入力)がカスタマイズされた実装でオーバーライトされます。このようなクラスのオブジェクトは、シリアライズ中に自動的にwriteObject()を呼び出し、シリアライズの解除中にreadObject()を呼び出します。

JavaのUDFテーブルが中間データの保持に使用するオブジェクトにオブジェクト型フィールドがある場合、そのUDFはTbl.allocCtx()を呼び出す前にそれらのフィールドをNULL以外の値に初期化する必要があります。この処理を行なう方法の1つは、writeObject()メソッドを実装してフィールドにNULLが無いかをチェックし、必要に応じて初期化することです。

同様に、オブジェクトに配列型フィールドがある場合、UDFは、Tbl.allocCtx()を呼び出す前に、配列自体および配列の各要素をNULL以外の値に初期設定する必要があります。