
# 使用rds_hwdrs_ddl插件
#### 简介
RDS PostgreSQL支持rds_hwdrs_ddl插件，该插件是为了[通过创建触发器和函数实现PostgreSQL增量DDL同步](https://support.huaweicloud.com/realtimesyn-drs/drs_03_0088.html)时用户手动创建对象出现权限不足而实现的。
#### 支持的版本说明
可通过以下SQL语句查询当前实例是否支持该插件：
```
SELECT * FROM pg_available_extension_versions WHERE name = 'rds_hwdrs_ddl';
```
RDS for PostgreSQL实例支持的插件，具体请参见[支持的插件列表](https://support.huaweicloud.com/usermanual-rds-pg/rds_09_0045.html)。
#### 插件安装与卸载
- 安装插件
  ```
  SELECT control_extension('create', 'rds_hwdrs_ddl');
  ```
  在安装完该插件后，可以通过查看系统视图查看该插件创建的对象。
  ```
  -- 查看hwdrs_ddl_info表
  select relname, relowner::regrole, relacl from pg_class where relname = 'hwdrs_ddl_info';
      relname     | relowner |            relacl             
  ----------------+----------+-------------------------------
   hwdrs_ddl_info | root     | {root=arwdDxt/root,=ard/root}
  -- 查看hwdrs_ddl_function函数
  select proname, proowner::regrole from pg_proc where proname = 'hwdrs_ddl_function';
        proname       | proowner 
  --------------------+----------
   hwdrs_ddl_function | root
  (1 row)
  -- 查看hwdrs_ddl_event触发器
  select evtname, evtevent from pg_event_trigger;
       evtname     |    evtevent     
  -----------------+-----------------
   hwdrs_ddl_event | ddl_command_end
  (1 row)
  ```
  
- 卸载插件
  ```
  SELECT control_extension('drop', 'rds_hwrds_ddl');
  ```
  
更多信息，请参见[通过界面安装和卸载插件](https://support.huaweicloud.com/usermanual-rds-pg/rds_09_0070.html)和[通过SQL命令安装和卸载插件](https://support.huaweicloud.com/usermanual-rds-pg/rds_09_0043.html)。
#### 基本使用
该插件内部创建了[通过创建触发器和函数实现PostgreSQL增量DDL同步](https://support.huaweicloud.com/realtimesyn-drs/drs_03_0088.html)所需的所有对象以及赋予了相应的权限，只需要安装插件即可进行同步任务。
使用该插件辅助完成DDL同步任务的步骤如下：
1. [创建插件]。
2. 创建[PostgreSQL-\>RDS for PostgreSQL的同步任务](https://support.huaweicloud.com/realtimesyn-drs/drs_04_0107.html)。
3. 同步任务完成之后，通过[卸载插件]即可删除hwdrs_ddl_info表，hwdrs_ddl_function函数及hwdrs_ddl_event触发器。
 
