summaryrefslogtreecommitdiff
path: root/src/man/pgbuiltin.3
diff options
context:
space:
mode:
Diffstat (limited to 'src/man/pgbuiltin.3')
-rw-r--r--src/man/pgbuiltin.31105
1 files changed, 1105 insertions, 0 deletions
diff --git a/src/man/pgbuiltin.3 b/src/man/pgbuiltin.3
new file mode 100644
index 00000000000..b4dd6c04156
--- /dev/null
+++ b/src/man/pgbuiltin.3
@@ -0,0 +1,1105 @@
+.\" This is -*-nroff-*-
+.\" XXX standard disclaimer belongs here....
+.\" $Header: /cvsroot/pgsql/src/man/Attic/pgbuiltin.3,v 1.1 1997/08/26 17:39:32 momjian Exp $
+.TH PGBUILTIN INTRO 04/01/97 PostgreSQL PostgreSQL
+.SH "DESCRIPTION"
+This section describes the data types, functions and operators
+available to users in Postgres as it is distributed.
+.SH "PGBUILTIN TYPES"
+This section describes
+.BR pgbuiltin
+data types.
+These Built-in types are installed in every database.
+.PP
+Users may add new types to Postgres using the
+.IR "define type"
+command described in this manual. User-defined types are not
+described in this section.
+.SH "List of built-in types"
+.PP
+.if n .ta 5 +15 +40
+.if t .ta 0.5i +1.5i +3.0i
+.in 0
+.nf
+ \fBPOSTGRES Type\fP \fBMeaning\fP
+ abstime (absolute) limited-range date and time
+ aclitem access control list item
+ bool boolean
+ box 2-dimensional rectangle
+ bpchar blank-padded characters
+ bytea variable length array of bytes
+ char character
+ char2 array of 2 characters
+ char4 array of 4 characters
+ char8 array of 8 characters
+ char16 array of 16 characters
+ cid command identifier type
+ date ANSI SQL date type
+ datetime general-use date and time
+ filename large object filename
+ int alias for int4
+ integer alias for int4
+ int2 two-byte signed integer
+ int28 array of 8 int2
+ int4 four-byte signed integer
+ float alias for float4
+ float4 single-precision floating-point number
+ float8 double-precision floating-point number
+ lseg 2-dimensional line segment
+ money decimal type with fixed precision
+ name a multi-character type for storing system identifiers
+ oid object identifier type
+ oid8 array of 8 oid
+ oidchar16 oid and char16 composed
+ oidint2 oid and int2 composed
+ oidint4 oid and int4 composed
+ path open or closed line segments
+ point 2-dimensional geometric point
+ polygon 2-dimensional polygon (same as a closed path)
+ circle 2-dimensional circle (center and radius)
+ real alias for float4
+ regproc registered procedure
+ reltime (relative) date and time span (duration)
+ smgr storage manager
+ smallint alias for int2
+ text variable length array of characters
+ tid tuple identifier type
+ time ANSI SQL time type
+ timespan general-use time span (duration)
+ timestamp limited-range ISO-format date and time
+ tinterval time interval (start and stop abstime)
+ varchar variable-length characters
+ xid transaction identifier type
+
+.fi
+.in
+.PP
+Many of the built-in types have obvious external formats. However, several
+types are either unique to Postgres, such as open and closed paths, or have
+several possibilities for formats, such as date and time types.
+
+.SH "Syntax of date and time types"
+Some date and time types share code for data input. For those types (currently
+.IR datetime
+and
+.IR abstime
+, and
+.IR timespan
+and
+.IR reltime )
+the input can have any of a wide variety of styles. For numeric date representations,
+European and US conventions can differ, and the proper interpretation is obtained
+by using the
+.IR set (l)
+command before entering data.
+Output formats can be set to one of three styles:
+ISO-8601, SQL (traditional Oracle/Ingres), and traditional
+Postgres (see section on
+.IR "absolute time" )
+with the SQL style having European and US variants (see
+.IR set (l)).
+
+.SH "DATETIME"
+General-use date and time is input using a wide range of
+styles, including ISO-compatible, SQL-compatible, traditional
+Postgres (see section on
+.IR "absolute time")
+and other permutations of date and time. Output styles can be ISO-compatible,
+SQL-compatible, or traditional Postgres, with the default set to be compatible
+with Postgres v6.0.
+.PP
+datetime is specified using the following syntax:
+.PP
+.nf
+Year-Month-Day [ Hour : Minute : Second ] [AD,BC] [ Timezone ]
+.nf
+ YearMonthDay [ Hour : Minute : Second ] [AD,BC] [ Timezone ]
+.nf
+ Month Day [ Hour : Minute : Second ] Year [AD,BC] [ Timezone ]
+.sp
+where
+ Year is 4013 BC, ..., very large
+ Month is Jan, Feb, ..., Dec or 1, 2, ..., 12
+ Day is 1, 2, ..., 31
+ Hour is 00, 02, ..., 23
+ Minute is 00, 01, ..., 59
+ Second is 00, 01, ..., 59 (60 for leap second)
+ Timezone is 3 characters or ISO offset to GMT
+.fi
+.PP
+Valid dates are from Nov 13 00:00:00 4013 BC GMT to far into the future.
+Timezones are either three characters (e.g. "GMT" or "PST") or ISO-compatible
+offsets to GMT (e.g. "-08" or "-08:00" when in Pacific Standard Time).
+Dates are stored internally in Greenwich Mean Time. Input and output routines
+translate time to the local time zone of the server.
+.PP
+The special values `current',
+`infinity' and `-infinity' are provided.
+`infinity' specifies a time later than any valid time, and
+`-infinity' specifies a time earlier than any valid time.
+`current' indicates that the current time should be
+substituted whenever this value appears in a computation.
+.PP
+The strings
+`now',
+`today',
+`yesterday',
+`tomorrow',
+and `epoch' can be used to specify
+time values. `now' means the current time, and differs from
+`current' in that the current time is immediately substituted
+for it. `epoch' means Jan 1 00:00:00 1970 GMT.
+
+.SH "TIMESPAN"
+General-use time span is input using a wide range of
+syntaxes, including ISO-compatible, SQL-compatible, traditional
+Postgres (see section on
+.IR "relative time"
+) and other permutations of time span. Output formats can be ISO-compatible,
+SQL-compatible, or traditional Postgres, with the default set to be Postgres-compatible.
+Months and years are a "qualitative" time interval, and are stored separately
+from the other "quantitative" time intervals such as day or hour. For date arithmetic,
+the qualitative time units are instantiated in the context of the relevant date or time.
+.PP
+Time span is specified with the following syntax:
+.PP
+.nf
+ Quantity Unit [Quantity Unit...] [Direction]
+.nf
+@ Quantity Unit [Direction]
+.sp
+where
+ Quantity is ..., `-1', `0', `1', `2', ...
+ Unit is `second', `minute', `hour', `day', `week', `month', `year',
+ or abbreviations or plurals of these units.
+ Direction is `ago'.
+.fi
+.SH "ABSOLUTE TIME"
+Absolute time (abstime) is a limited-range (+/- 68 years) and limited-precision (1 sec)
+date data type.
+.IR "datetime"
+may be preferred, since it
+covers a larger range with greater precision.
+.PP
+Absolute time is specified using the following syntax:
+.PP
+.nf
+Month Day [ Hour : Minute : Second ] Year [ Timezone ]
+.sp
+where
+ Month is Jan, Feb, ..., Dec
+ Day is 1, 2, ..., 31
+ Hour is 01, 02, ..., 24
+ Minute is 00, 01, ..., 59
+ Second is 00, 01, ..., 59
+ Year is 1901, 1902, ..., 2038
+.fi
+.PP
+Valid dates are from Dec 13 20:45:53 1901 GMT to Jan 19 03:14:04
+2038 GMT. As of Version 3.0, times are no longer read and written
+using Greenwich Mean Time; the input and output routines default to
+the local time zone.
+.PP
+All special values allowed for
+.IR "datetime"
+are also allowed for
+.IR "absolute time".
+
+.SH "RELATIVE TIME"
+Relative time (reltime) is a limited-range (+/- 68 years) and limited-precision (1 sec)
+time span data type.
+.IR "timespan"
+may be preferred, since it
+covers a larger range with greater precision, allows multiple units
+for an entry, and correctly handles qualitative time
+units such as year and month. For reltime, only one quantity and unit is allowed
+per entry, which can be inconvenient for complicated time spans.
+.PP
+Relative time is specified with the following syntax:
+.PP
+.nf
+@ Quantity Unit [Direction]
+.sp
+where
+ Quantity is `1', `2', ...
+ Unit is ``second'', ``minute'', ``hour'', ``day'', ``week'',
+ ``month'' (30-days), or ``year'' (365-days),
+ or PLURAL of these units.
+ Direction is ``ago''
+.fi
+.PP
+.RB ( Note :
+Valid relative times are less than or equal to 68 years.)
+In addition, the special relative time \*(lqUndefined RelTime\*(rq is
+provided.
+.SH "TIME RANGES"
+Time ranges are specified as:
+.PP
+.nf
+[ 'abstime' 'abstime']
+.fi
+where
+.IR abstime
+is a time in the absolute time format. Special abstime values such as
+\*(lqcurrent\*(rq, \*(lqinfinity\*(rq and \*(lq-infinity\*(rq can be used.
+
+.SH "Syntax of geometric types"
+.SH "POINT"
+Points are specified using the following syntax:
+.PP
+.nf
+( x , y )
+.nf
+ x , y
+.sp
+where
+ x is the x-axis coordinate as a floating point number
+ y is the y-axis coordinate as a floating point number
+.fi
+.PP
+.SH "LSEG"
+Line segments are represented by pairs of points.
+.PP
+lseg is specified using the following syntax:
+.PP
+.nf
+( ( x1 , y1 ) , ( x2 , y2 ) )
+.nf
+ ( x1 , y1 ) , ( x2 , y2 )
+.nf
+ x1 , y1 , x2 , y2
+.sp
+where
+ (x1,y1) and (x2,y2) are the endpoints of the segment
+.fi
+.PP
+.SH "BOX"
+Boxes are represented by pairs of points which are opposite
+corners of the box.
+.PP
+box is specified using the following syntax:
+.PP
+.nf
+( ( x1 , y1 ) , ( x2 , y2 ) )
+.nf
+ ( x1 , y1 ) , ( x2 , y2 )
+.nf
+ x1 , y1 , x2 , y2
+.sp
+where
+ (x1,y1) and (x2,y2) are opposite corners
+.fi
+.PP
+Boxes are output using the first syntax.
+The corners are reordered on input to store
+the lower left corner first and the upper right corner last.
+Other corners of the box can be entered, but the lower
+left and upper right corners are determined from the input and stored.
+.SH "PATH"
+Paths are represented by sets of points. Paths can be "open", where
+the first and last points in the set are not connected, and "closed",
+where the first and last point are connected. Functions
+.IR popen(p)
+and
+.IR pclose(p)
+are supplied to force a path to be open or closed, and functions
+.IR isopen(p)
+and
+.IR isclosed(p)
+are supplied to select either type in a query.
+.PP
+path is specified using the following syntax:
+.PP
+.nf
+( ( x1 , y1 ) , ... , ( xn , yn ) )
+.nf
+[ ( x1 , y1 ) , ... , ( xn , yn ) ]
+.nf
+ ( x1 , y1 ) , ... , ( xn , yn )
+.nf
+ x1 , y1 , ... , xn , yn
+.nf
+( closed, n, x1 , y1 , ... , xn , yn )
+.sp
+where
+ (x1,y1),...,(xn,yn) are points 1 through n
+ a leading "[" indicates an open path
+ a leading "(" indicates a closed path
+ a single leading "(" indicates a v6.0-compatible format
+ closed is an integer flag which is zero for an open path
+ n is the number of points in the path
+.fi
+.PP
+Paths are output using the first syntax.
+The last format is supplied to be backward compatible with v6.0 and earlier
+path formats and will not be supported in future versions of Postgres.
+.SH "POLYGON"
+Polygons are represented by sets of points. Polygons should probably be
+considered
+equivalent to closed paths, but are stored differently and have their own
+set of support routines.
+.PP
+polygon is specified using the following syntax:
+.PP
+.nf
+( ( x1 , y1 ) , ... , ( xn , yn ) )
+.nf
+ ( x1 , y1 ) , ... , ( xn , yn )
+.nf
+ x1 , y1 , ... , xn , yn
+.nf
+( x1 , ... , xn , y1 , ... , yn )
+.sp
+where
+ (x1,y1),...,(xn,yn) are points 1 through n
+ a single leading "(" indicates a v6.0-compatible format
+.fi
+.PP
+Polygons are output using the first syntax.
+The last format is supplied to be backward compatible with v6.0 and earlier
+path formats and will not be supported in future versions of Postgres.
+.SH "CIRCLE"
+Circles are represented by a center point and a radius.
+.PP
+circle is specified using the following syntax:
+.PP
+.nf
+< ( x , y ) , r >
+.nf
+( ( x , y ) , r )
+.nf
+ ( x , y ) , r
+.nf
+ x , y , r
+.sp
+where
+ (x,y) is the center of the circle
+ r is the radius of the circle
+.fi
+.PP
+Circles are output using the first syntax.
+
+.SH "Built-in operators and functions"
+.SH OPERATORS
+Postgres provides a large number of built-in operators on system types.
+These operators are declared in the system catalog
+\*(lqpg_operator\*(rq. Every entry in \*(lqpg_operator\*(rq includes
+the object ID of the procedure that implements the operator.
+.PP
+Users may invoke operators using the operator name, as in
+.nf
+select * from emp where salary < 40000;
+.fi
+Alternatively, users may call the functions that implement the
+operators directly. In this case, the query above would be expressed
+as
+.nf
+select * from emp where int4lt(salary, 40000);
+.fi
+The rest of this section provides a list of the built-in operators and
+the functions that implement them. Binary operators are listed first,
+followed by unary operators.
+
+.SH "BINARY OPERATORS"
+
+.nf
+Operators:
+
+general
+ <\(eq less or equal
+ <> inequality
+ < less than
+ <\(eq greater or equal
+ >\(eq greater or equal
+ > greater than
+ \(eq equality
+ ~ A matches regular expression B, case-sensitive
+ !~ A does not match regular expression B, case-sensitive
+ ~* A matches regular expression B, case-insensitive.
+ !~* A does not match regular expression B, case-insensitive
+ ~~ A matches LIKE expression B, case-sensitive
+ !~~ A does not match LIKE expression B, case-sensitive
+
+ + addition
+ \(mi subtraction
+ * multiplication
+ / division
+ % modulus
+ @ absolute value
+ <===> distance between
+
+float8
+ ^ exponentiation
+ % truncate to integer
+ |/ square root
+ ||/ cube root
+ : exponential function
+ ; natural logarithm (in psql, protect with parentheses)
+
+point
+ !< A is left of B
+ !> A is right of B
+ !^ A is above B
+ !| A is below B
+ \(eq|\(eq equality
+ ===> point inside box
+ ===` point on path
+
+box
+ && boxes overlap
+ &< box A overlaps box B, but does not extend to right of box B
+ &> box A overlaps box B, but does not extend to left of box B
+ << A is left of B
+ \(eq area equal
+ < area less than
+ <\(eq area less or equal
+ >\(eq area greater or equal
+ > area greater than
+ >> A is right of B
+ @ A is contained in B
+ ~\(eq box equality
+ ~= A same as B
+ ~ A contains B
+ @@ center of box
+
+polygon
+ && polygons overlap
+ &< A overlaps B but does not extend to right of B
+ &> A overlaps B but does not extend to left of B
+ << A is left of B
+ >> A is right of B
+ @ A is contained by B
+ ~\(eq equality
+ ~= A same as B
+ ~ A contains B
+
+circle
+ && circles overlap
+ &< A overlaps B but does not extend to right of B
+ &> A overlaps B but does not extend to left of B
+ << A is left of B
+ >> A is right of B
+ @ A is contained by B
+ ~\(eq equality
+ ~= A same as B
+ ~ A contains B
+
+tinterval
+ #<\(eq interval length less or equal reltime
+ #<> interval length not equal to reltime.
+ #< interval length less than reltime
+ #\(eq interval length equal to reltime
+ #>\(eq interval length greater or equal reltime
+ #> interval length greater than reltime
+ && intervals overlap
+ << A contains B
+ \(eq equality
+ <> interval bounded by two abstimes
+ <?> abstime in tinterval
+ | start of interval
+ <#> convert to interval
+.fi
+
+.SH "FUNCTIONS"
+Many data types have functions available for conversion to other related types.
+In addition, there are some type-specific functions.
+.PP
+For the
+date_part() and date_trunc()
+functions, arguments can be
+`year', `month', `day', `hour', `minute', and `second',
+as well as the more specialized quantities
+`decade', `century', `millenium', `millisecond', and `microsecond'.
+date_part() also allows
+`dow'
+to return day of week and `epoch' to return seconds since 1970.
+
+.nf
+Functions:
+
+abstime
+ datetime datetime(abstime) convert to datetime
+ bool isfinite(abstime) TRUE if this is a finite time
+
+date
+ datetime datetime(date) convert to datetime
+ datetime datetime(date,time) convert to datetime
+
+datetime
+ abstime abstime(datetime) convert to abstime
+ float8 date_part(text,datetime) specified portion of date field
+ datetime date_trunc(text,datetime) truncate date at specified units
+ bool isfinite(datetime) TRUE if this is a finite time
+
+reltime
+ timespan timespan(reltime) convert to timespan
+
+time
+ datetime datetime(date,time) convert to datetime
+
+timespan
+ float8 date_part(text,timespan) specified portion of time field
+ bool isfinite(timespan) TRUE if this is a finite time
+ reltime reltime(timespan) convert to reltime
+
+box
+ box box(point,point) convert points to box
+ float8 area(box) area of box
+
+path
+ bool isopen(path) TRUE if this is an open path
+ bool isclosed(path) TRUE if this is a closed path
+
+circle
+ circle circle(point,float8) convert to circle
+ polygon polygon(npts,circle) convert to polygon with npts points
+ float8 center(circle) radius of circle
+ float8 radius(circle) radius of circle
+ float8 diameter(circle) diameter of circle
+ float8 area(circle) area of circle
+.fi
+
+.SH "BINARY OPERATORS"
+This list was generated from the Postgres system catalogs with the
+query:
+
+.nf
+SELECT t0.typname AS result,
+ t1.typname AS left_type,
+ t2.typname AS right_type,
+ o.oprname AS operatr,
+ p.proname AS func_name
+FROM pg_proc p, pg_type t0,
+ pg_type t1, pg_type t2,
+ pg_operator o
+WHERE p.prorettype = t0.oid AND
+ RegprocToOid(o.oprcode) = p.oid AND
+ p.pronargs = 2 AND
+ o.oprleft = t1.oid AND
+ o.oprright = t2.oid
+ORDER BY result, left_type, right_type, operatr;
+.fi
+
+These operations are cast in terms of SQL types and so are
+.BR not
+directly usable as C function prototypes.
+
+.nf
+result |left_type |right_type|operatr|func_name
+---------+----------+----------+-------+-----------------
+_aclitem |_aclitem |aclitem |+ |aclinsert
+_aclitem |_aclitem |aclitem |- |aclremove
+abstime |abstime |reltime |+ |timepl
+abstime |abstime |reltime |- |timemi
+bool |_abstime |_abstime |= |array_eq
+bool |_aclitem |_aclitem |= |array_eq
+bool |_aclitem |aclitem |~ |aclcontains
+bool |_bool |_bool |= |array_eq
+bool |_box |_box |= |array_eq
+bool |_bytea |_bytea |= |array_eq
+bool |_char |_char |= |array_eq
+bool |_char16 |_char16 |= |array_eq
+bool |_cid |_cid |= |array_eq
+bool |_filename |_filename |= |array_eq
+bool |_float4 |_float4 |= |array_eq
+bool |_float8 |_float8 |= |array_eq
+bool |_int2 |_int2 |= |array_eq
+bool |_int28 |_int28 |= |array_eq
+bool |_int4 |_int4 |= |array_eq
+bool |_lseg |_lseg |= |array_eq
+bool |_name |_name |= |array_eq
+bool |_oid |_oid |= |array_eq
+bool |_oid8 |_oid8 |= |array_eq
+bool |_path |_path |= |array_eq
+bool |_point |_point |= |array_eq
+bool |_polygon |_polygon |= |array_eq
+bool |_ref |_ref |= |array_eq
+bool |_regproc |_regproc |= |array_eq
+bool |_reltime |_reltime |= |array_eq
+bool |_stub |_stub |= |array_eq
+bool |_text |_text |= |array_eq
+bool |_tid |_tid |= |array_eq
+bool |_tinterval|_tinterval|= |array_eq
+bool |_xid |_xid |= |array_eq
+bool |abstime |abstime |< |abstimelt
+bool |abstime |abstime |<= |abstimele
+bool |abstime |abstime |<> |abstimene
+bool |abstime |abstime |= |abstimeeq
+bool |abstime |abstime |> |abstimegt
+bool |abstime |abstime |>= |abstimege
+bool |abstime |tinterval |<?> |ininterval
+bool |bool |bool |< |boollt
+bool |bool |bool |<> |boolne
+bool |bool |bool |= |booleq
+bool |bool |bool |> |boolgt
+bool |box |box |&& |box_overlap
+bool |box |box |&< |box_overleft
+bool |box |box |&> |box_overright
+bool |box |box |< |box_lt
+bool |box |box |<< |box_left
+bool |box |box |<= |box_le
+bool |box |box |= |box_eq
+bool |box |box |> |box_gt
+bool |box |box |>= |box_ge
+bool |box |box |>> |box_right
+bool |box |box |@ |box_contained
+bool |box |box |~ |box_contain
+bool |box |box |~= |box_same
+bool |bpchar |bpchar |< |bpcharlt
+bool |bpchar |bpchar |<= |bpcharle
+bool |bpchar |bpchar |<> |bpcharne
+bool |bpchar |bpchar |= |bpchareq
+bool |bpchar |bpchar |> |bpchargt
+bool |bpchar |bpchar |>= |bpcharge
+bool |bpchar |text |!~ |textregexne
+bool |bpchar |text |!~* |texticregexne
+bool |bpchar |text |!~~ |textnlike
+bool |bpchar |text |~ |textregexeq
+bool |bpchar |text |~* |texticregexeq
+bool |bpchar |text |~~ |textlike
+bool |char |char |< |charlt
+bool |char |char |<= |charle
+bool |char |char |<> |charne
+bool |char |char |= |chareq
+bool |char |char |> |chargt
+bool |char |char |>= |charge
+bool |char16 |char16 |< |char16lt
+bool |char16 |char16 |<= |char16le
+bool |char16 |char16 |<> |char16ne
+bool |char16 |char16 |= |char16eq
+bool |char16 |char16 |> |char16gt
+bool |char16 |char16 |>= |char16ge
+bool |char16 |text |!~ |char16regexne
+bool |char16 |text |!~* |char16icregexne
+bool |char16 |text |!~~ |char16nlike
+bool |char16 |text |!~~ |char16nlike
+bool |char16 |text |~ |char16regexeq
+bool |char16 |text |~* |char16icregexeq
+bool |char16 |text |~~ |char16like
+bool |char16 |text |~~ |char16like
+bool |char2 |char2 |< |char2lt
+bool |char2 |char2 |<= |char2le
+bool |char2 |char2 |<> |char2ne
+bool |char2 |char2 |= |char2eq
+bool |char2 |char2 |> |char2gt
+bool |char2 |char2 |>= |char2ge
+bool |char2 |text |!~ |char2regexne
+bool |char2 |text |!~* |char2icregexne
+bool |char2 |text |!~~ |char2nlike
+bool |char2 |text |~ |char2regexeq
+bool |char2 |text |~* |char2icregexeq
+bool |char2 |text |~~ |char2like
+bool |char4 |char4 |< |char4lt
+bool |char4 |char4 |<= |char4le
+bool |char4 |char4 |<> |char4ne
+bool |char4 |char4 |= |char4eq
+bool |char4 |char4 |> |char4gt
+bool |char4 |char4 |>= |char4ge
+bool |char4 |text |!~ |char4regexne
+bool |char4 |text |!~* |char4icregexne
+bool |char4 |text |!~~ |char4nlike
+bool |char4 |text |~ |char4regexeq
+bool |char4 |text |~* |char4icregexeq
+bool |char4 |text |~~ |char4like
+bool |char8 |char8 |< |char8lt
+bool |char8 |char8 |<= |char8le
+bool |char8 |char8 |<> |char8ne
+bool |char8 |char8 |= |char8eq
+bool |char8 |char8 |> |char8gt
+bool |char8 |char8 |>= |char8ge
+bool |char8 |text |!~ |char8regexne
+bool |char8 |text |!~* |char8icregexne
+bool |char8 |text |!~~ |char8nlike
+bool |char8 |text |~ |char8regexeq
+bool |char8 |text |~* |char8icregexeq
+bool |char8 |text |~~ |char8like
+bool |circle |circle |!^ |circle_above
+bool |circle |circle |!\| |circle_below
+bool |circle |circle |&& |circle_overlap
+bool |circle |circle |&< |circle_overleft
+bool |circle |circle |&> |circle_overright
+bool |circle |circle |< |circle_eq
+bool |circle |circle |<< |circle_left
+bool |circle |circle |<= |circle_eq
+bool |circle |circle |<> |circle_ne
+bool |circle |circle |= |circle_eq
+bool |circle |circle |> |circle_eq
+bool |circle |circle |>= |circle_eq
+bool |circle |circle |>> |circle_right
+bool |circle |circle |@ |circle_contained
+bool |circle |circle |~ |circle_contain
+bool |circle |circle |~= |circle_same
+bool |date |date |< |date_lt
+bool |date |date |<= |date_le
+bool |date |date |<> |date_ne
+bool |date |date |= |date_eq
+bool |date |date |> |date_gt
+bool |date |date |>= |date_ge
+bool |datetime |datetime |< |datetime_lt
+bool |datetime |datetime |<= |datetime_le
+bool |datetime |datetime |<> |datetime_ne
+bool |datetime |datetime |= |datetime_eq
+bool |datetime |datetime |> |datetime_gt
+bool |datetime |datetime |>= |datetime_ge
+bool |float4 |float4 |< |float4lt
+bool |float4 |float4 |<= |float4le
+bool |float4 |float4 |<> |float4ne
+bool |float4 |float4 |= |float4eq
+bool |float4 |float4 |> |float4gt
+bool |float4 |float4 |>= |float4ge
+bool |float4 |float8 |< |float48lt
+bool |float4 |float8 |<= |float48le
+bool |float4 |float8 |<> |float48ne
+bool |float4 |float8 |= |float48eq
+bool |float4 |float8 |> |float48gt
+bool |float4 |float8 |>= |float48ge
+bool |float8 |float4 |< |float84lt
+bool |float8 |float4 |<= |float84le
+bool |float8 |float4 |<> |float84ne
+bool |float8 |float4 |= |float84eq
+bool |float8 |float4 |> |float84gt
+bool |float8 |float4 |>= |float84ge
+bool |float8 |float8 |< |float8lt
+bool |float8 |float8 |<= |float8le
+bool |float8 |float8 |<> |float8ne
+bool |float8 |float8 |= |float8eq
+bool |float8 |float8 |> |float8gt
+bool |float8 |float8 |>= |float8ge
+bool |int2 |int2 |< |int2lt
+bool |int2 |int2 |<= |int2le
+bool |int2 |int2 |<> |int2ne
+bool |int2 |int2 |= |int2eq
+bool |int2 |int2 |> |int2gt
+bool |int2 |int2 |>= |int2ge
+bool |int4 |int4 |< |int4lt
+bool |int4 |int4 |<= |int4le
+bool |int4 |int4 |<> |int4ne
+bool |int4 |int4 |= |int4eq
+bool |int4 |int4 |> |int4gt
+bool |int4 |int4 |>= |int4ge
+bool |int4 |name |!!= |int4notin
+bool |int4 |oid |= |int4eqoid
+bool |money |money |< |cash_lt
+bool |money |money |<= |cash_le
+bool |money |money |<> |cash_ne
+bool |money |money |= |cash_eq
+bool |money |money |> |cash_gt
+bool |money |money |>= |cash_ge
+bool |name |name |< |namelt
+bool |name |name |<= |namele
+bool |name |name |<> |namene
+bool |name |name |= |nameeq
+bool |name |name |> |namegt
+bool |name |name |>= |namege
+bool |name |text |!~ |nameregexne
+bool |name |text |!~* |nameicregexne
+bool |name |text |!~~ |namenlike
+bool |name |text |~ |nameregexeq
+bool |name |text |~* |nameicregexeq
+bool |name |text |~~ |namelike
+bool |oid |int4 |= |oideqint4
+bool |oid |name |!!= |oidnotin
+bool |oid |oid |< |int4lt
+bool |oid |oid |<= |int4le
+bool |oid |oid |<> |oidne
+bool |oid |oid |= |oideq
+bool |oid |oid |> |int4gt
+bool |oid |oid |>= |int4ge
+bool |oidint2 |oidint2 |< |oidint2lt
+bool |oidint2 |oidint2 |<= |oidint2le
+bool |oidint2 |oidint2 |<> |oidint2ne
+bool |oidint2 |oidint2 |= |oidint2eq
+bool |oidint2 |oidint2 |> |oidint2gt
+bool |oidint2 |oidint2 |>= |oidint2ge
+bool |oidint4 |oidint4 |< |oidint4lt
+bool |oidint4 |oidint4 |<= |oidint4le
+bool |oidint4 |oidint4 |<> |oidint4ne
+bool |oidint4 |oidint4 |= |oidint4eq
+bool |oidint4 |oidint4 |> |oidint4gt
+bool |oidint4 |oidint4 |>= |oidint4ge
+bool |oidname |oidname |< |oidnamelt
+bool |oidname |oidname |<= |oidnamele
+bool |oidname |oidname |<> |oidnamene
+bool |oidname |oidname |= |oidnameeq
+bool |oidname |oidname |> |oidnamegt
+bool |oidname |oidname |>= |oidnamege
+bool |point |box |===> |on_pb
+bool |point |path |===` |on_ppath
+bool |point |point |!< |point_left
+bool |point |point |!> |point_right
+bool |point |point |!^ |point_above
+bool |point |point |!\| |point_below
+bool |point |point |=\|= |point_eq
+bool |polygon |polygon |&& |poly_overlap
+bool |polygon |polygon |&< |poly_overleft
+bool |polygon |polygon |&> |poly_overright
+bool |polygon |polygon |<< |poly_left
+bool |polygon |polygon |>> |poly_right
+bool |polygon |polygon |@ |poly_contained
+bool |polygon |polygon |~ |poly_contain
+bool |polygon |polygon |~= |poly_same
+bool |reltime |reltime |< |reltimelt
+bool |reltime |reltime |<= |reltimele
+bool |reltime |reltime |<> |reltimene
+bool |reltime |reltime |= |reltimeeq
+bool |reltime |reltime |> |reltimegt
+bool |reltime |reltime |>= |reltimege
+bool |text |text |!~ |textregexne
+bool |text |text |!~* |texticregexne
+bool |text |text |!~~ |textnlike
+bool |text |text |< |text_lt
+bool |text |text |<= |text_le
+bool |text |text |<> |textne
+bool |text |text |= |texteq
+bool |text |text |> |text_gt
+bool |text |text |>= |text_ge
+bool |text |text |~ |textregexeq
+bool |text |text |~* |texticregexeq
+bool |text |text |~~ |textlike
+bool |time |time |< |time_lt
+bool |time |time |<= |time_le
+bool |time |time |<> |time_ne
+bool |time |time |= |time_eq
+bool |time |time |> |time_gt
+bool |time |time |>= |time_ge
+bool |timespan |timespan |< |timespan_lt
+bool |timespan |timespan |<= |timespan_le
+bool |timespan |timespan |<> |timespan_ne
+bool |timespan |timespan |= |timespan_eq
+bool |timespan |timespan |> |timespan_gt
+bool |timespan |timespan |>= |timespan_ge
+bool |timestamp |timestamp |< |timestamplt
+bool |timestamp |timestamp |<= |timestample
+bool |timestamp |timestamp |<> |timestampne
+bool |timestamp |timestamp |= |timestampeq
+bool |timestamp |timestamp |> |timestampgt
+bool |timestamp |timestamp |>= |timestampge
+bool |tinterval |reltime |#< |intervallenlt
+bool |tinterval |reltime |#<= |intervallenle
+bool |tinterval |reltime |#<> |intervallenne
+bool |tinterval |reltime |#= |intervalleneq
+bool |tinterval |reltime |#> |intervallengt
+bool |tinterval |reltime |#>= |intervallenge
+bool |tinterval |tinterval |&& |intervalov
+bool |tinterval |tinterval |<< |intervalct
+bool |tinterval |tinterval |= |intervaleq
+bool |varchar |text |!~ |textregexne
+bool |varchar |text |!~* |texticregexne
+bool |varchar |text |!~~ |textnlike
+bool |varchar |text |~ |textregexeq
+bool |varchar |text |~* |texticregexeq
+bool |varchar |text |~~ |textlike
+bool |varchar |varchar |< |varcharlt
+bool |varchar |varchar |<= |varcharle
+bool |varchar |varchar |<> |varcharne
+bool |varchar |varchar |= |varchareq
+bool |varchar |varchar |> |varchargt
+bool |varchar |varchar |>= |varcharge
+char |char |char |* |charmul
+char |char |char |+ |charpl
+char |char |char |- |charmi
+char |char |char |/ |chardiv
+date |date |int4 |+ |date_pli
+date |date |int4 |- |date_mii
+datetime |datetime |timespan |+ |datetime_add_span
+datetime |datetime |timespan |- |datetime_sub_span
+float4 |float4 |float4 |* |float4mul
+float4 |float4 |float4 |+ |float4pl
+float4 |float4 |float4 |- |float4mi
+float4 |float4 |float4 |/ |float4div
+float8 |box |box |<===> |box_distance
+float8 |circle |circle |<===> |circle_distance
+float8 |float4 |float8 |* |float48mul
+float8 |float4 |float8 |+ |float48pl
+float8 |float4 |float8 |- |float48mi
+float8 |float4 |float8 |/ |float48div
+float8 |float8 |float4 |* |float84mul
+float8 |float8 |float4 |+ |float84pl
+float8 |float8 |float4 |- |float84mi
+float8 |float8 |float4 |/ |float84div
+float8 |float8 |float8 |* |float8mul
+float8 |float8 |float8 |+ |float8pl
+float8 |float8 |float8 |- |float8mi
+float8 |float8 |float8 |/ |float8div
+float8 |float8 |float8 |^ |dpow
+float8 |lseg |box |<===> |dist_sb
+float8 |lseg |lseg |<===> |lseg_distance
+float8 |path |path |<===> |path_distance
+float8 |point |box |<===> |dist_pl
+float8 |point |box |<===> |dist_ps
+float8 |point |box |<===> |dist_pb
+float8 |point |lseg |<===> |dist_ps
+float8 |point |path |<===> |dist_ppth
+float8 |point |point |<===> |point_distance
+int2 |int2 |int2 |% |int2mod
+int2 |int2 |int2 |* |int2mul
+int2 |int2 |int2 |+ |int2pl
+int2 |int2 |int2 |- |int2mi
+int2 |int2 |int2 |/ |int2div
+int4 |date |date |- |date_mi
+int4 |int2 |int4 |% |int24mod
+int4 |int2 |int4 |* |int24mul
+int4 |int2 |int4 |+ |int24pl
+int4 |int2 |int4 |- |int24mi
+int4 |int2 |int4 |/ |int24div
+int4 |int2 |int4 |< |int24lt
+int4 |int2 |int4 |<= |int24le
+int4 |int2 |int4 |<> |int24ne
+int4 |int2 |int4 |= |int24eq
+int4 |int2 |int4 |> |int24gt
+int4 |int2 |int4 |>= |int24ge
+int4 |int4 |int2 |% |int42mod
+int4 |int4 |int2 |* |int42mul
+int4 |int4 |int2 |+ |int42pl
+int4 |int4 |int2 |- |int42mi
+int4 |int4 |int2 |/ |int42div
+int4 |int4 |int2 |< |int42lt
+int4 |int4 |int2 |<= |int42le
+int4 |int4 |int2 |<> |int42ne
+int4 |int4 |int2 |= |int42eq
+int4 |int4 |int2 |> |int42gt
+int4 |int4 |int2 |>= |int42ge
+int4 |int4 |int4 |% |int4mod
+int4 |int4 |int4 |* |int4mul
+int4 |int4 |int4 |+ |int4pl
+int4 |int4 |int4 |- |int4mi
+int4 |int4 |int4 |/ |int4div
+money |money |float8 |* |cash_mul
+money |money |float8 |/ |cash_div
+money |money |money |+ |cash_pl
+money |money |money |- |cash_mi
+timespan |datetime |datetime |- |datetime_sub
+timespan |timespan |timespan |+ |timespan_add
+timespan |timespan |timespan |- |timespan_sub
+tinterval|abstime |abstime |<#> |mktinterval
+
+
+.fi
+.SH "LEFT UNARY OPERATORS"
+The table below gives the left unary operators that are
+registered in the system catalogs.
+
+This list was generated from the Postgres system catalogs with the query:
+
+.nf
+SELECT o.oprname AS left_unary,
+ right.typname AS operand,
+ result.typname AS return_type
+FROM pg_operator o, pg_type right, pg_type result
+WHERE o.oprkind = 'l' AND -- left unary
+ o.oprright = right.oid AND
+ o.oprresult = result.oid
+ORDER BY operand;
+
+left_unary|operand |return_type
+----------+---------+-----------
+@@ |box |point
+@ |float4 |float4
+- |float4 |float4
+|/ |float8 |float8
+@ |float8 |float8
+; |float8 |float8
+: |float8 |float8
+% |float8 |float8
+||/ |float8 |float8
+- |float8 |float8
+- |int2 |int2
+!! |int4 |int4
+- |int4 |int4
+# |polygon |int4
+- |timespan |timespan
+| |tinterval|abstime
+
+.fi
+.in
+.SH "RIGHT UNARY OPERATORS"
+The table below gives the right unary operators that are
+registered in the system catalogs.
+
+This list was generated from the Postgres system catalogs with the query:
+
+.nf
+SELECT o.oprname AS right_unary,
+ left.typname AS operand,
+ result.typname AS return_type
+FROM pg_operator o, pg_type left, pg_type result
+WHERE o.oprkind = 'r' AND -- right unary
+ o.oprleft = left.oid AND
+ o.oprresult = result.oid
+ORDER BY operand;
+
+right_unary|operand|return_type
+-----------+-------+-----------
+% |float8 |float8
+! |int4 |int4
+
+.fi
+.in
+.SH "AGGREGATE FUNCTIONS"
+The table below gives the aggregate functions that are
+registered in the system catalogs.
+
+This list was generated from the Postgres system catalogs with the query:
+
+.nf
+SELECT a.aggname, t.typname
+FROM pg_aggregate a, pg_type t
+WHERE a.aggbasetype = t.oid
+ORDER BY aggname, typname;
+
+aggname|typname
+-------+--------
+avg |float4
+avg |float8
+avg |int2
+avg |int4
+avg |money
+max |abstime
+max |date
+max |datetime
+max |float4
+max |float8
+max |int2
+max |int4
+max |money
+max |timespan
+min |abstime
+min |date
+min |datetime
+min |float4
+min |float8
+min |int2
+min |int4
+min |money
+min |timespan
+sum |float4
+sum |float8
+sum |int2
+sum |int4
+sum |money
+
+.fi
+\fBcount\fR is also available, where \fBcount(*)\fR returns a count of all
+rows while \fBcount(column_name)\fR returns a count of all non-null fields
+in the specified column.
+
+.in
+.SH "SEE ALSO"
+.IR set (l),
+.IR show (l),
+.IR reset (l).
+For examples on specifying literals of built-in types, see
+.IR SQL (l).
+.SH BUGS
+.PP
+Although most of the input and output functions corresponding to the
+base types (e.g., integers and floating point numbers) do some
+error-checking, some are not particularly rigorous about it. More
+importantly, few of the operators and functions (e.g.,
+addition and multiplication) perform any error-checking at all.
+Consequently, many of the numeric operators can (for example)
+silently underflow or overflow.
+.PP
+Some of the input and output functions are not invertible. That is,
+the result of an output function may lose precision when compared to
+the original input.