
# 其他DDL
#### TRUNCATE
TRUNCATE表时会清除行存数据，同时级联处理加载的IMCV列存数据，不删除IMCV元信息。
TRUNCATE分区时会清除行存表分区数据，同时级联处理该分区的IMCV列存数据，不删除IMCV元信息。
示例：
```
htapdb=# CREATE TABLE htap_test(
          id int,
          dept_id int,
          salary int,
          name varchar(20),
          comments varchar(30)) WITH (storage_type = ustore) DISTRIBUTE BY HASH(id);
CREATE TABLE
htapdb=# INSERT INTO htap_test VALUES (generate_series(1,30), 1, 8000, 'Alice', 'for test');
INSERT 0 30
htapdb=# ALTER TABLE htap_test COLVIEW;
ALTER TABLE
htapdb=# SELECT count(*) FROM htap_test;
 count
-------
    30
(1 row)
htapdb=# SELECT node_name, rel_name, partition_name, imcvnattr, imcvkey, rowgroup_num, cu_num_in_mem, cu_mem_size, cu_num_in_disk, cu_disk_size FROM gs_global_imcv_info() ORDER BY node_name,rel_name;
  node_name   | rel_name  | partition_name | imcvnattr |  imcvkey  | rowgroup_num | cu_num_in_mem | cu_mem_size | cu_num_in_disk | cu_disk_size 
--------------+-----------+----------------+-----------+-----------+--------------+---------------+-------------+----------------+--------------
 dn_6001_6002 | htap_test |                |         5 | 1 2 3 4 5 |            1 |             6 |        8099 |              0 |            0
 dn_6003_6004 | htap_test |                |         5 | 1 2 3 4 5 |            1 |             6 |        8099 |              0 |            0
(2 rows)
htapdb=# TRUNCATE TABLE htap_test;
TRUNCATE TABLE
htapdb=# SELECT count(*) FROM htap_test;
 count
-------
     0
(1 row)
--TRUNCATE不删除IMCV元信息，从系统函数gs_global_imcv_info()中仍能查询到记录。
htapdb=# SELECT node_name, rel_name, partition_name, imcvnattr, imcvkey, rowgroup_num, cu_num_in_mem, cu_mem_size, cu_num_in_disk, cu_disk_size FROM gs_global_imcv_info() ORDER BY node_name,rel_name;
  node_name   | rel_name  | partition_name | imcvnattr |  imcvkey  | rowgroup_num | cu_num_in_mem | cu_mem_size | cu_num_in_disk | cu_disk_size 
--------------+-----------+----------------+-----------+-----------+--------------+---------------+-------------+----------------+--------------
 dn_6001_6002 | htap_test |                |         5 | 1 2 3 4 5 |            0 |             0 |           0 |              0 |            0
 dn_6003_6004 | htap_test |                |         5 | 1 2 3 4 5 |            0 |             0 |           0 |              0 |            0
(2 rows)
htapdb=# DROP TABLE htap_test;
DROP TABLE
```
#### DROP
DROP表时会删除行存表数据，同时级联删除该表的所有IMCV列存数据，以及对应的IMCV元信息。
DROP分区时会删除行存表的对应分区数据，同时级联删除该分区的IMCV列存数据，以及对应的IMCV元信息。
示例：
```
htapdb=# CREATE TABLE htap_test(
         id int,
         dept_id int,
         salary int,
         name varchar(20),
         comments varchar(30)) with (storage_type = ustore) DISTRIBUTE BY HASH(id);
CREATE TABLE
htapdb=# INSERT INTO htap_test VALUES (generate_series(1,30), 1, 8000, 'Alice', 'for test');
INSERT 0 30
htapdb=# ALTER TABLE htap_test COLVIEW;
ALTER TABLE
htapdb=# SELECT count(*) FROM htap_test;
 count
-------
    30
(1 row)
htapdb=# SELECT node_name, rel_name, partition_name, imcvnattr, imcvkey, rowgroup_num, cu_num_in_mem, cu_mem_size, cu_num_in_disk, cu_disk_size FROM gs_global_imcv_info() ORDER BY node_name,rel_name;
  node_name   | rel_name  | partition_name | imcvnattr |  imcvkey  | rowgroup_num | cu_num_in_mem | cu_mem_size | cu_num_in_disk | cu_disk_size 
--------------+-----------+----------------+-----------+-----------+--------------+---------------+-------------+----------------+--------------
 dn_6001_6002 | htap_test |                |         5 | 1 2 3 4 5 |            0 |             0 |           0 |              0 |            0
 dn_6003_6004 | htap_test |                |         5 | 1 2 3 4 5 |            0 |             0 |           0 |              0 |            0
(2 rows)
htapdb=# DROP TABLE htap_test;
DROP TABLE
htapdb=# SELECT node_name, rel_name, partition_name, imcvnattr, imcvkey, rowgroup_num, cu_num_in_mem, cu_mem_size, cu_num_in_disk, cu_disk_size FROM gs_global_imcv_info() ORDER BY node_name,rel_name;
 node_name | rel_name | partition_name | imcvnattr | imcvkey | rowgroup_num | cu_num_in_mem | cu_mem_size | cu_num_in_disk | cu_disk_size 
-----------+----------+----------------+-----------+---------+--------------+---------------+-------------+----------------+--------------
(0 rows)
htapdb=# DROP TABLE htap_test;
DROP TABLE
```
#### VACUUM FULL
VACUUM FULL会在对行存表进行处理的同时级联处理列存数据。
对于HTAP列存数据的处理包含两个阶段：
1. 删除原有的IMCV信息。
2. 重建IMCV，通过重新加载实现IMCV列存数据内存紧凑。
示例：
```
htapdb=# CREATE TABLE htap_test(
         id int,
         dept_id int,
         salary int,
         name varchar(20),
         comments varchar(30)) WITH (storage_type = ustore) DISTRIBUTE BY HASH(id);
CREATE TABLE
htapdb=# INSERT INTO htap_test VALUES (generate_series(1,30), 1, 8000, 'Alice', 'for test');
INSERT 0 30
htapdb=# ALTER TABLE htap_test COLVIEW;
ALTER TABLE
htapdb=# SELECT node_name, rel_name, partition_name, imcvnattr, imcvkey, rowgroup_num, cu_num_in_mem, cu_mem_size, cu_num_in_disk, cu_disk_size FROM gs_global_imcv_info() ORDER BY node_name,rel_name;
  node_name   | rel_name  | partition_name | imcvnattr |  imcvkey  | rowgroup_num | cu_num_in_mem | cu_mem_size | cu_num_in_disk | cu_disk_size 
--------------+-----------+----------------+-----------+-----------+--------------+---------------+-------------+----------------+--------------
 dn_6001_6002 | htap_test |                |         5 | 1 2 3 4 5 |            1 |             6 |        8099 |              0 |            0
 dn_6003_6004 | htap_test |                |         5 | 1 2 3 4 5 |            1 |             6 |        8099 |              0 |            0
(2 rows)
htapdb=# DELETE FROM htap_test WHERE id<10;
DELETE 9
htapdb=# VACUUM FULL htap_test;
VACUUM
htapdb=# SELECT node_name, rel_name, partition_name, imcvnattr, imcvkey, rowgroup_num, cu_num_in_mem, cu_mem_size, cu_num_in_disk, cu_disk_size FROM gs_global_imcv_info() ORDER BY node_name,rel_name;
  node_name   | rel_name  | partition_name | imcvnattr |  imcvkey  | rowgroup_num | cu_num_in_mem | cu_mem_size | cu_num_in_disk | cu_disk_size 
--------------+-----------+----------------+-----------+-----------+--------------+---------------+-------------+----------------+--------------
 dn_6001_6002 | htap_test |                |         5 | 1 2 3 4 5 |            1 |             6 |        8087 |              0 |            0
 dn_6003_6004 | htap_test |                |         5 | 1 2 3 4 5 |            1 |             6 |        8093 |              0 |            0
(2 rows)
htapdb=# DROP TABLE htap_test;
DROP TABLE
```
