
# Undo系统函数
- gs_undo_meta(type, zoneId, location) 描述：Undo各模块元信息。
  参数说明：
  - type(元信息类型) 0表示Undo Zone(Record) 对应的元信息。
    1表示Undo Zone(Transaction Slot) 对应的元信息。
    2表示Undo Space(Record) 对应的元信息。
    3表示Undo Space(Transaction Slot) 对应的元信息。
    
  
  
  
  - zoneId(undo zone编号) -1表示所有undo zone的元信息。
    0-1024\*1024表示对应zoneid的元信息。
    
  
  
  
  - location(读取位置） 0表示从当前内存中读取。
    1表示从物理文件中读取。
    
  
  
  返回值类型：record
  表1gs_undo_meta(0,-1,0)输出示例 
  | 参数类型 | 参数名         | 类型   | 描述                             |
  |:---|:---|:---|:---|
  | 输出参数 | zoneId      | oid  | undo zone的id。                  |
  | 输出参数 | persistType | oid  | 持久化级别。                         |
  | 输出参数 | insert      | text | 下一条插入的undo记录位置。                |
  | 输出参数 | discard     | text | 普通回收到的undo记录位置。                |
  | 输出参数 | end         | text | 强制回收掉undo记录位置，小于它的undo记录已经被回收。 |
  | 输出参数 | used        | text | 已经使用的undo空间。                   |
  | 输出参数 | lsn         | text | 修改zone的lsn。                    |
  | 输出参数 | pid         | oid  | zone绑定的进程id。                   |
     
  
- gs_undo_translot(location, zoneId) 描述：Undo事务槽信息。
  参数说明：
  - location(读取位置) 0表示从当前内存中读取。
    1表示从物理文件中读取。
    
  
  
  
  - zoneId(undo zone编号) -1表示所有undo zone的元信息。
    0-1024\*1024表示对应zoneId的元信息。
    
  
  
  返回值类型：record
  表2gs_undo_translot(0,-1)输出示例 
  | 参数类型 | 参数名          | 类型   | 描述                                    |
  |:---|:---|:---|:---|
  | 输出参数 | groupId      | oid  | 使用的undo zone id。                      |
  | 输出参数 | xactId       | text | 事务id。                                 |
  | 输出参数 | startUndoPtr | text | slot对应事务起始插入undo记录位置。                 |
  | 输出参数 | endUndoPtr   | text | slot对应事务结束插入undo记录位置。                 |
  | 输出参数 | lsn          | text | 对应slot指针。                             |
  | 输出参数 | slot_states  | oid  | 事务状态，0表示已经提交，1表示正在执行中，2表示回滚中，3表示回滚完成。 |
     
  
- gs_stat_undo() 描述：Undo统计信息。
  返回值类型：record
  表3gs_stat_undo参数说明 
  | 参数类型 | 参数名                     | 类型     | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  |:---|:---|:---|:---|
  | 输出参数 | curr_used_zone_count    | uint32 | 当前使用的Undo zone数量。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
  | 输出参数 | top_used_zones          | text   | 前三个使用量最大的Undo zone信息，格式输出为： - zoneId1：使用大小。  - zoneId2：使用大小。  - zoneId3：使用大小。   |
  | 输出参数 | curr_used_undo_size     | uint32 | 当前使用的Undo总空间大小，单位为MB。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | 输出参数 | undo_threshold          | uint32 | 为guc参数undo_space_limit_size \* 80%计算的结果,单位为MB。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | 输出参数 | oldest_xid_in_undo      | uint64 | 当前Undo空间回收到的事务xid(小于该xid事务产生的Undo记录都已经被回收)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | 输出参数 | oldest_xmin             | uint64 | 最老的活跃事务。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  | 输出参数 | total_undo_chain_len    | int64  | 所有访问过的Undo链总长度。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
  | 输出参数 | max_undo_chain_len      | int64  | 最大访问过的Undo链长度。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | 输出参数 | create_undo_file_count  | uint32 | 创建的Undo文件数量统计。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | 输出参数 | discard_undo_file_count | uint32 | 删除的Undo文件数量统计。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
     
  
- gs_undo_record(undoptr) 描述：Undo记录解析。
  参数说明：
  - undoptr（undo记录指针）
  
  
  返回值类型：record
  
- gs_undo_dump_parsepage_mv(relpath text, blkno bigint, reltype text, rmem boolean) 描述：解析ustore数据表磁盘页面的页头信息，每个元组的头部信息，标识位信息以及所有可以查询到undo历史版本信息。
  返回值类型：text
  备注：必须是系统管理员或者运维管理人员才能执行此函数。
  ![](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  该接口当前仅支持USTORE数据表。
  表4gs_undo_dump_parsepage_mv参数说明 
  | 参数类型 | 参数名     | 类型      | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
  |:---|:---|:---|:---|
  | 输入参数 | relpath | text    | ustore表数据文件相对路径，相对路径格式为：tablespace name/database oid/relfilenode，例如base/16603/16384, 表对应数据文件的相对路径查找可以通过pg_relation_filepath('tablename')查询。                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | 输入参数 | blkno   | bigint  | - -1 解析所有block页面。  - 0-MaxBlocNumber解析指定的block页面。                                                                                                                   |
  | 输入参数 | reltype | text    | 表类型，目前仅支持ustore数据表，取值为uheap。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
  | 输入参数 | rmem    | boolean | - false  - true 目前仅支持false，从磁盘文件上解析对应的页面。    |
  | 输出参数 | output  | text    | 解析结果文件的绝对路径。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
     
  
- gs_undo_meta_dump_zone(zone_id int, read_memory boolean) 描述：解析Undo模块中zone的元信息。
  返回值类型：record
  表5gs_undo_meta_dump_zone参数说明 
  | 参数类型 | 参数名          | 类型      | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
  |:---|:---|:---|:---|
  | 输入参数 | zone_id      | int     | Undo zone编号： - -1：查询所有Undo zone。  - 0-1,048,575：查询对应zone_id编号的undo zone元信息。                                                                                                                                                                                  |
  | 输入参数 | read_memory  | boolean | - true：从当前内存中读取。  - false：从物理文件中读取。                                                                                                                                                                                                                              |
  | 输出参数 | zone_id      | int     | Undo zone编号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | 输出参数 | persist_type | int     | 持久化级别： - 0：普通表  - 1：无日志表  - 2：临时表   |
  | 输出参数 | insert       | text    | 下一条插入的undo记录位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | 输出参数 | discard      | text    | 普通回收到的undo记录位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | 输出参数 | forcediscard | text    | 强制回收掉undo记录位置，小于它的undo记录已经被回收。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | 输出参数 | lsn          | text    | 修改zone的lsn。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
     
  
- gs_undo_meta_dump_spaces(zone_id int, read_memory boolean) 描述：解析Undo模块中undo记录空间，undo slot空间的元信息。
  返回值类型：record
  表6gs_undo_meta_dump_spaces参数说明 
  | 参数类型 | 参数名                   | 类型      | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  |:---|:---|:---|:---|
  | 输入参数 | zone_id               | int     | Undo zone编号： - -1：查询所有Undo zone。  - 0-1,048,575：查询对应zone_id编号的undo zone元信息。   |
  | 输入参数 | read_memory           | boolean | - true：从当前内存中读取。  - false：从物理文件中读取。                                 |
  | 输出参数 | zone_id               | int     | Undo zone编号。                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
  | 输出参数 | undorecord_space_tail | text    | Undo record空间的结尾位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | 输出参数 | undorecord_space_head | text    | Undo record空间的起始位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | 输出参数 | undorecord_space_lsn  | text    | 修改Undo record空间lsn。                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | 输出参数 | undoslot_space_tail   | text    | Undo slot空间的结尾位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | 输出参数 | undoslot_space_head   | text    | Undo slot空间的起始位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | 输出参数 | undoreslot_space_lsn  | text    | 修改Undo slot空间lsn。                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
     
  
- gs_undo_meta_dump_slot(zone_id int, read_memory boolean) 描述：解析Undo模块中slot元信息。
  返回值类型：record
  表7gs_undo_meta_dump_slot参数说明 
  | 参数类型 | 参数名                | 类型      | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  |:---|:---|:---|:---|
  | 输入参数 | zone_id            | int     | Undo zone编号： - -1：查询所有Undo zone。  - 0-1,048,575：查询对应zone_id编号的undo zone元信息。   |
  | 输入参数 | read_memory        | boolean | - true：从当前内存中读取。  - false：从物理文件中读取。                                     |
  | 输出参数 | zone_id            | int     | Undo zone编号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | 输出参数 | allocate           | text    | Undo transaction slot分配位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
  | 输出参数 | recycle            | text    | Undo transaction slot回收位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
  | 输出参数 | frozen_xid         | text    | frozen xid，用于可见性判断。                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | 输出参数 | global_frozen_xid  | text    | 全局最小的frozen xid，小于该xid的事务可见。                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | 输出参数 | recycle_xid        | text    | 回收到的xid，小于该xid的事务被回收。                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | 输出参数 | global_recycle_xid | text    | 全局最小的recycle xid，小于该xid的事务被回收。                                                                                                                                                                                                                                                                                                                                                                                                                                              |
     
  
- gs_undo_translot_dump_slot(zone_id int, read_memory boolean) 描述：解析zone中的slot。
  返回值类型：record
  表8gs_undo_translot_dump_slot参数说明 
  | 参数类型 | 参数名           | 类型      | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
  |:---|:---|:---|:---|
  | 输入参数 | zone_id       | oid     | Undo zone编号： - -1：查询所有Undo zone。  - 0-1,048,575：查询对应zone_id编号的undo zone元信息。                                                                                                                                                                                                                                                                                  |
  | 输入参数 | read_memory   | boolean | - true：从当前内存中读取。  - false：从物理文件中读取。                                                                                                                                                                                                                                                                                                                         |
  | 输出参数 | zone_id       | text    | Undo zone编号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
  | 输出参数 | slot_xid      | text    | 事务id。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | 输出参数 | start_undoptr | text    | slot对应事务起始插入undo记录位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | 输出参数 | end_undoptr   | text    | slot对应事务结束插入undo记录位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | 输出参数 | slot_ptr      | text    | Transaction Slot对应的位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | 输出参数 | slot_states   | oid     | 事务状态： - 0：已提交  - 1：执行中  - 2：回滚中  - 3：回滚完成   |
     
  
- gs_undo_translot_dump_xid(slot_xid xid, read_memory boolean) 描述：根据xid，解析zone中对应的slot。
  返回值类型：record
  表9gs_undo_translot_dump_xid参数说明 
  | 参数类型 | 参数名           | 类型      | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
  |:---|:---|:---|:---|
  | 输入参数 | slot_xid      | xid     | 需要查询的事务id。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
  | 输入参数 | read_memory   | boolean | - true：从当前内存中读取。  - false：从物理文件中读取。                                                                                                                                                                                                                                                                                                                          |
  | 输出参数 | zone_id       | text    | Undo zone编号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | 输出参数 | slot_xid      | text    | 事务id。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
  | 输出参数 | start_undoptr | text    | slot对应事务起始插入undo记录位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
  | 输出参数 | end_undoptr   | text    | slot对应事务结束插入undo记录位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
  | 输出参数 | lsn           | text    | 修改slot的lsn。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | 输出参数 | slot_states   | oid     | 事务状态： - 0 已提交  - 1 执行中  - 2 回滚中  - 3 回滚完成   |
     
  
- gs_undo_dump_record(undoptr bigint) 描述：解析undo记录。
  返回值类型：record
  表10gs_undo_dump_record参数说明 
  | 参数类型 | 参数名               | 类型     | 描述                        |
  |:---|:---|:---|:---|
  | 输入参数 | undoptr           | bigint | 需要解析的undo记录起始位置。          |
  | 输出参数 | undoptr           | bigint | 需要解析的undo记录起始位置。          |
  | 输出参数 | xactid            | text   | 事务id。                     |
  | 输出参数 | cid               | text   | command id。               |
  | 输出参数 | reloid            | text   | relation oid。             |
  | 输出参数 | relfilenode       | text   | 文件的relfinode。             |
  | 输出参数 | utype             | text   | undo记录类型。                 |
  | 输出参数 | blkprev           | text   | 同一个块前一条undo记录的位置。         |
  | 输出参数 | blockno           | text   | 块号。                       |
  | 输出参数 | uoffset           | text   | undo记录偏移。                 |
  | 输出参数 | prevurp           | text   | 前一条undo记录位置。              |
  | 输出参数 | payloadlen        | text   | undo记录数据部分长度。             |
  | 输出参数 | oldxactid         | text   | 前一个事务id。                  |
  | 输出参数 | partitionoid      | text   | 分区oid。                    |
  | 输出参数 | tablespace        | text   | 表空间。                      |
  | 输出参数 | alreadyread_bytes | text   | 读取到的undo记录长度。             |
  | 输出参数 | prev_undorec_len  | text   | 前一条undo记录长度。              |
  | 输出参数 | td_id             | text   | Transaction Directory的id。 |
  | 输出参数 | reserved          | text   | 是否保存。                     |
  | 输出参数 | flag              | text   | 标识1。                      |
  | 输出参数 | flag2             | text   | 标识2。                      |
  | 输出参数 | t_hoff            | text   | Undo记录数据头的长度。             |
     
  
- gs_undo_dump_xid(undo_xid xid) 描述：根据xid解析undo记录。
  返回值类型：record
  表11gs_undo_dump_xid参数说明 
  | 参数类型 | 参数名               | 类型   | 描述                        |
  |:---|:---|:---|:---|
  | 输入参数 | undo_xid          | xid  | 事务xid                     |
  | 输出参数 | undoptr           | xid  | 需要解析的undo记录起始位置。          |
  | 输出参数 | xactid            | text | 事务id                      |
  | 输出参数 | cid               | text | command id                |
  | 输出参数 | reloid            | text | relation oid              |
  | 输出参数 | relfilenode       | text | 文件的relfinode              |
  | 输出参数 | utype             | text | undo记录类型                  |
  | 输出参数 | blkprev           | text | 同一个块前一条undo记录的位置。         |
  | 输出参数 | blockno           | text | 块号                        |
  | 输出参数 | uoffset           | text | undo记录偏移                  |
  | 输出参数 | prevurp           | text | 前一条undo记录位置。              |
  | 输出参数 | payloadlen        | text | undo记录数据部分长度。             |
  | 输出参数 | oldxactid         | text | 前一个事务id                   |
  | 输出参数 | partitionoid      | text | 分区oid                     |
  | 输出参数 | tablespace        | text | 表空间                       |
  | 输出参数 | alreadyread_bytes | text | 读取到的undo记录长度。             |
  | 输出参数 | prev_undorec_len  | text | 前一条undo记录长度。              |
  | 输出参数 | td_id             | text | Transaction Directory的id。 |
  | 输出参数 | reserved          | text | 是否保留                      |
  | 输出参数 | flag              | text | 标识1                       |
  | 输出参数 | flag2             | text | 标识2                       |
  | 输出参数 | t_hoff            | text | Undo记录数据头的长度。             |
     
  

- gs_verify_undo_record(type, startIdx，endIdx, location) 描述：校验Undo记录。
  返回值类型：record
  ![](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  该接口仅为扩展预留接口，禁止使用。
  

- gs_verify_undo_translot(type, startIdx，endIdx, location) 描述：校验Undo事务槽。
  返回值类型：record
  ![](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  该接口仅为扩展预留接口，禁止使用。
  

- gs_verify_undo_meta(type, startIdx，endIdx, location) 描述：校验Undo元信息。
  返回值类型：record
  ![](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  该接口仅为扩展预留接口，禁止使用。
  
 
