# 冷热表用户函数
#### pg_obs_cold_refresh_time(table_name, time)
描述：用来修改冷热表的冷数据切换至OBS上的时间，默认为每日0点。
table_name为冷热表的表名，类型为name，time为数据切换任务调度时间，类型为Time。
返回值：SUCCESS，任务时间修改成功。
示例：
```
SELECT * FROM pg_obs_cold_refresh_time('lifecycle_table', '06:30:00');
pg_obs_cold_refresh_time
--------------------------
 SUCCESS
(1 row)
```
#### pg_refresh_storage()
描述：切换所有冷热表，将符合冷热切换规则的数据由热数据切换至冷数据（OBS中）。
返回值类型：int
返回值字段：
- success_count int：切换成功的表个数
- failed_count int：切换失败的表个数
示例：
```
SELECT * FROM pg_refresh_storage();
 success_count | failed_count
---------------+--------------
             1 |            0
(1 row)
```
#### pg_lifecycle_table_data_distribute(table_name)
描述：查看某个冷热表的数据分布情况。
table_name为表名，不可缺省。
返回值：record
示例：根据节点数量形成多条记录，如下示例为只有一个dn节点时w1表数据分布情况。
```
SELECT * FROM pg_catalog.pg_lifecycle_table_data_distribute('w1');
 schemaname | tablename | nodename | hotpartition | coldpartition | switchablepartition | hotdatasize | colddatasize | switchabledatasize 
------------+-----------+----------+--------------+---------------+---------------------+-------------+--------------+--------------------
 public     | w1        | dn_1     | p2           | p1            |                     | 80 KB       | 0 bytes      | 0 bytes
(1 row)
```
#### pg_lifecycle_node_data_distribute()
描述：查看所有冷热表数据分布情况。
返回值：record
示例：数据库中当前存在两个冷热表，其数据分布情况如下。
```
SELECT * FROM pg_catalog.pg_lifecycle_node_data_distribute();
 schemaname | tablename | nodename | hotpartition | coldpartition | switchablepartition | hotdatasize | colddatasize | switchabledatasize 
------------+-----------+----------+--------------+---------------+---------------------+-------------+--------------+--------------------
 public     | w1        | dn_1     | p2           | p1            |                     |       81920 |            0 |                  0
 public     | w2        | dn_1     | p2           | p1            |                     |       81920 |            0 |                  0
(2 rows)
```
#### refresh_hot_storage(relname text)
描述：用于将指定冷热表的所有分区数据全部刷到OBS上。返回的数值为执行该函数切换分区的个数。该函数仅8.2.1.100及以上版本支持。
参数：
relname：表名(指定冷热表的表名，使用其他非冷热表的表名，并不会报错，返回值为0)
返回值类型：integer
```
SELECT refresh_hot_storage('multi_temper_table');
 refresh_hot_storage
---------------------
            4
(1 row)
```
#### refresh_hot_storage(relname text, partname text)
描述：用于将指定冷热表的分区数据刷到OBS上。返回的数值为执行该函数切换分区的个数。该函数仅8.2.1.100及以上版本支持。
参数：
- relname：表名（指定冷热表的表名，使用其他非冷热表的表名，并不会报错，返回值为0）。
- partname：分区名（指定冷热表下的分区名）。
返回值类型：integer
```
SELECT refresh_hot_storage('multi_temper_table','p1');
 refresh_hot_storage
---------------------
            1
(1 row)
```
#### reload_cold_partition(relname text)
描述：用于将指定冷热表的所有冷分区转换成热分区。返回的数值为执行该函数切换分区的个数。该函数仅8.3.0及以上版本支持。
参数：
relname：表名（指定冷热表的表名，使用其他非冷热表的表名，并不会报错，返回值为0）。
返回值类型：integer
```
SELECT reload_cold_partition('multi_temper_table');
 reload_cold_partition
---------------------
            4
(1 row)
```
#### reload_cold_partition(relname text, partname text)
描述：用于将指定冷热表的特定冷分区转换成热分区。返回的数值为执行该函数切换分区的个数。该函数仅8.3.0及以上版本支持。
参数：
- relname：表名（指定冷热表的表名，使用其他非冷热表的表名，并不会报错，返回值为0）。
- partname：分区名（指定冷热表下的分区名）。
返回值类型：integer
```
SELECT reload_cold_partition('multi_temper_table','p1');
 reload_cold_partition
---------------------
            1
(1 row)
```
