postgresql - Postgres:如何将 pageinspect 返回的原始行 t_data 转换回类型化数据
问题描述
我正在使用 pageinspect 扩展来检查 Postgres 中的旧行版本。这是我正在使用的查询:
SELECT ctid, tuple_data_split('t0'::regclass, t_data, t_infomask, t_infomask2, t_bits) AS raw_row_data
FROM heap_page_items(get_raw_page('t0',0));
例如,假设我有一个包含两个整数列的表并插入 (1, 1)。然后我将其更新为 (2, 2)。上述查询将返回以下内容:
ctid | raw_row_data
--------+-------------------------------
(0,1) | {"\\x01000000","\\x01000000"}
(0,2) | {"\\x02000000","\\x02000000"}
我想修改查询,以便我可以获取键入格式的数据。例如,我希望查询返回:
ctid | typed_row_data
--------+----------------
(0,1) | {1,1}
(0,2) | {2,2}
在这种特定情况下,我可以只添加一个函数来将 bytea 转换为 int,但是我希望这适用于任何可能包含编写查询时不知道的数据类型的给定表。我知道可以手动检索表模式,因此应该可以使用它来根据数据类型选择适当的转换函数。是否有任何现有的功能可以做到这一点?或者,有没有更好的方法来做到这一点?
解决方案
推荐阅读
- sql - 在 SQL 中实现在过程的时间进出状态的附加列
- angular - 仅在导航到父页面时加载 Angular 路由
- php - 获取按下按钮的车辆的 ID
- python - 如何打印在我的字符串上找到的字符?
- python - 如何将一维 numpy 数组拆分为多个水平数组?
- postfix-mta - 致命:没有 SASL 身份验证机制
- java - 创建存根 bigquery 表
- reactjs - 在功能组件内对无效的钩子调用做出反应
- mongodb - 直观相似的查询会导致不同的结果
- docker-compose - 使用 Docker Compose 和 Traefik 提供 Swagger UI 和编辑器