如何将ctid系统列转换为long,反之亦然

时间:2014-10-09 13:32:06

标签: postgresql

使用PostgreSQL版本9+如何将隐藏的系统列ctid转换为long类型?

有了这个长值,如何再次转换为tid类型?

1 个答案:

答案 0 :(得分:0)

ctid 可以使用按位操作分解为长整数而不会丢失数据:

ctid 列转换为长类型(source)

((ctid::text::point)[0]::bigint << 32) | (ctid::text::point)[1]::bigint as long_ctid

将long转换为 tid 类型:

ctid = CONCAT('(', long_ctid >> 32,',',long_ctid << 32 >> 32,')')::tid