<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/Attic/oper.sgml,v 1.16 2000/05/02 20:01:52 thomas Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/Attic/oper.sgml,v 1.17 2000/08/12 05:15:24 tgl Exp $
-->
<Chapter Id="operators">
<tbody>
<row>
<entry>
-UNION
-</entry>
-<entry>
-left
-</entry>
-<entry>
-SQL select construct
-</entry>
-</row>
-<row>
-<entry>
::
</entry>
<entry>
+left
</entry>
<entry>
<productname>Postgres</productname> typecasting
unary minus
</entry>
</row>
-<!--
-Deprecated as of v7.0
<row>
<entry>
-;
+|
</entry>
<entry>
left
</entry>
<entry>
-statement termination, logarithm
-</entry>
-</row>
--->
-<row>
-<entry>
-:
-</entry>
-<entry>
-right
-</entry>
-<entry>
-exponentiation
+start of interval
</entry>
</row>
<row>
<entry>
-|
+^
</entry>
<entry>
left
</entry>
<entry>
-start of interval
+power, exclusive or
</entry>
</row>
<row>
(all other operators)
</entry>
<entry>
+left
</entry>
<entry>
native and user-defined
</row>
<row>
<entry>
-LIKE
+LIKE ILIKE
</entry>
<entry>
</entry>
<ENTRY>Division</ENTRY>
<ENTRY>4 / 2</ENTRY>
</ROW>
- <ROW>
- <ENTRY> : </ENTRY>
- <ENTRY>Natural Exponentiation</ENTRY>
- <ENTRY>: 3.0</ENTRY>
- </ROW>
-<!--
-Deprecated in v7.0, esp. since ln() is available as a generic function.
- <ROW>
- <ENTRY> ; </ENTRY>
- <ENTRY>Natural Logarithm</ENTRY>
- <ENTRY>(; 5.0)</ENTRY>
- </ROW>
--->
<ROW>
<ENTRY> @ </ENTRY>
<ENTRY>Absolute value</ENTRY>
</TGROUP>
</TABLE>
</Para>
-
- <para>
- <note>
- <para>
- Two operators, ":" and ";", are now deprecated and will be removed in
- the next release. Use the equivalent functions exp() and ln()
- instead.
- </para>
- </note>
- </para>
-
</sect1>
<sect1>
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_operator.sgml,v 1.14 2000/07/21 17:58:49 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_operator.sgml,v 1.15 2000/08/12 05:15:23 tgl Exp $
Postgres documentation
-->
is a sequence of up to NAMEDATALEN-1 (31 by default) characters
from the following list:
<literallayout>
-+ - * / < > = ~ ! @ # % ^ & | ` ? $ :
++ - * / < > = ~ ! @ # % ^ & | ` ? $
</literallayout>
There are a few restrictions on your choice of name:
<itemizedlist>
<listitem>
<para>
- "$" and ":" cannot be defined as single-character operators,
- although they can be part of a multi-character operator name.
+ "$" cannot be defined as a single-character operator,
+ although it can be part of a multi-character operator name.
</para>
</listitem>
<listitem>
A multi-character operator name cannot end in "+" or "-",
unless the name also contains at least one of these characters:
<literallayout>
-~ ! @ # % ^ & | ` ? $ :
+~ ! @ # % ^ & | ` ? $
</literallayout>
For example, <literal>@-</literal> is an allowed operator name,
but <literal>*-</literal> is not.
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.185 2000/08/11 23:45:27 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.186 2000/08/12 05:15:21 tgl Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
/* these are not real. they are here so that they get generated as #define's*/
%token OP
-/* precedence */
+/* precedence: lowest to highest */
+%left UNION INTERSECT EXCEPT
%left OR
%left AND
%right NOT
%left '+' '-'
%left '*' '/' '%'
%left '^'
-%left '|' /* this is the relation union op, not logical or */
+%left '|' /* XXX Should this have such a high priority? */
/* Unary Operators */
-%right ':' /* delimiter for array ranges */
-%left ';' /* end of statement */
%right UMINUS
%left '.'
%left '[' ']'
%left TYPECAST
-%left UNION INTERSECT EXCEPT
%left ESCAPE
%%
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.74 2000/08/06 17:50:38 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.75 2000/08/12 05:15:21 tgl Exp $
*
*-------------------------------------------------------------------------
*/
* rule for "operator"!
*/
self [,()\[\].;$\:\+\-\*\/\%\^\<\>\=\|]
-op_chars [\~\!\@\#\^\&\|\`\?\$\:\+\-\*\/\%\<\>\=]
+op_chars [\~\!\@\#\^\&\|\`\?\$\+\-\*\/\%\<\>\=]
operator {op_chars}+
/* we no longer allow unary minus in numbers.
for (ic = nchars-2; ic >= 0; ic--)
{
- if (strchr("~!@#&`?$:%^|", yytext[ic]))
+ if (strchr("~!@#^&|`?$%", yytext[ic]))
break;
}
if (ic >= 0)
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_operator.h,v 1.79 2000/07/30 22:13:59 tgl Exp $
+ * $Id: pg_operator.h,v 1.80 2000/08/12 05:15:22 tgl Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
DATA(insert OID = 597 ( "||/" PGUID 0 l t f 0 701 701 0 0 0 0 dcbrt - - ));
DATA(insert OID = 598 ( "%" PGUID 0 l t f 0 701 701 0 0 0 0 dtrunc - - ));
DATA(insert OID = 599 ( "%" PGUID 0 r t f 701 0 701 0 0 0 0 dround - - ));
-DATA(insert OID = 1282 ( ":" PGUID 0 l t f 0 701 701 0 0 0 0 dexp - - ));
-DATA(insert OID = 1283 ( ";" PGUID 0 l t f 0 701 701 0 0 0 0 dlog1 - - ));
DATA(insert OID = 1284 ( "|" PGUID 0 l t f 0 704 702 0 0 0 0 tintervalstart - - ));
DATA(insert OID = 606 ( "<#>" PGUID 0 b t f 702 702 704 0 0 0 0 mktinterval - - ));
DATA(insert OID = 607 ( "=" PGUID 0 b t t 26 26 16 607 608 609 609 oideq eqsel eqjoinsel ));