从PostgreSQL C函数确定列类型修改(TYPMOD)

slmsl1lt  于 7个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(69)

我在Postgres中创建了一个类型,例如MYTYPE(X,并创建了一个类似于以下的表:

create table t0(c0 mytype(80));

然后我创建一个名为MY_ENGINEPT的函数(MYTYPE)。此函数获取MYTYPE值并对该值进行3DES加密。在MY_ENGINEPT函数中,是否有某种方法可以让我获取 * X * 的值(typmod)的列,以便我可以检查该值是否福尔斯在正确的范围内(即80 -开销)-我需要这样做,因为在加密过程中有额外的开销,这将导致加密数据大于实际输入值。

**注意:**MYTYPE不能是一个专门用于加密数据的特殊类型,它必须是一个可以用于其他目的的泛型类型。所以,我不能简单地解释特殊类型中的额外开销,它必须在函数中或其他地方完成,而不是专门与类型绑定。

fxnxkyjh

fxnxkyjh1#

通常,类型修饰符不存储在Datum中。它被传递给类型输入函数,以便它可以使用它来解析和验证字符串表示。所以你不能在函数中获得它,除非你以某种方式将它包含在mytype的内部表示中。
在PostgreSQL中,类型修饰符被持久化的唯一地方是表列定义。

相关问题