COMPLEX_TYPES
包含有关内联复杂类型 (复杂类型) 的信息。
每个外部表中的每个复杂类型在内部都具有唯一的类型,即使这些类型在结构上是相同的(比如两个不同的 ROW(int,int))。此内联类型在创建使用该类型的表时创建,并在删除表时自动删除。内联复杂类型不能在其他表中共享或重用。
COMPLEX_TYPES 表中的每一行代表一种复杂类型中的一个组件(字段)。一个 ROW 的每个字段生成一行,一个 ARRAY 生成一行,一个 MAP 生成两行。
原生 (ROS) 表中使用的基元类型数组不包含在 COMPLEX_TYPES 表中。其包含在 TYPES 表中。
示例
以下示例显示了定义单个外部表后的类型和字段值。
=> CREATE EXTERNAL TABLE warehouse(
name VARCHAR, id_map MAP<INT,VARCHAR>,
data row(record INT, total FLOAT, description VARCHAR(100)),
prices ARRAY[INT], comment VARCHAR(200), sales_total FLOAT, storeID INT)
AS COPY FROM ... PARQUET;
=> SELECT type_id,type_kind,type_name,field_id,field_name,field_type_name,field_position
FROM COMPLEX_TYPES ORDER BY type_id,field_name;
type_id | type_kind | type_name | field_id | field_name | field_type_name | field_position
-------------------+-----------+-----------------------+----------+-------------+-----------------+----------------
45035996274278280 | Map | _ct_45035996274278280 | 6 | key | int | 0
45035996274278280 | Map | _ct_45035996274278280 | 9 | value | varchar(80) | 1
45035996274278282 | Row | _ct_45035996274278282 | 9 | description | varchar(80) | 2
45035996274278282 | Row | _ct_45035996274278282 | 6 | record | int | 0
45035996274278282 | Row | _ct_45035996274278282 | 7 | total | float | 1
45035996274278284 | Array | _ct_45035996274278284 | 6 | | int | 0
(6 rows)