我已经创建了用于覆盖内置(bytea,bytea)操作符的默认行为的操作符。这是允许的吗?我需要这个来覆盖数据库中自定义编码二进制数据的比较。
CREATE OPERATOR = (
LEFTARG = bytea,
RIGHTARG = bytea,
COMMUTATOR = =,
NEGATOR = !=,
PROCEDURE = fn_enc_eq,
HASHES, MERGES
);
CREATE OPERATOR != (
LEFTARG = bytea,
RIGHTARG = bytea,
COMMUTATOR = =,
NEGATOR = !=,
PROCEDURE = fn_enc_neq,
HASHES, MERGES
);
CREATE OPERATOR >= (
LEFTARG = bytea,
RIGHTARG = bytea,
PROCEDURE = fn_enc_gte,
HASHES, MERGES
);
CREATE OPERATOR > (
LEFTARG = bytea,
RIGHTARG = bytea,
PROCEDURE = fn_enc_gt,
HASHES, MERGES
);
CREATE OPERATOR <= (
LEFTARG = bytea,
RIGHTARG = bytea,
PROCEDURE = fn_enc_lte,
HASHES, MERGES
);
CREATE OPERATOR < (
LEFTARG = bytea,
RIGHTARG = bytea,
PROCEDURE = fn_enc_lt,
HASHES, MERGES
);
1条答案
按热度按时间ar5n3qh51#
您当然可以定义这些运算符,但接下来需要设置
search_path
因此,您创建运算符的模式将包含在pg_catalog
,例如:注意,这并不是你想要的任何地方都有效。例如,如果您计划在
bytea
(奇怪的想法),这将使用原始运算符。您必须为此定义一个自定义操作符类。而不是滥用职权
bytea
,定义自己的数据类型会更干净、更好。