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)