ユーザー定義関数
CREATE/REPLACE FUNCTION文を使用して1つ以上のパラメータを含むユーザー定義関数(UDF)、またはサポートされている格納形式のDATASET戻り型を作成します。パラメータや戻り型はスカラー、集約、およびテーブルUDF、およびSQL UDFでサポートされています。戻り型がSQL UDFの戻り型の1つとして指定されている場合、RETURN式は結果が1つの型となるSQL文となります。
UDFのパラメータとしてのDATASET型はC言語、CPP言語、およびJAVA言語ではサポートされていますが、R言語ではサポートされていません。
以下のアクションはDATASET型用のデータ ディクショナリCREATE FUNCTION文で発生し、CREATE FUNCTION文で通常実行されるディクショナリの更新に加えて発生します。
- DATASETフィールドに関するメタデータ情報を記録するためにDBC.TVField に挿入される行はDATASET型で、UDTといくつかのエントリを共有します。FieldTypeは'DT'で、TypeIdはDATASET型に割り当てられた静的型IDに対応します。
テーブル演算子
DATASET型は、C言語およびJava言語のユーザー定義テーブル演算子でサポートされています。メタデータは外部タイプ コードDATASET_AVRO_DTまたはDATASET_CSV_DTを使用してテーブル演算子コントラクト関数に渡されます。dtype_enの型コードは次のものが含まれます。完全な定義については、sqltypes_td.hを参照してください。
typedef enum dtype_en { UNDEF_DT=0, CHAR_DT=1, VARCHAR_DT=2, BYTE_DT=3, VARBYTE_DT=4, GRAPHIC_DT=5, VARGRAPHIC_DT=6, BYTEINT_DT=7, SMALLINT_DT=8, INTEGER_DT=9, BIGINT_DT = 36, REAL_DT=10, DECIMAL1_DT=11,' DECIMAL2_DT=12, DECIMAL4_DT=13, DECIMAL8_DT=14, DECIMAL16_DT=37, DATE_DT=15, TIME_DT=16, TIMESTAMP_DT=17, INTERVAL_YEAR_DT=18, INTERVAL_YTM_DT=19, INTERVAL_MONTH_DT=20, INTERVAL_DAY_DT=21, INTERVAL_DTH_DT=22, INTERVAL_DTM_DT=23, INTERVAL_DTS_DT=24, INTERVAL_HOUR_DT=25, INTERVAL_HTM_DT=26, INTERVAL_HTS_DT=27, INTERVAL_MINUTE_DT=28, INTERVAL_MTS_DT=29, INTERVAL_SECOND_DT=30, TIME_WTZ_DT=31, TIMESTAMP_WTZ_DT=32, BLOB_REFERENCE_DT=33, CLOB_REFERENCE_DT=34, UDT_DT=35, /* The 8 byte integer type (BIGINT_DT) and * the 16 byte decimal type (DECIMAL16_DT) * are located above and have the following * values: * * BIGINT_DT=36 * DECIMAL16_DT=37 */ NUMBER_DT=38, PERIOD_DT=39, JSON_DT=40, DATASET_AVRO_DT=41, ST_GEOMETRY_DT=42, MBR_DT=43, MBB_DT=44, ARRAY_DT=45, XML_DT = 46, DATASET_CSV_DT=47, FNC_DATATYPESETSIZE=48 } dtype_en;
AVROの場合、複合型は、基本型であるDATASET_AVRO_DT → BLOB_REFERENCE_DTにマッピングされます。CSVの場合、複合型は、基本型であるDATASET_CSV_DT → CLOB_REFERENCE_DTにマッピングされます。
入力データ値がテーブル演算子に送信されると、データは現在のデフォルト変換を経て転送されます。以下のテーブルに示すように、使用可能な変換型ごとにUDT_BaseInfo_t.transform_info構造体が生成されます。
変換型 | データ型 | 列 | … | Size.length |
---|---|---|---|---|
TD_DATASET_AVRO_VARBYTE | VARBYTE_DT | <列の名前> | データ サイズ | |
TD_DATASET_AVRO_BLOB | BLOB_REFERENCE_DT | <列の名前> | データ サイズ |
変換型 | データ型 | 列 | ..。 | 文字セット | ..。 | Size.length |
---|---|---|---|---|---|---|
TD_CSV_CLOB | CLOB_REFERENCE_DT | <列の名前> | データ サイズ |
「変換オフ」機能はありません。UDT_BaseInfo_t構造体のudt_indicatorメンバー値は、DATASET格納形式を識別します。
10==DATASET STORAGE FORMAT AVRO
11==DATASET STORAGE FORMAT CSV
CSVの場合、UDT_BaseInfo_tのcharsetフィールドは、文字セットをLATINまたはUNICODEのいずれかとして判別します。
外部ストアド プロシージャ
CREATE/REPLACE PROCEDURE文が拡張され、サポートされている格納形式のDATASET型である1つ以上のパラメータを含む外部ストアド プロシージャを作成できます。これらの型を使用して、IN、OUT、またはINOUTパラメータを定義します。
外部ストアド プロシージャへのIN、OUT、またはINOUTパラメータとしてのDATASET型は、C言語、CPP言語、またはJAVA言語でサポートされています。R言語オプションはサポートされていません。
- DATASETフィールドに関するメタデータ情報を記録するためにDBC.TVFieldに通常挿入される行はDATASET型に強化され、UDTといくつかのエントリを共有します。FieldTypeは'DT'で、TypeIdはDATASET型に割り当てられた静的型IDに対応します。