17.00 - 17.05 - テーブル演算子のデータ構造 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

このセクションでは、テーブル演算子およびコントラクト関数作成者に提供する、FNC関数が使用するデータ構造体について説明します。これらのデータ構造体は、テーブル演算子全体または特定ストリームに関連するメタデータの保存や、FNC関数との情報の受け渡しに使用されます。

これらのデータ構造の詳細については、「sqltypes_td.hヘッダー ファイル」を参照してください。

FNC_TblOpColumnDef_t
カラムの定義はストリームと関連付けられます。このメタデータは、データ構造FNC_TblOpColumnDef_tの中で、列型のシーケンス、このシーケンスの長さ、および列数で表わされます。このデータ構造体のサイズは可変です。
parm_tx
列の型はデータ構造parm_txで表わされます。
この構造に含まれている一部の情報を以下にリストします。完全な定義については、sqltypes_td.hを参照してください。
  • 属性のデータ型。
  • 列の名前。
  • UDTの名前。
  • JSON格納形式。
  • 文字セット。
  • PERIOD型の粒度。
  • 固定長フィールドの最大サイズ。
  • CHAR、VARCHAR、またはBYTE型の長さ。
  • INTERVAL型の範囲。
  • TIME/TIMESTAMP型の精度。
  • DECIMAL(n, m)のnm
列の名前およびUDTの名前は、最大128文字の一連のUnicode、Latin、またはKanjiで表わされます。
dtype_en
dtype_en列挙定数は、テーブル演算子に列として渡すことができる利用可能なすべてのデータ型を定義します。
一部のサンプル値を以下にリストします。完全な定義については、sqltypes_td.hを参照してください。
  • CHAR_DT=1
  • VARBYTE_DT=4
  • SMALLINT_DT=8
  • REAL_DT=10
  • DECIMAL8_DT=14
  • DATE_DT=15
  • INTERVAL_MONTH_DT=20
  • TIMESTAMP_WTZ_DT=32
  • CLOB_REFERENCE_DT=34
  • UDT_DT = 35
  • 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
json_storage_en
json_storage_en enumは、JSON型の格納形式を定義します。
一部の有効値を以下にリストします。完全な定義については、sqltypes_td.hを参照してください。
  • JSON_INVALID_EN=-1
  • JSON_TEXT_EN=0
  • JSON_BSON_EN=1
  • JSON_UBJSON_EN=2
period_en
Period型の粒度はperiod_en enumによって定義されます。
一部の有効値を以下にリストします。完全な定義については、sqltypes_td.hを参照してください。
  • NOT_PERIOD = 0
  • PERIOD_DATE = 1
  • PERIOD_TIME = 2
  • PERIOD_TIME_WTZ = 3
  • PERIOD_TIMESTAMP = 4,
  • PERIOD_TIMESTAMP_WTZ = 5
FNC_TblOpHandle_t
ハンドルはストリームへのアクセスに使用される構造体であり、FNC関数との間の情報の受け渡しに使用できます。ストリームに関連するメタデータにアクセスする関数には、入力パラメータの1つとしてハンドルが必要です。ただし、演算子に関連するメタデータにアクセスする関数には、ハンドルは不要です。
ハンドルは、データ構造FNC_TblOpHandle_tで表わされます。
この構造に含まれている一部の情報を以下にリストします。完全な定義については、sqltypes_td.hを参照してください。
  • ストリーム番号。
  • ストリームの現在行に関する情報へのポインタ。

    このフィールドに格納されている情報を使用して現在行の属性に直接アクセスできる場合、オプション フィールドは0に設定されています。

  • ストリーム(入力または出力)の方向。
  • オプション(行内の属性に直接アクセスできるかどうか)。
  • 状態(ストリームはオープンされているか、クローズされているか)。
Stream_Direction_en
ストリームの方向は、Stream_Direction_en enumによって定義されます。
有効な値には以下が含まれます。完全な定義については、sqltypes_td.hを参照してください。
  • ISOUTPUT = 'W'
  • ISINPUT = 'R'
Stream_State_en
ストリームの状態は、Stream_State_en enumによって定義されます。
有効な値には以下が含まれます。完全な定義については、sqltypes_td.hを参照してください。
  • ISINIT = 1
  • ISOPEN = 2
  • ISCLOSE = 3
current_row_t
ストリームの現在行に関する情報はデータ構造current_row_tに格納されます。この情報には、直接アクセス可能な、個々の属性の所在地(columnptr)が含まれます。
この構造に含まれている一部の情報を以下にリストします。完全な定義については、sqltypes_td.hを参照してください。
  • 行データのバイト単位の長さ。
  • 本体のレコードの種類(パーセル フレーバーに一致)。
  • 標識の場所。現在のレコード内のフィールドのNULL標識へのポインタ。
  • 列データの場所。
  • 列データの長さ。
  • 未加工の行レコードの本文へのポインタ。
