Since no one replied in pg-general, I am reposting to hackers.

Q1:
Let's say I want to create a '+' operator for <my own type> + int4. Do I
really have to
define two '+' operators, one

<my own type> + int

and the other

int + <my own type>

Q2:

Can I create an operator '::', such as <my own type>::double ?

Gene Sokolov.




Wed, 20 Oct 1999 10:09:58 +0400
"Gene Sokolov" <hook@aktrad.ru>
Creating operators
"Gene Sokolov" <hook@aktrad.ru> writes:
> Q1:
> Let's say I want to create a '+' operator for <my own type> + int4. Do I
> really have to
> define two '+' operators, one
> <my own type> + int
> and the other
> int + <my own type>

Yes.  There's nothing compelling them to behave the same, after all
(consider '-' instead of '+').  If they do behave the same you
should indicate this with "commutator" links --- see the discussion
in the manual.

> Can I create an operator '::', such as <my own type>::double ?

You can't redefine the meaning of the typecast construct '::',
if that's what you meant.  But perhaps what you really meant
was that you want to provide a conversion from your type to
double.  For that you just make a function named 'double',
yielding double, and taking your type as input.  The typecast
code will use it automatically.

(Of course "double" is spelled "float8" in Postgres-land,
but you knew that...)

			regards, tom lane

Wed, 20 Oct 1999 02:51:53 -0400
Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Creating operators 
> > Can I create an operator '::', such as <my own type>::double ?

This brings up something: I see mention in Date and Darwen of an SQL3
enumerated type. Nice feature, but they show the syntax being:

  <type>::<value>

which reuses the "::" operator in a way which may be incompatible with
Postgres' usage (seems to me to have the fields reversed). btw, I
could imagine implementing enumerated types as Postgres arrays or as a
separate table per type.

Has anyone come across this SQL3 feature yet? Any opinions??

                   - Thomas

-- 
Thomas Lockhart				lockhart@alumni.caltech.edu
South Pasadena, California

Wed, 20 Oct 1999 12:51:14 +0000
Thomas Lockhart <lockhart@alumni.caltech.edu>
Re: [HACKERS] Creating operators