
# PG_ATTRIBUTE
PG_ATTRIBUTE系统表存储关于表字段的信息。
表1PG_ATTRIBUTE字段 
| 名称            | 类型          | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| attrelid      | oid         | 该字段所属的表。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| attname       | name        | 字段名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| atttypid      | oid         | 字段类型。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| attstattarget | integer     | 控制ANALYZE为该字段设置的统计信息采样大小。 - -1，表示未设置，使用全局参数[default_statistics_target](https://support.huaweicloud.com/devg-dws/dws_04_0912.html#ZH-CN_TOPIC_0000001764650460__sa5c1527051e54fbdb6c5346d54bcbf5a)的值（默认值为100）计算采样大小。  - 0，表示该列不进行采样。  - 大于0，表示使用固定值计算采样大小，该值 \* 300作为随机抽样的大小。例如，设置为200时，采样大小为200\* 300。  - 小于-1，表示使用百分比方式计算采样大小， 采样率=(attstattarget + 1) \* (-1) /100。   对于标量数据类型，ATTSTATTARGET既是要收集的"最常用数值"的目标数目，也是要创建的柱状图的目标数量。 |
| attlen        | smallint    | 是本字段类型pg_type.typlen的复制。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| attnum        | smallint    | 字段编号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| attndims      | integer     | 如果该字段是数组，该值表示数组的维数，否则是0 。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| attcacheoff   | integer     | 在磁盘上总是-1 ，但是如果加载入内存中的行描述器中，它可能会被更新为缓冲在行中字段的偏移量。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| atttypmod     | integer     | 记录创建新表时支持的类型特定的数据（比如，varchar字段的最大长度）。它传递给类型相关的输入和长度转换函数当做第三个参数。其值对那些不需要ATTTYPMOD的类型通常为-1。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| attbyval      | boolean     | pg_type.typbyval字段值的复制。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| attstorage    | "char"      | pg_type.typstorage字段值的复制。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| attalign      | "char"      | pg_type.typalign字段值的复制。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| attnotnull    | boolean     | 代表一个非空约束。可以改变这个字段来打开或者关闭该约束。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| atthasdef     | boolean     | 该字段是否存在缺省值，此时它对应pg_attrdef表里实际定义此值的记录。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| attisdropped  | boolean     | 该字段是否已经被删除，不再有效。如果被删除，该字段物理上仍然存在表中，但会被分析器忽略，因此不能再通过SQL访问。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| attislocal    | boolean     | 该字段是否局部定义在对象中。一个字段可以同时是局部定义和继承的。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| attcmprmode   | tinyint     | 对某一列指定压缩方式。压缩方式包括： - ATT_CMPR_NOCOMPRESS  - ATT_CMPR_DELTA  - ATT_CMPR_DICTIONARY  - ATT_CMPR_PREFIX  - ATT_CMPR_NUMSTR                  |
| attinhcount   | integer     | 该字段所拥有的直接父表的个数。如果一个字段的父表个数非零，则它就不能被删除或重命名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| attcollation  | oid         | 对此列定义的校对列。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| attacl        | aclitem\[\] | 列级访问权限控制。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| attoptions    | text\[\]    | 属性级可选项。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| attfdwoptions | text\[\]    | 属性级外数据选项。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| attinitdefval | bytea       | 存储了此列默认的值表达式。行存表的ADD COLUMN需要使用此字段。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| attkvtype     | tinyint     | 该字段的kv_type属性。取值如下： - 0，表示默认值，用于非时序表。  - 1，表示维度属性(TSTAG)，仅用于时序表。  - 2，表示指标属性(TSFIELD)，仅用于时序表。  - 3，时间属性(TSTIME)，仅用于时序表。                                                                                                                                                                                                                                                                                                                                         |
   
#### 应用示例
查询指定表中包含的字段名和字段编号。t1和public分别替换为实际的表名和schema名称。
```
SELECT attname,attnum FROM pg_attribute WHERE attrelid=(SELECT pg_class.oid FROM pg_class JOIN pg_namespace ON relnamespace=pg_namespace.oid WHERE relname='t1' and nspname='public') and attnum>0; 
     attname      | attnum
------------------+--------
 product_id       |      1
 product_name     |      2
 product_quantity |      3
(3 rows)
```
