Как определить псевдоним оператора в PostgreSQL? - PullRequest
2 голосов
/ 12 августа 2010

Есть ли простой способ определить псевдоним оператора для оператора = в PostgreSQL?

Как это решается для операторов != и <>? Кажется, только оператор <> находится в pg_operators. Является ли оператор != жестко запрограммированным?

Это необходимо для приложения, в котором используется определенный оператор. В большинстве сред этот оператор должен действовать как =, но в некоторых случаях мы определяем специальное поведение, создавая собственный оператор и класс операторов. Но для обычного случая наш оператор должен быть просто псевдонимом для оператора =, чтобы он был прозрачен для приложения, реализация которого используется.

1 Ответ

1 голос
/ 12 августа 2010

Просто проверьте pgAdmin, схему pg_catalog.Он имеет все операторы и покажет вам, как создать их для всех типов данных.Да, вы должны создать их для всех типов данных.Так что это не просто «псевдоним», вам нужно много псевдонимов.

Пример для char = char, используя !!!!в качестве псевдонима:

CREATE OPERATOR !!!!   -- name
(
  PROCEDURE = pg_catalog.chareq,
  LEFTARG = "char",
  RIGHTARG = "char",
  COMMUTATOR = !!!!, -- the same as the name
  RESTRICT = eqsel,
  JOIN = eqjoinsel,
  HASHES,
  MERGES
);
SELECT 'a' !!!! 'a' -- true
SELECT 'a' !!!! 'b' -- false

Проверьте также руководство и обратите внимание на правила именования, оно имеет некоторые ограничения.

...