16.20 - 例: フラグ設定の組み合わせ - Teradata Vantage NewSQL Engine

Teradata Vantage™ データ タイプおよびリテラル

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1143-162K-JPN

次に、ArrayTransformsOffフラグがYに設定されている場合のARRAYデータ型の値の例を示します。 これらの例は、最も一般的に使用されるODBC/.NETおよびJDBCの組み合わせに焦点を合わせています。

  • UDTTransformsOffの設定はY、PeriodStructOnの設定はY、またArrayTransformsOffの設定はY (この例ではYYY)
  • UDTTransformsOffの設定はN、PeriodStructOnの設定はN、またArrayTransformsOffの設定はY (この例ではNNY)

例1: NULL構成要素を1つ含む1次元配列

/*Oracle-compatible and TD syntax respectively: */
Create Type intarray as VARRAY(3) OF Int;
Create Type intarray as Int Array[3];

Create Table tab1 (id int, phonenumber intarray);
Ins into tab1(10, NEW intarray(111222333, NULL, 123456789));
Sel phonenumber from tab1;

YYYとNNYのどちらの場合も、SELECTクエリーのデータ パーセルに含まれるパーセル本体フィールドの内容は次のようになります。

  1. NULL標識ビットは(n+7)/8 = (1+7)/8 = 1バイトになり、"00000000"と表現されます。
  2. 長さフィールドは2バイトのSMALLINTの17になります。
  3. 現在のカーディナリティ フィールドは、4バイトの符号無し整数の3になります。
  4. Elements-Null-Indicatorビットは、(3+7)/8= 1バイトになり、"01000000"と表現されます(2番目の構成要素がNULLであるため)。
  5. 配列構成要素のデータは、整数111222333に、ダミーのNULL値の整数0と整数の123456789を続けたものの2進表現になります。

例2: UDT要素型を含む1次元配列

この例では、NULL属性を持つUDT要素型の1次元配列を示します。

CREATE TYPE employee AS (name VARCHAR(10),
                         employee_id INTEGER)
...;
/*Oracle-compatible and TD syntax respectively: */
CREATE TYPE emparray AS VARRAY(20) OF employee;
CREATE TYPE emparray AS employee ARRAY[20];
Create Table tab2 (dept_no int, dept_emps emparray);
Ins into tab2(10, NEW emparray (NEW employee('Mike', NULL), NEW
employee('Mark', 101)));
Sel dept_emps from tab2;

YYYの場合、SELECTクエリーのデータ パーセルに含まれるパーセル本体フィールドの内容は次のようになります。

  1. NULL標識ビットは(n+7)/8 = (1+7)/8 = 1バイトになり、"00000000"と表現されます。
  2. 長さフィールドは2バイトのSMALLINTの25になります。
  3. 現在のカーディナリティ フィールドは、4バイトの符号無し整数の2になります。
  4. Elements-Null-Indicatorビットは、(3+3+7)/8= 1バイトになり、"00100000"と表現されます(最初の構成要素の2番目の属性がNULLであるため)。
  5. 配列構成要素のデータは、文字列'Mike'に、ダミーのNULL値の整数0、文字列'Mark'と整数の101を続けたものの2進表現になります。

NNYの場合、NEW employee ('Mike', NULL)が'Mike-NULL'に変換され、NEW employee ('Mark', 101)が'Mark-101'に変換されると仮定すると、SELECTクエリーのデータ パーセルに含まれるパーセル本体フィールドの内容は次のようになります。

  1. NULL標識ビットは(n+7)/8 = (1+7)/8 = 1バイトになり、"00000000"と表現されます。
  2. 長さフィールドは2バイトのSMALLINTの26になります。
  3. 現在のカーディナリティ フィールドは、4バイトの符号無し整数の2になります。
  4. Elements-Null-Indicatorビットは(2+7)/8= 1バイトになり、"00000000"と表現されます。
  5. 配列構成要素のデータは、文字列'Mike-NULL'に文字列'Mark-101'を続けたものの2進表現になります。

例3: NULL構成要素を1つ含む多次元配列

/*Oracle-compatible and TD syntax respectively: */
Create Type TwoD_intarray as VARRAY(2)(2) OF Integer;
Create Type TwoD_intarray as Integer Array[2][2];

Create Table tab3 (id int, simulation TwoD_intarray);
Ins into tab3(10, NEW TwoD_intarray(111222333, 123456789, NULL, 777777777));
Sel simulation from tab3;

YYYとNNYのどちらの場合も、上記のクエリーのデータ パーセルに含まれるパーセル本体フィールドの内容は次のようになります。

  1. NULL標識ビットは(n+7)/8 = (1+7)/8 = 1バイトになり、"00000000"と表現されます。
  2. 長さフィールドは2バイトのSMALLINTの21になります。
  3. 現在のカーディナリティ フィールドは、4バイトの符号無し整数の4になります。
  4. Elements-Null-Indicatorビットは(4+7)/8= 1バイトになり、"00100000"と表現されます。
  5. 配列構成要素のデータは、整数111222333に、整数123456789、ダミーのNULL値の整数0と整数777777777を続けたものの2進表現になります。