FNC_Names_tとFNC_Names_Ord_t
HASH BYおよびLOCAL ORDER BYメタデータを扱うFNC関数は、列名のシーケンスが入力/出力パラメータとなります。データ構造FNC_Names_tはこれらのシーケンスを保存し、FNC_Names_Ord_tは名前のシーケンスを順序(昇順または降順)とともに保存します。
これらの構造の定義についてはsqltypes_td.hを参照してください。
Key_info_t
カスタム句中のキーに関連する値を取得する関数は、データ構造Key_info_tを使用してこれらの値を保存します。
この構造に含まれている一部の情報を以下にリストします。完全な定義については、sqltypes_td.hを参照してください。
  • 値の数。
  • 値の合計サイズ(バイト単位)。
  • キーのサイズ。
  • 値のデータ型。
  • 値の配列。
  • キー。
UDT_Baseinfo_t
UDT_BaseInfo_t構造は、UDT/CDT入力列または出力列に関するメタデータを提供します。この構造は、テーブル演算子にのみ使用されます。
この構造に含まれている一部の情報を以下にリストします。完全な定義については、sqltypes_td.hを参照してください。
  • UDTの型。
  • ARRAY UDTの場合は、配列の次元、要素の数、および各要素についての情報。
  • 文字セット、データ型などのUDTまたはCDTの基本型についての情報。
  • JSON型の場合は、JSON格納形式。
  • DATASET型の場合は、DATASET格納形式。
  • STRUCTURED型UDTの属性の数。
  • UDTの名前。
  • 変換のためにUDTがマップされる定義データ型。
UDTまたはCDTの基本型に関する情報は、UDT_BaseInfo_t構造のbase_*フィールドで指定されます。次のテーブルに、UDTまたはCDTに対する基本データ型マッピングを示します。
SQL UDTまたはCDT 属性/要素/基本の型コード
DISTINCT型UDT

UDTの基礎となる事前定義データ型。

例えばCREATE TYPE myint as INTEGER FINAL;があるとします。

基本型のコードは、INTEGER_DTです。

STRUCTURED型UDT

STRUCTURED型UDTには多くの属性が含まれ、ネストされる場合があるため、属性はメタデータに保存されませんが、FNC_TblOpGetStructuredAttributeInfo関数を呼び出してアクセスします。

PERIOD型

BEGINとEND要素の日付/時刻の基本型。有効な値は、DATE_DT、TIME_DT、TIMESTAMP_DT、TIME_WTZ_DT、TIMESTAMP_WTZ_DTです。

XML

CLOB_REFERENCE_DT

Geospatial – ST_Geometry

CLOB_REFERENCE_DT

Geospatial – MBR

VARCHAR_DT

Geospatial – MBB

VARCHAR_DT

ARRAY/VARRAY

配列の要素のデータ型。

例えばCREATE TYPE intary as INTEGER ARRAY[10];があるとします。

要素の型コードは、INTEGER_DTです。

JSON

CLOB_REFERENCE_DT

BSON

BLOB_REFERENCE_DTまたはCLOB_REFERENCE_DT

DATASET

BLOB_REFERENCE_DTまたはCLOB_REFERENCE_DT

UDT_BaseInfo_t構造のbase_*フィールドは、STRUCTURED型UDTに対し入力されません。STRUCTURED型UDTには多くの属性が含まれ、ネストの任意レベルも含まれていることがあるため、STRUCTURED型UDTの属性に関するメタデータはFNC_TblOpGetStructuredAttributeInfo関数を使用して取得されます。FNC_TblOpGetStructuredAttributeInfoは、STRUCTURED型UDTのすべての属性に対応するattribute_info_t構造の配列を返します。
attribute_info_tとattribute_info_eon_t
attribute_info_tおよびattribute_info_eon_tデータ構造は、STRUCTURED型UDTの属性を説明します。
これらの属性に含まれている一部の情報を以下にリストします。完全な定義については、sqltypes_td.hを参照してください。
  • 属性の位置を示すインデックス。
  • 属性のデータ型。
  • 属性名。
  • UDT型標識。
  • UDT型名。
  • JSON型の場合は、JSON格納形式。
  • このデータ型の最大長。
  • LOBデータ型のLOB長さ。
  • 文字セット。
SMALLINT udt_indicator
UDTまたはCDTの型を示します。
一部のサンプル値を以下にリストします。完全な定義については、sqltypes_td.hを参照してください。
  • 0 = UDTまたはCDTでない
  • 1 = Array型
  • 2=STRUCTURED型
  • 3=JSON ENCODE AS TEXT
  • 4=DISTINCT型
  • 5=PERIOD型
  • 6=XML
  • 7=ST_Geometry
  • 8=MBR
  • 9=MBB
  • 10=DATASET STORAGE FORMAT AVRO
  • 11=DATASET STORAGE FORMAT CSV