BYTE、VARBYTE、CHARACTER、VARCHAR、GRAPHIC、PERIOD、DISTINCT型UDT(ARRAY/VARRAYを含む)、BLOB、CLOB、XML、地理空間、BLOBベースのDISTINCT型UDT、CLOBベースのDISTINCT型UDT、XMLベースのDISTINCT型UDTの各列値をアルゴリズム的に圧縮または圧縮解除するのに使用する外部UDFのSQL関数定義を作成する場合は、FOR COMPRESSまたはFOR DECOMPRESSをそれぞれ指定する必要があります。関数定義にこれらのオプションを指定しない場合、関数定義を使用して列の値をアルゴリズムで圧縮または圧縮解除することはできません。
アルゴリズム圧縮は、DISTINCT型UDTとSTRUCTURED型UDTに使用できます。
コーディングする圧縮ルーチンと圧縮解除ルーチンは、外部スカラーUDFと組み込みサービス スカラーUDFのいずれかが可能です。
アルゴリズム圧縮に使用される組み込みサービスUDFは、PERIOD、ARRAY、VARRAY、地理空間などの内部UDT型に使用します。STRUCTURED型UDTに使用することはできません。
外部UDFは通常、DISTINCT型UDTに使用されます。
アルゴリズム的に圧縮された列のアクセスまたは記述は、適切なルーチンを持つ列参照を暗黙的に示します。
TD_LZ_COMPRESSおよびTD_LZ_DECOMPRESS UDFの詳細は、複数値圧縮のみを使用する列値の圧縮を参照してください。
UDTデータのアルゴリズム圧縮と圧縮解除を実装するためのUDFの作成に適用されるルールについて、以下のトピックを参照してください。
圧縮UDF
圧縮UDFは、以下のシグネチャを持っていなければなりません。
- サポートされるいずれかのUDTデータ型の単一の入力パラメータが存在しなければなりません。
- 圧縮関数のパラメータ データ型は、UDT列のデータ型と正確に一致している必要があります。
- 圧縮関数のUDTパラメータ データ型は、圧縮解除関数の戻り値のデータ型と正確に一致している必要があります。
- 戻り値のデータ型はVARBYTE(n)でなければなりません。
- 圧縮関数VARBYTE(n)の戻り値の長さnは、圧縮解除関数VARBYTE(n)パラメータの長さと正確に一致している必要があります。
圧縮解除UDF
圧縮解除UDFは、以下のシグネチャを持っていなければなりません。
- 単一の入力パラメータで、データ型がVARBYTE(n)でなければなりません。
- 圧縮解除関数の戻り値のデータ型は、UDT列のデータ型と正確に一致している必要があります。
- 圧縮解除関数の戻り値のデータ型は、圧縮関数のUDTパラメータ データ型と正確に一致している必要があります。
- 圧縮解除関数VARBYTE(n)の戻り値の長さnは、圧縮関数VARBYTE(n)パラメータの長さと正確に一致している必要があります。
- 圧縮解除UDFの出力は、サポートされるUDTデータ型の1つでなければなりません。