
# 使用SQL函数接口进行逻辑解码
GaussDB可以通过调用SQL函数，进行创建、删除、推进逻辑复制槽，获取解码后的事务日志。
#### 操作步骤
1. 以具有REPLICATION权限的用户登录GaussDB数据库主节点。
2. 使用如下命令连接数据库。 
   ```
   gsql -U user1 -d gaussdb -p 16000 -r
   ```
   其中，user1为用户名，gaussdb为需要连接的数据库名称，16000为数据库端口号，用户可根据实际情况替换。
   
   
3. 创建名称为slot1的逻辑复制槽。 
   ```
   openGauss=# SELECT * FROM pg_create_logical_replication_slot('slot1', 'mppdb_decoding');
   slotname | xlog_position
   ----------+---------------
   slot1    | 0/601C150
   (1 row)
   ```
   
   
4. 在数据库中创建表t，并向表t中插入数据。 
   ```
   openGauss=# CREATE TABLE t(a int PRIMARY KEY, b int);
   openGauss=# INSERT INTO t VALUES(3,3);
   ```
   
   
5. 读取复制槽slot1解码结果，解码条数为4096。 
   ```
   openGauss=# SELECT * FROM pg_logical_slot_peek_changes('slot1', NULL, 4096);
   location  |  xid  | data                                                                                         
   -----------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------
   -------------------------------------------
    0/601C188 | 1010023 | BEGIN 1010023
    0/601ED60 | 1010023 | COMMIT 1010023 CSN 1010022
    0/601ED60 | 1010024 | BEGIN 1010024
    0/601ED60 | 1010024 | {"table_name":"public.t","op_type":"INSERT","columns_name":["a","b"],"columns_type":["integer","integer"],"columns_val":["3","3"],"old_keys_name":[],"old_keys_type":[],"old_keys_val":[]}
    0/601EED8 | 1010024 | COMMIT 1010024 CSN 1010023
   (5 rows)
   ```
   
   
6. 删除逻辑复制槽slot1。 
   ```
   openGauss=#  SELECT * FROM pg_drop_replication_slot('slot1');
    pg_drop_replication_slot
   --------------------------
   (1 row)
   ```
   
   
 
