ユーザー定義関数
CREATE/REPLACE FUNCTION文を使用して1つ以上のパラメータを含むユーザー定義関数(UDF)、またはサポートされている格納形式のDATASET戻り型を作成します。パラメータや戻り型はスカラー、集約、およびテーブルUDF、およびSQL UDFでサポートされています。戻り型がSQL UDFの戻り型の1つとして指定されている場合、RETURN式は結果が1つの型となるSQL文となります。
UDFのパラメータとしてのDATASET型はC言語、CPP言語、およびJAVA言語ではサポートされていますが、R言語ではサポートされていません。
- 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に対応します。