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'
-- ...
);