Postgresql 用户定义类型的函数和运算符

Postgresql 用户定义类型的函数和运算符,postgresql,Postgresql,我已经用function\u in和function\u out构建了用户定义类型 CREATE OR REPLACE FUNCTION MyOwnType_in(cstring) RETURNS MyOwnType AS '/home/postgres/ENCRIPTION/MyOwnType/MyOwnType.so','MyOwnType_in' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION MyOwn

我已经用
function\u in
function\u out
构建了用户定义类型

CREATE OR REPLACE FUNCTION MyOwnType_in(cstring)
   RETURNS MyOwnType
   AS '/home/postgres/ENCRIPTION/MyOwnType/MyOwnType.so','MyOwnType_in'
   LANGUAGE C IMMUTABLE STRICT;


CREATE OR REPLACE FUNCTION MyOwnType_out(MyOwnType)
   RETURNS cstring
   AS '/home/postgres/ENCRIPTION/MyOwnType/MyOwnType.so','MyOwnType_out'
   LANGUAGE C IMMUTABLE STRICT;
正如您所看到的,函数_in接收cstring,函数_out返回cstring

问题是函数重载和运算符重写,我不想浪费时间


有没有办法为my
MyOwnType
类型声明默认类型,它告诉postgres带有
MyOwnType
参数的函数和运算符可以解析并重写为
text

您需要
创建强制转换。。。作为隐式
从数据类型到
文本
。这样,当函数/运算符需要
text
时,您的类型将自动转换为
text


此处的详细信息:

您可以对您的类型执行的最多操作是作为,使用:

将用户定义的类型添加到现有内置类别(例如数字或字符串类型)时,category参数特别有用。但是,也可以创建完全由用户定义的新类型类别。选择除大写字母以外的任何ASCII字符来命名此类类别


它可能需要额外的
CAST
s,正如@IgorRomanchenko所建议的那样。

IIRC postgres中有一个特殊的表,它定义了可能的类型转换和类型转换函数。可以将某些类型转换标记为自动完成。有关详细信息,请阅读手册的这一部分。我得到了它并阅读了手册中的
CATEGORY
,但仍然不明白
CATEGORY='S'
是什么意思?哎呀,CATEGORY就在那里,谢谢你的建议。
CREATE TYPE MyOwnType(
  INPUT = MyOwnType_in,
  OUTPUT = MyOwnType_out,
  CATEGORY = 'S'
  -- ...
);