You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 13.5执行pg_column_compression报错:无匹配函数

PostgreSQL 13.5 执行pg_column_compression函数报错的原因及解决方法

问题场景

你的PostgreSQL版本为13.5,执行以下语句可正常返回结果:

SELECT pg_column_size(jdoc) FROM dataingest.refresh limit 10;

查询结果:

pg_column_size|
--------------+
          2523|
          2530|

但执行以下语句时触发错误:

SELECT pg_column_compression(jdoc) FROM dataingest.refresh limit 2;

错误信息:

SQL Error [42883]: ERROR: function pg_column_compression(jsonb) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.

问题原因

pg_column_compression()是PostgreSQL 14版本才新增的系统函数,用于返回字段的压缩状态(如pglz、lz4或NULL表示未压缩)。你的数据库版本是13.5,并不包含这个函数,因此会抛出"函数不存在"的错误。

解决方法

方案1:升级PostgreSQL版本到14及以上

如果业务允许,直接将数据库升级到PostgreSQL 14或更高版本,即可正常使用pg_column_compression()函数。

方案2:在13.5版本中用替代方式判断压缩状态

PostgreSQL 13支持TOAST压缩(包括jsonb类型的自动压缩),但没有直接返回压缩状态的函数,可通过以下方式间接判断:

  • 对比字段的pg_column_size()(存储占用的实际字节数)和octet_length()(原始数据的字节数):如果前者远小于后者,说明字段已被压缩。
  • 查询表的TOAST存储参数,确认是否开启了压缩:
    SELECT reloptions FROM pg_class WHERE relname = 'refresh' AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'dataingest');
    
    若结果包含toast.compression=pglz或toast.compression=lz4,说明表已开启TOAST压缩,符合条件的字段会自动压缩。

内容的提问来源于stack exchange,提问作者samshers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 10:50:23