Commit d1b4327d authored by Peter Eisentraut's avatar Peter Eisentraut

Last round of reference page editing.

parent ac5fdea6
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/declare.sgml,v 1.23 2003/04/29 03:21:28 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/declare.sgml,v 1.24 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,140 +8,162 @@ PostgreSQL documentation ...@@ -8,140 +8,162 @@ PostgreSQL documentation
<refentrytitle id="SQL-DECLARE-TITLE">DECLARE</refentrytitle> <refentrytitle id="SQL-DECLARE-TITLE">DECLARE</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DECLARE</refname>
DECLARE <refpurpose>define a cursor</refpurpose>
</refname>
<refpurpose>
define a cursor
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
DECLARE <replaceable class="parameter">cursorname</replaceable> [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ] DECLARE <replaceable class="parameter">cursorname</replaceable> [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]
CURSOR [ { WITH | WITHOUT } HOLD ] FOR <replaceable class="parameter">query</replaceable> CURSOR [ { WITH | WITHOUT } HOLD ] FOR <replaceable class="parameter">query</replaceable>
[ FOR { READ ONLY | UPDATE [ OF <replaceable class="parameter">column</replaceable> [, ...] ] ] [ FOR { READ ONLY | UPDATE [ OF <replaceable class="parameter">column</replaceable> [, ...] ] } ]
</synopsis> </synopsis>
<refsect2 id="R2-SQL-DECLARE-1"> </refsynopsisdiv>
<refsect2info>
<date>1998-04-15</date> <refsect1>
</refsect2info> <title>Description</title>
<title>
Inputs
</title>
<para> <para>
<variablelist> <command>DECLARE</command> allows a user to create cursors, which
<varlistentry> can be used to retrieve
<term><replaceable class="parameter">cursorname</replaceable></term> a small number of rows at a time out of a larger query. Cursors can
<listitem> return data either in text or in binary format using
<xref linkend="sql-fetch" endterm="sql-fetch-title">.
</para>
<para> <para>
The name of the cursor to be used in subsequent Normal cursors return data in text format, the same as a
<command>FETCH</command> operations. <command>SELECT</> would produce. Since data is stored natively in
binary format, the system must do a conversion to produce the text
format. Once the information comes back in text form, the client
application may need to convert it to a binary format to manipulate
it. In addition, data in the text format is often larger in size
than in the binary format. Binary cursors return the data in the
native binary representation. Nevertheless, if you intend to
display the data as text anyway, retrieving it in text form will
save you some effort on the client side.
</para> </para>
</listitem>
</varlistentry>
<varlistentry>
<term>BINARY</term>
<listitem>
<para> <para>
Causes the cursor to return data in binary rather than in text format. As an example, if a query returns a value of one from an integer column,
you would get a string of <literal>1</> with a default cursor
whereas with a binary cursor you would get
a 4-byte value containing the internal representation of the value.
</para> </para>
</listitem>
</varlistentry>
<varlistentry>
<term>INSENSITIVE</term>
<listitem>
<para> <para>
<acronym>SQL92</acronym> keyword indicating that data retrieved Binary cursors should be used carefully. Many applications,
from the cursor should be unaffected by updates from other including <application>psql</application>, are not prepared to
processes or cursors. By default, all cursors are insensitive. handle binary cursors and expect data to come back in the text
This keyword currently has no effect and is present for format.
compatibility with the SQL standard.
</para> </para>
</listitem>
</varlistentry>
<para>
The string representation is architecture-neutral whereas binary
representation can differ between different machine architectures.
<emphasis><productname>PostgreSQL</productname> does not resolve
byte ordering or representation issues for binary
cursors.</emphasis> Therefore, if your client machine and server
machine use different representations (e.g.,
<quote>big-endian</quote> versus <quote>little-endian</quote>), you
will probably not want your data returned in binary format.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist>
<varlistentry> <varlistentry>
<term>NO SCROLL</term> <term><replaceable class="parameter">cursorname</replaceable></term>
<listitem> <listitem>
<para> <para>
Specifies that the cursor cannot be used to retrieve rows in a The name of the cursor to be used in subsequent
nonsequential fashion (e.g., backward). <command>FETCH</command> operations.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>SCROLL</term> <term><literal>BINARY</literal></term>
<listitem> <listitem>
<para> <para>
Specifies that the cursor may be used to retrieve rows in a Causes the cursor to return data in binary rather than in text format.
nonsequential fashion (e.g., backward). Depending upon the
complexity of the query's execution plan, specifying
<literal>SCROLL</literal> may impose a performance penalty
on the query's execution time.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>WITHOUT HOLD</term> <term><literal>INSENSITIVE</literal></term>
<listitem> <listitem>
<para> <para>
Specifies that the cursor cannot be used outside of the Indicates that data retrieved from the cursor should be
transaction that created it. If neither <literal>WITHOUT unaffected by updates to the tables underlying the cursor while
HOLD</literal> nor <literal>WITH HOLD</literal> is specified, the cursor exists. In PostgreSQL, all cursors are insensitive;
<literal>WITHOUT HOLD</literal> is the default. this key word currently has no effect and is present for
compatibility with the SQL standard.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>WITH HOLD</term> <term><literal>SCROLL</literal></term>
<term><literal>NO SCROLL</literal></term>
<listitem> <listitem>
<para> <para>
Specifies that the cursor may continue to be used after the <literal>SCROLL</literal> specifies that the cursor may be used
transaction that creates it successfully commits. to retrieve rows in a nonsequential fashion (e.g.,
backward). Depending upon the complexity of the query's
execution plan, specifying <literal>SCROLL</literal> may impose
a performance penalty on the query's execution time.
<literal>NO SCROLL</literal> specifies that the cursor cannot be
used to retrieve rows in a nonsequential fashion.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><replaceable class="parameter">query</replaceable></term> <term><literal>WITH HOLD</literal></term>
<term><literal>WITHOUT HOLD</literal></term>
<listitem> <listitem>
<para> <para>
A <command>SELECT</> query which will provide the rows to be <literal>WITH HOLD</literal> specifies that the cursor may
returned by the cursor. continue to be used after the transaction that created it
Refer to <xref linkend="sql-select" endterm="sql-select-title"> successfully commits. <literal>WITHOUT HOLD</literal> specifies
for further information about valid arguments. that the cursor cannot be used outside of the transaction that
created it. If neither <literal>WITHOUT HOLD</literal> nor
<literal>WITH HOLD</literal> is specified, <literal>WITHOUT
HOLD</literal> is the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>READ ONLY</term> <term><replaceable class="parameter">query</replaceable></term>
<listitem> <listitem>
<para> <para>
<acronym>SQL92</acronym> keyword indicating that the cursor will be used A <command>SELECT</> command that will provide the rows to be
in a read only mode. Since this is the only cursor access mode returned by the cursor. Refer to <xref linkend="sql-select"
available in <productname>PostgreSQL</productname> this keyword has no effect. endterm="sql-select-title"> for further information about valid
queries.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>UPDATE</term> <term><literal>FOR READ ONLY</literal></term>
<term><literal>FOR UPDATE</literal></term>
<listitem> <listitem>
<para> <para>
<acronym>SQL92</acronym> keyword indicating that the cursor will be used <literal>FOR READ ONLY</literal> indicates that the cursor will
to update tables. Since cursor updates are not currently be used in a read-only mode. <literal>FOR UPDATE</literal>
supported in <productname>PostgreSQL</productname> this keyword indicates that the cursor will be used to update tables. Since
provokes an informational error message. cursor updates are not currently supported in
<productname>PostgreSQL</productname>, specifying <literal>FOR
UPDATE</literal> will cause an error message and specifying
<literal>FOR READ ONLY</literal> has no effect.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -150,48 +172,37 @@ DECLARE <replaceable class="parameter">cursorname</replaceable> [ BINARY ] [ INS ...@@ -150,48 +172,37 @@ DECLARE <replaceable class="parameter">cursorname</replaceable> [ BINARY ] [ INS
<term><replaceable class="parameter">column</replaceable></term> <term><replaceable class="parameter">column</replaceable></term>
<listitem> <listitem>
<para> <para>
Column(s) to be updated. Column(s) to be updated by the cursor. Since cursor updates are
Since cursor updates are not currently not currently supported in
supported in <productname>PostgreSQL</productname> the UPDATE clause <productname>PostgreSQL</productname>, the <literal>FOR
provokes an informational error message. UPDATE</literal> clause provokes an error message.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
<para> <para>
The <literal>BINARY</literal>, <literal>INSENSITIVE</literal>, The key words <literal>BINARY</literal>,
and <literal>SCROLL</literal> keywords may appear in any order. <literal>INSENSITIVE</literal>, and <literal>SCROLL</literal> may
appear in any order.
</para> </para>
</refsect2> </refsect1>
<refsect2 id="R2-SQL-DECLARE-2"> <refsect1>
<refsect2info> <title>Diagnostics</title>
<date>1998-04-15</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DECLARE CURSOR</computeroutput></term>
DECLARE CURSOR
</computeroutput></term>
<listitem> <listitem>
<para> <para>
The message returned if the <command>SELECT</command> is run successfully. The message returned if the cursor was successfully defined.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>WARNING: Closing pre-existing portal "<replaceable class="parameter">cursorname</replaceable>"</computeroutput></term>
WARNING: Closing pre-existing portal "<replaceable class="parameter">cursorname</replaceable>"
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message is reported if a cursor with the same name already This message is reported if a cursor with the same name already
...@@ -201,9 +212,7 @@ WARNING: Closing pre-existing portal "<replaceable class="parameter">cursorname ...@@ -201,9 +212,7 @@ WARNING: Closing pre-existing portal "<replaceable class="parameter">cursorname
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: DECLARE CURSOR may only be used in begin/end transaction blocks</computeroutput></term>
ERROR: DECLARE CURSOR may only be used in begin/end transaction blocks
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This error occurs if the cursor is not declared within a This error occurs if the cursor is not declared within a
...@@ -213,74 +222,10 @@ ERROR: DECLARE CURSOR may only be used in begin/end transaction blocks ...@@ -213,74 +222,10 @@ ERROR: DECLARE CURSOR may only be used in begin/end transaction blocks
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DECLARE-1">
<refsect1info>
<date>1998-09-04</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DECLARE</command> allows a user to create cursors, which
can be used to retrieve
a small number of rows at a time out of a larger query. Cursors can
return data either in text or in binary format using
<xref linkend="sql-fetch" endterm="sql-fetch-title">.
</para>
<para>
Normal cursors return data in text format, the same as a
<command>SELECT</> would produce. Since data is stored natively in
binary format, the system must do a conversion to produce the text
format. In addition, text formats are often larger in size than the
corresponding binary format. Once the information comes back in
text form, the client application may need to convert it to a
binary format to manipulate it. BINARY cursors give you back the
data in the native binary representation.
</para>
<para>
As an example, if a query returns a value of one from an integer column,
you would get a string of <literal>1</> with a default cursor
whereas with a binary cursor you would get
a 4-byte value equal to control-A (<literal>^A</literal>).
</para>
<para>
BINARY cursors should be used carefully. User applications such
as <application>psql</application> are not aware of binary cursors
and expect data to come back in a text format.
</para>
<para>
String representation is architecture-neutral whereas binary
representation can differ between different machine architectures.
<emphasis><productname>PostgreSQL</productname> does not resolve
byte ordering or representation issues for binary cursors</emphasis>.
Therefore, if your client machine and server machine use different
representations (e.g., <quote>big-endian</quote> versus <quote>little-endian</quote>),
you will probably not want your data returned in
binary format.
<tip>
<para>
If you intend to display the data as text, retrieving it in text form
will save you some effort on the client side.
</para>
</tip>
</para>
<refsect2 id="R2-SQL-DECLARE-3"> <refsect1>
<refsect2info> <title>Notes</title>
<date>1998-09-04</date>
</refsect2info>
<title>
Notes
</title>
<para> <para>
If <literal>WITH HOLD</literal> is not specified, the cursor If <literal>WITH HOLD</literal> is not specified, the cursor
...@@ -295,87 +240,73 @@ ERROR: DECLARE CURSOR may only be used in begin/end transaction blocks ...@@ -295,87 +240,73 @@ ERROR: DECLARE CURSOR may only be used in begin/end transaction blocks
<para> <para>
If <literal>WITH HOLD</literal> is specified and the transaction If <literal>WITH HOLD</literal> is specified and the transaction
that created the cursor successfully commits, the cursor can be that created the cursor successfully commits, the cursor can
continue to be accessed by subsequent transactions in the same session. continue to be accessed by subsequent transactions in the same
(But if the creating session. (But if the creating transaction is aborted, the cursor
transaction is aborted, the cursor is removed.) A cursor created is removed.) A cursor created with <literal>WITH HOLD</literal>
with <literal>WITH HOLD</literal> is closed when an explicit is closed when an explicit <command>CLOSE</command> command is
<command>CLOSE</command> command is issued on it, or when the client issued on it, or the session ends. In the current implementation,
connection is terminated. In the current implementation, the rows the rows represented by a held cursor are copied into a temporary
represented by a held cursor are copied into a temporary file or file or memory area so that they remain available for subsequent
memory area so that they remain available for subsequent transactions. transactions.
</para> </para>
<para> <para>
The <literal>SCROLL</> option should be specified when defining a The <literal>SCROLL</> option should be specified when defining a
cursor that will be used to fetch backwards. This is required by cursor that will be used to fetch backwards. This is required by
<acronym>SQL92</acronym>. However, for compatibility with earlier the SQL standard. However, for compatibility with earlier
versions, <productname>PostgreSQL</productname> will allow versions, <productname>PostgreSQL</productname> will allow
backward fetches without <literal>SCROLL</>, if the cursor's query backward fetches without <literal>SCROLL</>, if the cursor's query
plan is simple enough that no extra overhead is needed to support plan is simple enough that no extra overhead is needed to support
it. However, application developers are advised not to rely on it. However, application developers are advised not to rely on
using backward fetches from a cursor that has not been created using backward fetches from a cursor that has not been created
with <literal>SCROLL</literal>. If <literal>NO SCROLL</> is specified, with <literal>SCROLL</literal>. If <literal>NO SCROLL</> is
then backward fetches are disallowed in any case. specified, then backward fetches are disallowed in any case.
</para> </para>
<para> <para>
In <acronym>SQL92</acronym> cursors are only available in The SQL standard only makes provisions for cursors in embedded
embedded <acronym>SQL</acronym> (<acronym>ESQL</acronym>) applications. <acronym>SQL</acronym>. The <productname>PostgreSQL</productname>
The <productname>PostgreSQL</productname> backend server does not implement an <command>OPEN</command> statement for
does not implement an explicit <command>OPEN cursor</command> cursors; a cursor is considered to be open when it is declared.
statement; a cursor is considered to be open when it is declared. However, <application>ECPG</application>, the embedded SQL
However, <application>ecpg</application>, the preprocessor for <productname>PostgreSQL</productname>, supports
embedded SQL preprocessor for <productname>PostgreSQL</productname>, the standard SQL cursor conventions, including those involving
supports the <acronym>SQL92</acronym> cursor conventions, including those <command>DECLARE</command> and <command>OPEN</command> statements.
involving <command>DECLARE</command> and <command>OPEN</command> statements.
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DECLARESTATEMENT-2"> <refsect1>
<title> <title>Examples</title>
Usage
</title>
<para> <para>
To declare a cursor: To declare a cursor:
<programlisting>
<programlisting> DECLARE liahona CURSOR FOR SELECT * FROM films;
DECLARE liahona CURSOR </programlisting>
FOR SELECT * FROM films; See <xref linkend="sql-fetch" endterm="sql-fetch-title"> for more
</programlisting> examples of cursor usage.
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DECLARESTATEMENT-3"> <refsect1>
<title> <title>Compatibility</title>
Compatibility
</title>
<refsect2 id="R2-SQL-DECLARESTATEMENT-4">
<refsect2info>
<date>1998-04-15</date>
</refsect2info>
<title>
SQL92
</title>
<para> <para>
<acronym>SQL92</acronym> allows cursors only in embedded The SQL standard allows cursors only in embedded
<acronym>SQL</acronym> and in modules. <productname>PostgreSQL</> <acronym>SQL</acronym> and in modules. <productname>PostgreSQL</>
permits cursors to be used interactively. permits cursors to be used interactively.
</para> </para>
<para> <para>
<acronym>SQL92</acronym> allows embedded or modular cursors to The SQL standard allows cursors to update table data. All
update database information. All <productname>PostgreSQL</> <productname>PostgreSQL</> cursors are read only.
cursors are read only.
</para> </para>
<para> <para>
The <literal>BINARY</literal> keyword is a Binary cursors are a <productname>PostgreSQL</productname>
<productname>PostgreSQL</productname> extension. extension.
</para> </para>
</refsect2>
</refsect1> </refsect1>
</refentry> </refentry>
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_aggregate.sgml,v 1.21 2003/03/25 16:15:39 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_aggregate.sgml,v 1.22 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,30 +8,31 @@ PostgreSQL documentation ...@@ -8,30 +8,31 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPAGGREGATE-TITLE">DROP AGGREGATE</refentrytitle> <refentrytitle id="SQL-DROPAGGREGATE-TITLE">DROP AGGREGATE</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP AGGREGATE</refname>
DROP AGGREGATE <refpurpose>remove a user-defined aggregate function</refpurpose>
</refname>
<refpurpose>
remove a user-defined aggregate function
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
DROP AGGREGATE <replaceable class="PARAMETER">name</replaceable> ( <replaceable class="PARAMETER">type</replaceable> ) [ CASCADE | RESTRICT ] DROP AGGREGATE <replaceable class="PARAMETER">name</replaceable> ( <replaceable class="PARAMETER">type</replaceable> ) [ CASCADE | RESTRICT ]
</synopsis> </synopsis>
</refsynopsisdiv>
<refsect2 id="R2-SQL-DROPAGGREGATE-1">
<refsect2info> <refsect1>
<date>1998-04-15</date> <title>Description</title>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP AGGREGATE</command> will delete an existing
aggregate function. To execute this command the current
user must be the owner of the aggregate function.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="parameter">name</replaceable></term> <term><replaceable class="parameter">name</replaceable></term>
...@@ -41,134 +42,92 @@ DROP AGGREGATE <replaceable class="PARAMETER">name</replaceable> ( <replaceable ...@@ -41,134 +42,92 @@ DROP AGGREGATE <replaceable class="PARAMETER">name</replaceable> ( <replaceable
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><replaceable class="parameter">type</replaceable></term> <term><replaceable class="parameter">type</replaceable></term>
<listitem> <listitem>
<para> <para>
The input data type of the aggregate function, The argument data type of the aggregate function, or
or <literal>*</literal> if the function accepts any input type. <literal>*</literal> if the function accepts any data type.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>CASCADE</term> <term><literal>CASCADE</literal></term>
<listitem> <listitem>
<para> <para>
Automatically drop objects that depend on the aggregate. Automatically drop objects that depend on the aggregate function.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>RESTRICT</term> <term><literal>RESTRICT</literal></term>
<listitem> <listitem>
<para> <para>
Refuse to drop the aggregate if there are any dependent objects. Refuse to drop the aggregate function if any objects depend on
This is the default. it. This is the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
<refsect1>
<refsect2 id="R2-SQL-DROPAGGREGATE-2"> <title>Diagnostics</title>
<refsect2info>
<date>1998-04-15</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DROP AGGREGATE</computeroutput></term>
DROP AGGREGATE
</computeroutput></term>
<listitem> <listitem>
<para> <para>
Message returned if the command is successful. Message returned if the command was successful.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: RemoveAggregate: aggregate '<replaceable class="parameter">name</replaceable>' for type <replaceable class="parameter">type</replaceable> does not exist</computeroutput></term>
ERROR: RemoveAggregate: aggregate '<replaceable class="parameter">name</replaceable>' for type <replaceable class="parameter">type</replaceable> does not exist
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message occurs if the aggregate function specified does not This message is returned if the specified aggregate function
exist in the database. does not exist.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPAGGREGATE-1">
<refsect1info>
<date>1998-04-15</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DROP AGGREGATE</command> will delete an existing
aggregate definition. To execute this command the current
user must be the owner of the aggregate.
</para>
<refsect2 id="R2-SQL-DROPAGGREGATE-3"> <refsect1>
<refsect2info> <title>Examples</title>
<date>1998-04-15</date>
</refsect2info>
<title>
Notes
</title>
<para> <para>
Use To remove the aggregate function <literal>myavg</literal> for type
<xref linkend="sql-createaggregate" endterm="sql-createaggregate-title"> <type>integer</type>:
to create aggregate functions. <programlisting>
DROP AGGREGATE myavg(integer);
</programlisting>
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPAGGREGATE-2"> <refsect1>
<title> <title>Compatibility</title>
Usage
</title>
<para> <para>
To remove the <literal>myavg</literal> aggregate for type There is no <command>DROP AGGREGATE</command> statement in the SQL
<literal>int4</literal>: standard.
</para> </para>
<programlisting>
DROP AGGREGATE myavg(int4);
</programlisting>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPAGGREGATE-3"> <refsect1>
<title> <title>See Also</title>
Compatibility
</title>
<refsect2 id="R2-SQL-DROPAGGREGATE-4">
<refsect2info>
<date>1998-04-15</date>
</refsect2info>
<title>
SQL92
</title>
<para> <simplelist type="inline">
There is no <command>DROP AGGREGATE</command> statement <member><xref linkend="sql-createaggregate" endterm="sql-createaggregate-title"></member>
in <acronym>SQL92</acronym>; the statement is a </simplelist>
<productname>PostgreSQL</productname>
language extension.
</para>
</refsect2>
</refsect1> </refsect1>
</refentry> </refentry>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
......
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_cast.sgml,v 1.2 2002/08/11 17:44:12 petere Exp $ --> <!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_cast.sgml,v 1.3 2003/05/04 02:23:16 petere Exp $ -->
<refentry id="SQL-DROPCAST"> <refentry id="SQL-DROPCAST">
<refmeta> <refmeta>
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
<refsynopsisdiv> <refsynopsisdiv>
<synopsis> <synopsis>
DROP CAST (<replaceable>sourcetype</replaceable> AS <replaceable>targettype</replaceable>) DROP CAST (<replaceable>sourcetype</replaceable> AS <replaceable>targettype</replaceable>) [ CASCADE | RESTRICT ]
[ CASCADE | RESTRICT ]
</synopsis> </synopsis>
</refsynopsisdiv> </refsynopsisdiv>
...@@ -30,10 +29,12 @@ DROP CAST (<replaceable>sourcetype</replaceable> AS <replaceable>targettype</rep ...@@ -30,10 +29,12 @@ DROP CAST (<replaceable>sourcetype</replaceable> AS <replaceable>targettype</rep
data type. These are the same privileges that are required to data type. These are the same privileges that are required to
create a cast. create a cast.
</para> </para>
</refsect1>
<variablelist> <refsect1>
<title>Parameters</title> <title>Parameters</title>
<variablelist>
<varlistentry> <varlistentry>
<term><replaceable>sourcetype</replaceable></term> <term><replaceable>sourcetype</replaceable></term>
...@@ -66,45 +67,33 @@ DROP CAST (<replaceable>sourcetype</replaceable> AS <replaceable>targettype</rep ...@@ -66,45 +67,33 @@ DROP CAST (<replaceable>sourcetype</replaceable> AS <replaceable>targettype</rep
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</refsect1>
<refsect1 id="sql-dropcast-notes">
<title>Notes</title>
<para>
Use <command>CREATE CAST</command> to create user-defined casts.
</para>
</refsect1> </refsect1>
<refsect1 id="sql-dropcast-examples"> <refsect1 id="sql-dropcast-examples">
<title>Examples</title> <title>Examples</title>
<para> <para>
To drop the cast from type <type>text</type> to type <type>int</type>: To drop the cast from type <type>text</type> to type <type>int</type>:
<programlisting> <programlisting>
DROP CAST (text AS int4); DROP CAST (text AS int);
</programlisting> </programlisting>
</para> </para>
</refsect1> </refsect1>
<refsect1 id="sql-dropcast-compat"> <refsect1 id="sql-dropcast-compat">
<title>Compatibility</title> <title>Compatibility</title>
<para> <para>
The <command>DROP CAST</command> command conforms to SQL99. The <command>DROP CAST</command> command conforms to the SQL standard.
</para> </para>
</refsect1> </refsect1>
<refsect1>
<refsect1 id="sql-dropcast-seealso">
<title>See Also</title> <title>See Also</title>
<para> <simplelist type="inline">
<xref linkend="sql-createcast" endterm="sql-createcast-title"> <member><xref linkend="sql-createcast" endterm="sql-createcast-title"></member>
</para> </simplelist>
</refsect1> </refsect1>
</refentry> </refentry>
......
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_conversion.sgml,v 1.3 2002/09/21 18:32:54 petere Exp $ --> <!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_conversion.sgml,v 1.4 2003/05/04 02:23:16 petere Exp $ -->
<refentry id="SQL-DROPCONVERSION"> <refentry id="SQL-DROPCONVERSION">
<refmeta> <refmeta>
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
<refsynopsisdiv> <refsynopsisdiv>
<synopsis> <synopsis>
DROP CONVERSION <replaceable>conversion_name</replaceable> DROP CONVERSION <replaceable>conversion_name</replaceable> [ CASCADE | RESTRICT ]
[ CASCADE | RESTRICT ]
</synopsis> </synopsis>
</refsynopsisdiv> </refsynopsisdiv>
...@@ -23,15 +22,14 @@ DROP CONVERSION <replaceable>conversion_name</replaceable> ...@@ -23,15 +22,14 @@ DROP CONVERSION <replaceable>conversion_name</replaceable>
<para> <para>
<command>DROP CONVERSION</command> removes a previously defined conversion. <command>DROP CONVERSION</command> removes a previously defined conversion.
</para>
<para>
To be able to drop a conversion, you must own the conversion. To be able to drop a conversion, you must own the conversion.
</para> </para>
</refsect1>
<variablelist> <refsect1>
<title>Parameters</title> <title>Parameters</title>
<variablelist>
<varlistentry> <varlistentry>
<term><replaceable>conversion_name</replaceable></term> <term><replaceable>conversion_name</replaceable></term>
...@@ -55,23 +53,8 @@ DROP CONVERSION <replaceable>conversion_name</replaceable> ...@@ -55,23 +53,8 @@ DROP CONVERSION <replaceable>conversion_name</replaceable>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</refsect1>
<refsect1 id="sql-dropconversion-notes">
<title>Notes</title>
<para>
Use <command>CREATE CONVERSION</command> to create user-defined conversions.
</para>
<para>
The privileges required to drop a conversion may be changed in a future
release.
</para>
</refsect1> </refsect1>
<refsect1 id="sql-dropconversion-examples"> <refsect1 id="sql-dropconversion-examples">
<title>Examples</title> <title>Examples</title>
...@@ -83,25 +66,21 @@ DROP CONVERSION myname; ...@@ -83,25 +66,21 @@ DROP CONVERSION myname;
</para> </para>
</refsect1> </refsect1>
<refsect1 id="sql-dropconversion-compat"> <refsect1 id="sql-dropconversion-compat">
<title>Compatibility</title> <title>Compatibility</title>
<para> <para>
<command>DROP CONVERSION</command> There is no <command>DROP CONVERSION</command> statement in the SQL
is a <productname>PostgreSQL</productname> extension. standard.
There is no <command>DROP CONVERSION</command>
statement in <acronym>SQL99</acronym>.
</para> </para>
</refsect1> </refsect1>
<refsect1>
<refsect1 id="sql-dropconversion-seealso">
<title>See Also</title> <title>See Also</title>
<para> <simplelist type="inline">
<xref linkend="sql-createconversion" endterm="sql-createconversion-title"> <member><xref linkend="sql-createconversion" endterm="sql-createconversion-title"></member>
</para> </simplelist>
</refsect1> </refsect1>
</refentry> </refentry>
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_database.sgml,v 1.15 2002/04/21 19:02:39 thomas Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_database.sgml,v 1.16 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,59 +8,56 @@ PostgreSQL documentation ...@@ -8,59 +8,56 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPDATABASE-TITLE">DROP DATABASE</refentrytitle> <refentrytitle id="SQL-DROPDATABASE-TITLE">DROP DATABASE</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP DATABASE</refname>
DROP DATABASE <refpurpose>remove a database</refpurpose>
</refname>
<refpurpose>
remove a database
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1999-12-11</date>
</refsynopsisdivinfo>
<synopsis>
DROP DATABASE <replaceable class="PARAMETER">name</replaceable> DROP DATABASE <replaceable class="PARAMETER">name</replaceable>
</synopsis> </synopsis>
</refsynopsisdiv>
<refsect2 id="R2-SQL-DROPDATABASE-1">
<refsect2info> <refsect1>
<date>1999-12-11</date> <title>Description</title>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP DATABASE</command> drops a database. It removes the
catalog entries for the database and deletes the directory
containing the data. It can only be executed by the database owner.
</para>
<para>
<command>DROP DATABASE</command> cannot be undone. Use it with care!
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">name</replaceable></term> <term><replaceable class="PARAMETER">name</replaceable></term>
<listitem> <listitem>
<para> <para>
The name of an existing database to remove. The name of the database to remove.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
<refsect2 id="R2-SQL-DROPDATABASE-2">
<refsect2info>
<date>1999-12-11</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <refsect1>
<title>Diagnostics</title>
<variablelist>
<varlistentry> <varlistentry>
<term><computeroutput>DROP DATABASE</computeroutput></term> <term><computeroutput>DROP DATABASE</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message is returned if the command is successful. This message is returned if the command was successful.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -84,72 +81,34 @@ DROP DATABASE <replaceable class="PARAMETER">name</replaceable> ...@@ -84,72 +81,34 @@ DROP DATABASE <replaceable class="PARAMETER">name</replaceable>
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPDATABASE-1">
<refsect1info>
<date>1999-12-11</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DROP DATABASE</command> removes the catalog entries for an existing
database and deletes the directory containing the data.
It can only be executed by the database owner (usually the user that created
it).
</para>
<para>
<command>DROP DATABASE</command> cannot be undone. Use it with care!
</para>
<refsect2 id="R2-SQL-DROPDATABASE-3"> <refsect1>
<refsect2info> <title>Notes</title>
<date>1999-12-11</date>
</refsect2info>
<title>
Notes
</title>
<para> <para>
This command cannot be executed while connected to the target This command cannot be executed while connected to the target
database. Thus, it might be more convenient to use the shell database. Thus, it might be more convenient to use the program
script <xref linkend="app-dropdb" endterm="app-dropdb-title">, <xref linkend="app-dropdb" endterm="app-dropdb-title"> instead,
which is a wrapper around this command, instead. which is a wrapper around this command.
</para> </para>
</refsect1>
<refsect1>
<title>Compatibility</title>
<para> <para>
Refer to The is no <command>DROP DATABASE</command> statement in the SQL standard.
<xref linkend="sql-createdatabase" endterm="sql-createdatabase-title">
for information on how to create a database.
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPDATABASE-3"> <refsect1>
<title> <title>See Also</title>
Compatibility
</title>
<refsect2 id="R2-SQL-DROPDATABASE-4">
<refsect2info>
<date>1998-04-15</date>
</refsect2info>
<title>
SQL92
</title>
<para> <simplelist type="inline">
<command>DROP DATABASE</command> statement is a <member><xref linkend="sql-createdatabase" endterm="sql-createdatabase-title"></member>
<productname>PostgreSQL</productname> language extension; </simplelist>
there is no such command in <acronym>SQL92</acronym>.
</para>
</refsect2>
</refsect1> </refsect1>
</refentry> </refentry>
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_domain.sgml,v 1.9 2002/11/21 23:34:43 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_domain.sgml,v 1.10 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
<refentry id="SQL-DROPDOMAIN"> <refentry id="SQL-DROPDOMAIN">
<refmeta> <refmeta>
<refentrytitle id="SQL-DROPDOMAIN-TITLE"> <refentrytitle id="SQL-DROPDOMAIN-TITLE">DROP DOMAIN</refentrytitle>
DROP DOMAIN
</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP DOMAIN</refname>
DROP DOMAIN <refpurpose>remove a domain</refpurpose>
</refname>
<refpurpose>
remove a user-defined domain
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
DROP DOMAIN <replaceable class="PARAMETER">domainname</replaceable> [, ...] [ CASCADE | RESTRICT ] DROP DOMAIN <replaceable class="PARAMETER">domainname</replaceable> [, ...] [ CASCADE | RESTRICT ]
</synopsis> </synopsis>
</refsynopsisdiv>
<refsect2 id="R2-SQL-DROPDOMAIN-1">
<refsect2info> <refsect1>
<date>2002-02-24</date> <title>Description</title>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP DOMAIN</command> will remove a domain. Only the
owner of a domain can remove it.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">domainname</replaceable></term> <term><replaceable class="PARAMETER">domainname</replaceable></term>
...@@ -48,8 +46,8 @@ DROP DOMAIN <replaceable class="PARAMETER">domainname</replaceable> [, ...] [ C ...@@ -48,8 +46,8 @@ DROP DOMAIN <replaceable class="PARAMETER">domainname</replaceable> [, ...] [ C
<term><literal>CASCADE</></term> <term><literal>CASCADE</></term>
<listitem> <listitem>
<para> <para>
Automatically drop objects that depend on the domain Automatically drop objects that depend on the domain (such as
(such as table columns). table columns).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -58,69 +56,43 @@ DROP DOMAIN <replaceable class="PARAMETER">domainname</replaceable> [, ...] [ C ...@@ -58,69 +56,43 @@ DROP DOMAIN <replaceable class="PARAMETER">domainname</replaceable> [, ...] [ C
<term><literal>RESTRICT</></term> <term><literal>RESTRICT</></term>
<listitem> <listitem>
<para> <para>
Refuse to drop the domain if there are any dependent objects. Refuse to drop the domain if any objects depend on it. This is
This is the default. the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
<refsect1>
<refsect2 id="R2-SQL-DROPDOMAIN-2"> <title>Diagnostics</title>
<refsect2info>
<date>2002-02-24</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DROP DOMAIN</computeroutput></term>
DROP DOMAIN
</computeroutput></term>
<listitem> <listitem>
<para> <para>
The message returned if the command is successful. Message returned if the command was successful.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: RemoveDomain: type '<replaceable class="parameter">domainname</replaceable>' does not exist</computeroutput></term>
ERROR: RemoveDomain: type '<replaceable class="parameter">domainname</replaceable>' does not exist
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message occurs if the specified domain (or type) is not found. This message occurs if the specified domain does not exist.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPDOMAIN-1">
<refsect1info>
<date>2002-02-24</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DROP DOMAIN</command> will remove a user domain from the
system catalogs.
</para>
<para>
Only the owner of a domain can remove it.
</para>
</refsect1> </refsect1>
<refsect1 id="SQL-DROPDOMAIN-examples"> <refsect1 id="SQL-DROPDOMAIN-examples">
<title>Examples</title> <title>Examples</title>
<para> <para>
To remove the <type>box</type> domain: To remove the domain <type>box</type>:
<programlisting> <programlisting>
DROP DOMAIN box; DROP DOMAIN box;
...@@ -131,13 +103,9 @@ DROP DOMAIN box; ...@@ -131,13 +103,9 @@ DROP DOMAIN box;
<refsect1 id="SQL-DROPDOMAIN-compatibility"> <refsect1 id="SQL-DROPDOMAIN-compatibility">
<title>Compatibility</title> <title>Compatibility</title>
<refsect2 id="R2-SQL-DROPDOMAIN-sql92"> <para>
<title> This command conforms to the SQL standard.
SQL92 </para>
</title>
<para></para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="SQL-DROPDOMAIN-see-also"> <refsect1 id="SQL-DROPDOMAIN-see-also">
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_function.sgml,v 1.23 2002/11/21 23:34:43 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_function.sgml,v 1.24 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,30 +8,33 @@ PostgreSQL documentation ...@@ -8,30 +8,33 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPFUNCTION-TITLE">DROP FUNCTION</refentrytitle> <refentrytitle id="SQL-DROPFUNCTION-TITLE">DROP FUNCTION</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP FUNCTION</refname>
DROP FUNCTION <refpurpose>remove a user-defined function</refpurpose>
</refname>
<refpurpose>
remove a user-defined function
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
DROP FUNCTION <replaceable class="parameter">name</replaceable> ( [ <replaceable class="parameter">type</replaceable> [, ...] ] ) [ CASCADE | RESTRICT ] DROP FUNCTION <replaceable class="parameter">name</replaceable> ( [ <replaceable class="parameter">type</replaceable> [, ...] ] ) [ CASCADE | RESTRICT ]
</synopsis> </synopsis>
</refsynopsisdiv>
<refsect2 id="R2-SQL-DROPFUNCTION-1">
<refsect2info> <refsect1>
<date>1998-04-15</date> <title>Description</title>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP FUNCTION</command> removes the definition of an existing
function. To execute this command the user must be the
owner of the function. The argument types to the
function must be specified, since several different functions
may exist with the same name and different argument lists.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="parameter">name</replaceable></term> <term><replaceable class="parameter">name</replaceable></term>
...@@ -41,96 +44,60 @@ DROP FUNCTION <replaceable class="parameter">name</replaceable> ( [ <replaceable ...@@ -41,96 +44,60 @@ DROP FUNCTION <replaceable class="parameter">name</replaceable> ( [ <replaceable
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><replaceable class="parameter">type</replaceable></term> <term><replaceable class="parameter">type</replaceable></term>
<listitem> <listitem>
<para> <para>
The type of a parameter of the function. The data type of an argument of the function.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>CASCADE</term> <term><literal>CASCADE</literal></term>
<listitem> <listitem>
<para> <para>
Automatically drop objects that depend on the function Automatically drop objects that depend on the function (such as
(such as operators or triggers). operators or triggers).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>RESTRICT</term> <term><literal>RESTRICT</literal></term>
<listitem> <listitem>
<para> <para>
Refuse to drop the function if there are any dependent objects. Refuse to drop the function if any objects depend on it. This
This is the default. is the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
<refsect1>
<refsect2 id="R2-SQL-DROPFUNCTION-2"> <title>Diagnostics</title>
<refsect2info>
<date>1998-04-15</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DROP FUNCTION</computeroutput></term>
DROP FUNCTION
</computeroutput></term>
<listitem> <listitem>
<para> <para>
Message returned if the command completes successfully. Message returned if the command completes successfully.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>WARNING: RemoveFunction: Function <replaceable class="parameter">name</replaceable> (<replaceable class="parameter">types</replaceable>) does not exist</computeroutput></term>
WARNING: RemoveFunction: Function "<replaceable class="parameter">name</replaceable>" ("<replaceable class="parameter">types</replaceable>") does not exist
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message is given if the function specified does not This message is output if the function specified does not exist.
exist in the current database.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPFUNCTION-1">
<refsect1info>
<date>1998-04-15</date>
</refsect1info>
<title>
Description
</title>
<para>
DROP FUNCTION will remove the definition of an existing
function. To execute this command the user must be the
owner of the function. The input argument types to the
function must be specified, since several different functions
may exist with the same name and different argument lists.
</para>
</refsect1>
<refsect1 id="SQL-DROPFUNCTION-notes">
<title>Notes</title>
<para>
Refer to
<xref linkend="sql-createfunction" endterm="sql-createfunction-title">
for information on creating functions.
</para>
</refsect1> </refsect1>
<refsect1 id="SQL-DROPFUNCTION-examples"> <refsect1 id="SQL-DROPFUNCTION-examples">
...@@ -149,8 +116,8 @@ DROP FUNCTION sqrt(integer); ...@@ -149,8 +116,8 @@ DROP FUNCTION sqrt(integer);
<title>Compatibility</title> <title>Compatibility</title>
<para> <para>
A <command>DROP FUNCTION</command> statement is defined in SQL99. One of A <command>DROP FUNCTION</command> statement is defined in the SQL
its syntax forms is similar to PostgreSQL's. standard, but it is not compatible with this command.
</para> </para>
</refsect1> </refsect1>
...@@ -161,6 +128,7 @@ DROP FUNCTION sqrt(integer); ...@@ -161,6 +128,7 @@ DROP FUNCTION sqrt(integer);
<member><xref linkend="sql-createfunction" endterm="sql-createfunction-title"></member> <member><xref linkend="sql-createfunction" endterm="sql-createfunction-title"></member>
</simplelist> </simplelist>
</refsect1> </refsect1>
</refentry> </refentry>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_group.sgml,v 1.4 2002/04/21 19:02:39 thomas Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_group.sgml,v 1.5 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,30 +8,29 @@ PostgreSQL documentation ...@@ -8,30 +8,29 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPGROUP-TITLE">DROP GROUP</refentrytitle> <refentrytitle id="SQL-DROPGROUP-TITLE">DROP GROUP</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP GROUP</refname>
DROP GROUP <refpurpose>remove a user group</refpurpose>
</refname>
<refpurpose>
remove a user group
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>2000-01-14</date>
</refsynopsisdivinfo>
<synopsis>
DROP GROUP <replaceable class="PARAMETER">name</replaceable> DROP GROUP <replaceable class="PARAMETER">name</replaceable>
</synopsis> </synopsis>
</refsynopsisdiv>
<refsect2 id="R2-SQL-DROPGROUP-1">
<refsect2info> <refsect1>
<date>2000-01-14</date> <title>Description</title>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP GROUP</command> removes the specified group. The
users in the group are not deleted.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
...@@ -43,54 +42,26 @@ DROP GROUP <replaceable class="PARAMETER">name</replaceable> ...@@ -43,54 +42,26 @@ DROP GROUP <replaceable class="PARAMETER">name</replaceable>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
<refsect1>
<refsect2 id="R2-SQL-DROPGROUP-2"> <title>Diagnostics</title>
<refsect2info>
<date>2000-01-14</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput>DROP GROUP</computeroutput></term> <term><computeroutput>DROP GROUP</computeroutput></term>
<listitem> <listitem>
<para> <para>
The message returned if the group is successfully deleted. Message returned if the group was successfully removed.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPGROUP-1">
<refsect1info>
<date>2000-01-14</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DROP GROUP</command> removes the specified group from the database.
The users in the group are not deleted.
</para>
<para>
Use <xref linkend="SQL-CREATEGROUP" endterm="SQL-CREATEGROUP-title">
to add new groups, and <xref linkend="SQL-ALTERGROUP"
endterm="SQL-ALTERGROUP-title"> to change a group's membership.
</para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPGROUP-2"> <refsect1>
<title> <title>Examples</title>
Usage
</title>
<para> <para>
To drop a group: To drop a group:
<programlisting> <programlisting>
...@@ -99,23 +70,23 @@ DROP GROUP staff; ...@@ -99,23 +70,23 @@ DROP GROUP staff;
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPGROUP-3"> <refsect1>
<title> <title>Compatibility</title>
Compatibility
</title>
<refsect2 id="R2-SQL-DROPGROUP-4">
<refsect2info>
<date>2000-01-14</date>
</refsect2info>
<title>
SQL92
</title>
<para> <para>
There is no <command>DROP GROUP</command> in <acronym>SQL92</acronym>. There is no <command>DROP GROUP</command> statement in the SQL standard.
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1>
<title>See Also</title>
<simplelist type="inline">
<member><xref linkend="sql-altergroup" endterm="sql-altergroup-title"></member>
<member><xref linkend="sql-creategroup" endterm="sql-creategroup-title"></member>
</simplelist>
</refsect1>
</refentry> </refentry>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_index.sgml,v 1.16 2002/07/12 18:43:13 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_index.sgml,v 1.17 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,30 +8,31 @@ PostgreSQL documentation ...@@ -8,30 +8,31 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPINDEX-TITLE">DROP INDEX</refentrytitle> <refentrytitle id="SQL-DROPINDEX-TITLE">DROP INDEX</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP INDEX</refname>
DROP INDEX <refpurpose>remove an index</refpurpose>
</refname>
<refpurpose>
remove an index
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
DROP INDEX <replaceable class="PARAMETER">index_name</replaceable> [, ...] [ CASCADE | RESTRICT ] DROP INDEX <replaceable class="PARAMETER">index_name</replaceable> [, ...] [ CASCADE | RESTRICT ]
</synopsis> </synopsis>
</refsynopsisdiv>
<refsect2 id="R2-SQL-DROPINDEX-1">
<refsect2info> <refsect1>
<date>1998-04-15</date> <title>Description</title>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP INDEX</command> drops an existing index from the database
system. To execute this command you must be the owner of
the index.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">index_name</replaceable></term> <term><replaceable class="PARAMETER">index_name</replaceable></term>
...@@ -41,128 +42,84 @@ DROP INDEX <replaceable class="PARAMETER">index_name</replaceable> [, ...] [ CAS ...@@ -41,128 +42,84 @@ DROP INDEX <replaceable class="PARAMETER">index_name</replaceable> [, ...] [ CAS
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>CASCADE</term> <term><literal>CASCADE</literal></term>
<listitem> <listitem>
<para> <para>
Automatically drop objects that depend on the index. Automatically drop objects that depend on the index.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>RESTRICT</term> <term><literal>RESTRICT</literal></term>
<listitem> <listitem>
<para> <para>
Refuse to drop the index if there are any dependent objects. Refuse to drop the index if any objects depend on it. This is
This is the default. the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
<refsect1>
<refsect2 id="R2-SQL-DROPINDEX-2"> <title>Diagnostics</title>
<refsect2info>
<date>1998-04-15</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DROP INDEX</computeroutput></term>
DROP INDEX
</computeroutput></term>
<listitem> <listitem>
<para> <para>
The message returned if the command completes successfully. Message returned if the command completes successfully.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: index "<replaceable class="PARAMETER">index_name</replaceable>" does not exist</computeroutput></term>
ERROR: index "<replaceable class="PARAMETER">index_name</replaceable>" does not exist
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message occurs if <replaceable class="PARAMETER">index_name</replaceable> This message is returned if <replaceable
is not an index in the database. class="PARAMETER">index_name</replaceable> is not an existing
index.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPINDEX-1"> <refsect1>
<refsect1info> <title>Examples</title>
<date>1998-04-15</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DROP INDEX</command> drops an existing index from the database
system. To execute this command you must be the owner of
the index.
</para>
<refsect2 id="R2-SQL-DROPINDEX-3">
<refsect2info>
<date>1998-04-15</date>
</refsect2info>
<title>
Notes
</title>
<para> <para>
<command>DROP INDEX</command> is a <productname>PostgreSQL</productname> This command will remove the index <literal>title_idx</literal>:
language extension.
</para> <programlisting>
<para> DROP INDEX title_idx;
Refer to </programlisting>
<xref linkend="sql-createindex" endterm="sql-createindex-title">
for information on how to create indexes.
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPINDEX-2"> <refsect1>
<title> <title>Compatibility</title>
Usage
</title>
<para>
This command will remove the <literal>title_idx</literal> index:
<programlisting> <para>
DROP INDEX title_idx; <command>DROP INDEX</command> is a
</programlisting> <productname>PostgreSQL</productname> language extension. There
are no provisions for indexes in the SQL standard.
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPINDEX-3"> <refsect1>
<title> <title>See Also</title>
Compatibility
</title> <simplelist type="inline">
<member><xref linkend="sql-createindex" endterm="sql-createindex-title"></member>
<refsect2 id="R2-SQL-DROPINDEX-4"> </simplelist>
<refsect2info>
<date>1998-04-15</date>
</refsect2info>
<title>
SQL92
</title>
<para>
<acronym>SQL92</acronym> defines commands by which to access
a generic relational database.
Indexes are an implementation-dependent feature and hence
there are no index-specific commands or definitions in the
<acronym>SQL92</acronym> language.
</para>
</refsect2>
</refsect1> </refsect1>
</refentry> </refentry>
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_language.sgml,v 1.15 2002/07/12 18:43:13 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_language.sgml,v 1.16 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,30 +8,30 @@ PostgreSQL documentation ...@@ -8,30 +8,30 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPLANGUAGE-TITLE">DROP LANGUAGE</refentrytitle> <refentrytitle id="SQL-DROPLANGUAGE-TITLE">DROP LANGUAGE</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP LANGUAGE</refname>
DROP LANGUAGE <refpurpose>remove a user-defined procedural language</refpurpose>
</refname>
<refpurpose>
remove a user-defined procedural language
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
DROP [ PROCEDURAL ] LANGUAGE <replaceable class="PARAMETER">name</replaceable> [ CASCADE | RESTRICT ] DROP [ PROCEDURAL ] LANGUAGE <replaceable class="PARAMETER">name</replaceable> [ CASCADE | RESTRICT ]
</synopsis> </synopsis>
</refsynopsisdiv>
<refsect2 id="R2-SQL-DROPLANGUAGE-1">
<refsect2info> <refsect1>
<date>1998-04-15</date> <title>Description</title>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP LANGUAGE</command> will remove the definition
of the previously registered procedural language called
<replaceable class="parameter">name</replaceable>.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
...@@ -43,128 +43,85 @@ DROP [ PROCEDURAL ] LANGUAGE <replaceable class="PARAMETER">name</replaceable> [ ...@@ -43,128 +43,85 @@ DROP [ PROCEDURAL ] LANGUAGE <replaceable class="PARAMETER">name</replaceable> [
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>CASCADE</term> <term><literal>CASCADE</literal></term>
<listitem> <listitem>
<para> <para>
Automatically drop objects that depend on the language Automatically drop objects that depend on the language (such as
(such as functions in the language). functions in the language).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>RESTRICT</term> <term><literal>RESTRICT</literal></term>
<listitem> <listitem>
<para> <para>
Refuse to drop the language if there are any dependent objects. Refuse to drop the language if any objects depend on it. This
This is the default. is the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</refsect1>
<refsect1>
<title>Diagnostics</title>
</para>
</refsect2>
<refsect2 id="R2-SQL-DROPLANGUAGE-2">
<refsect2info>
<date>1998-04-15</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DROP LANGUAGE</computeroutput></term>
DROP LANGUAGE
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message is returned if the language is successfully dropped. This message is returned if the language was successfully dropped.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: Language "<replaceable class="parameter">name</replaceable>" doesn't exist</computeroutput></term>
ERROR: Language "<replaceable class="parameter">name</replaceable>" doesn't exist
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message occurs if a language called This message is returned if a language called <replaceable
<replaceable class="parameter">name</replaceable> is class="parameter">name</replaceable> is not found in the
not found in the database. database.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPLANGUAGE-1">
<refsect1info>
<date>1998-04-15</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DROP PROCEDURAL LANGUAGE</command> will remove the definition
of the previously registered procedural language called
<replaceable class="parameter">name</replaceable>.
</para>
<refsect2 id="R2-SQL-DROPLANGUAGE-3">
<refsect2info>
<date>1998-04-15</date>
</refsect2info>
<title>
Notes
</title>
<para>
The <command>DROP PROCEDURAL LANGUAGE</command> statement is
a <productname>PostgreSQL</productname> language extension.
</para>
<para>
Refer to
<xref linkend="sql-createlanguage" endterm="sql-createlanguage-title">
for information on how to create procedural languages.
</para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPLANGUAGE-2"> <refsect1>
<title> <title>Examples</title>
Usage
</title>
<para> <para>
This command removes the PL/Sample language: This command removes the procedural language
<literal>plsample</literal>:
<programlisting> <programlisting>
DROP LANGUAGE plsample; DROP LANGUAGE plsample;
</programlisting> </programlisting>
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPLANGUAGE-3"> <refsect1>
<title> <title>Compatibility</title>
Compatibility
</title>
<refsect2 id="R2-SQL-DROPLANGUAGE-5">
<refsect2info>
<date>1998-04-15</date>
</refsect2info>
<title>
SQL92
</title>
<para> <para>
There is no <command>DROP PROCEDURAL LANGUAGE</command> in There is no <command>DROP LANGUAGE</command> statement in the SQL
<acronym>SQL92</acronym>. standard.
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1>
<title>See Also</title>
<simplelist type="inline">
<member><xref linkend="sql-createlanguage" endterm="sql-createlanguage-title"></member>
</simplelist>
</refsect1>
</refentry> </refentry>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_opclass.sgml,v 1.2 2002/09/21 18:32:54 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_opclass.sgml,v 1.3 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,31 +8,30 @@ PostgreSQL documentation ...@@ -8,31 +8,30 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPOPCLASS-TITLE">DROP OPERATOR CLASS</refentrytitle> <refentrytitle id="SQL-DROPOPCLASS-TITLE">DROP OPERATOR CLASS</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP OPERATOR CLASS</refname>
DROP OPERATOR CLASS <refpurpose>remove a user-defined operator class</refpurpose>
</refname>
<refpurpose>
remove a user-defined operator class
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>2002-07-28</date> DROP OPERATOR CLASS <replaceable class="PARAMETER">name</replaceable> USING <replaceable class="PARAMETER">index_method</replaceable> [ CASCADE | RESTRICT ]
</refsynopsisdivinfo> </synopsis>
<synopsis> </refsynopsisdiv>
DROP OPERATOR CLASS <replaceable class="PARAMETER">name</replaceable> USING <replaceable class="PARAMETER">access_method</replaceable> [ CASCADE | RESTRICT ]
</synopsis> <refsect1>
<title>Description</title>
<refsect2 id="R2-SQL-DROPOPCLASS-1">
<refsect2info>
<date>2002-07-28</date>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP OPERATOR CLASS</command> drops an existing operator class.
To execute this command you must be the owner of the operator class.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="parameter">name</replaceable></term> <term><replaceable class="parameter">name</replaceable></term>
...@@ -42,128 +41,85 @@ DROP OPERATOR CLASS <replaceable class="PARAMETER">name</replaceable> USING <rep ...@@ -42,128 +41,85 @@ DROP OPERATOR CLASS <replaceable class="PARAMETER">name</replaceable> USING <rep
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><replaceable class="parameter">access_method</replaceable></term> <term><replaceable class="parameter">index_method</replaceable></term>
<listitem> <listitem>
<para> <para>
The name of the index access method the operator class is for. The name of the index access method the operator class is for.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>CASCADE</term> <term><literal>CASCADE</literal></term>
<listitem> <listitem>
<para> <para>
Automatically drop objects that depend on the operator class. Automatically drop objects that depend on the operator class.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>RESTRICT</term> <term><literal>RESTRICT</literal></term>
<listitem> <listitem>
<para> <para>
Refuse to drop the operator class if there are any dependent objects. Refuse to drop the operator class if any objects depend on it.
This is the default. This is the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
<refsect1>
<refsect2 id="R2-SQL-DROPOPCLASS-2"> <title>Diagnostics</title>
<refsect2info>
<date>2002-07-28</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DROP OPERATOR CLASS</computeroutput></term>
DROP OPERATOR CLASS
</computeroutput></term>
<listitem> <listitem>
<para> <para>
The message returned if the command is successful. Message returned if the command was successful.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPOPCLASS-1">
<refsect1info>
<date>2002-07-28</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DROP OPERATOR CLASS</command> drops an existing operator class
from the database.
To execute this command you must be the owner of the operator class.
</para>
<refsect2 id="R2-SQL-DROPOPCLASS-3">
<refsect2info>
<date>2002-07-28</date>
</refsect2info>
<title>
Notes
</title>
<para>
The <command>DROP OPERATOR CLASS</command> statement is a
<productname>PostgreSQL</productname>
language extension.
</para>
<para>
Refer to
<xref linkend="sql-createopclass" endterm="sql-createopclass-title">
for information on how to create operator classes.
</para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPOPCLASS-2"> <refsect1>
<title> <title>Examples</title>
Usage
</title>
<para> <para>
Remove B-tree operator class <literal>widget_ops</literal>: Remove the B-tree operator class <literal>widget_ops</literal>:
<programlisting> <programlisting>
DROP OPERATOR CLASS widget_ops USING btree; DROP OPERATOR CLASS widget_ops USING btree;
</programlisting> </programlisting>
This command will not execute if there are any existing indexes This command will not succeed if there are any existing indexes
that use the operator class. Add <literal>CASCADE</> to drop that use the operator class. Add <literal>CASCADE</> to drop
such indexes along with the operator class. such indexes along with the operator class.
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPOPCLASS-3"> <refsect1>
<title> <title>Compatibility</title>
Compatibility
</title>
<refsect2 id="R2-SQL-DROPOPCLASS-4">
<refsect2info>
<date>2002-07-28</date>
</refsect2info>
<title>
SQL92
</title>
<para> <para>
There is no <command>DROP OPERATOR CLASS</command> in There is no <command>DROP OPERATOR CLASS</command> statement in the
<acronym>SQL92</acronym>. SQL standard.
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1>
<title>See Also</title>
<simplelist type="inline">
<member><xref linkend="sql-createopclass" endterm="sql-createopclass-title"></member>
</simplelist>
</refsect1>
</refentry> </refentry>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_operator.sgml,v 1.18 2002/07/29 22:14:10 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_operator.sgml,v 1.19 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,216 +8,169 @@ PostgreSQL documentation ...@@ -8,216 +8,169 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPOPERATOR-TITLE">DROP OPERATOR</refentrytitle> <refentrytitle id="SQL-DROPOPERATOR-TITLE">DROP OPERATOR</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP OPERATOR</refname>
DROP OPERATOR <refpurpose>remove a user-defined operator</refpurpose>
</refname>
<refpurpose>
remove a user-defined operator
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1999-07-20</date> DROP OPERATOR <replaceable class="PARAMETER">name</replaceable> ( <replaceable class="PARAMETER">lefttype</replaceable> | NONE , <replaceable class="PARAMETER">righttype</replaceable> | NONE ) [ CASCADE | RESTRICT ]
</refsynopsisdivinfo> </synopsis>
<synopsis> </refsynopsisdiv>
DROP OPERATOR <replaceable class="PARAMETER">id</replaceable> ( <replaceable class="PARAMETER">lefttype</replaceable> | NONE , <replaceable class="PARAMETER">righttype</replaceable> | NONE ) [ CASCADE | RESTRICT ]
</synopsis> <refsect1>
<title>Description</title>
<refsect2 id="R2-SQL-DROPOPERATOR-1">
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP OPERATOR</command> drops an existing operator from
the database system. To execute this command you must be the owner
of the operator.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="parameter">id</replaceable></term> <term><replaceable class="parameter">name</replaceable></term>
<listitem> <listitem>
<para> <para>
The identifier (optionally schema-qualified) of an existing operator. The name (optionally schema-qualified) of an existing operator.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><replaceable class="parameter">lefttype</replaceable></term> <term><replaceable class="parameter">lefttype</replaceable></term>
<listitem> <listitem>
<para> <para>
The type of the operator's left argument; write <literal>NONE</literal> if the The data type of the operator's left operand; write
operator has no left argument. <literal>NONE</literal> if the operator has no left operand.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><replaceable class="parameter">righttype</replaceable></term> <term><replaceable class="parameter">righttype</replaceable></term>
<listitem> <listitem>
<para> <para>
The type of the operator's right argument; write <literal>NONE</literal> if the The data type of the operator's right operand; write
operator has no right argument. <literal>NONE</literal> if the operator has no right operand.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>CASCADE</term> <term><literal>CASCADE</literal></term>
<listitem> <listitem>
<para> <para>
Automatically drop objects that depend on the operator. Automatically drop objects that depend on the operator.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>RESTRICT</term> <term><literal>RESTRICT</literal></term>
<listitem> <listitem>
<para> <para>
Refuse to drop the operator if there are any dependent objects. Refuse to drop the operator if any objects depend on it. This
This is the default. is the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
<refsect1>
<refsect2 id="R2-SQL-DROPOPERATOR-2"> <title>Diagnostics</title>
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DROP OPERATOR</computeroutput></term>
DROP OPERATOR
</computeroutput></term>
<listitem> <listitem>
<para> <para>
The message returned if the command is successful. Message returned if the command was successful.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: RemoveOperator: binary operator '<replaceable class="PARAMETER">name</replaceable>' taking '<replaceable class="PARAMETER">lefttype</replaceable>' and '<replaceable class="PARAMETER">righttype</replaceable>' does not exist</computeroutput></term>
ERROR: RemoveOperator: binary operator '<replaceable class="PARAMETER">oper</replaceable>' taking '<replaceable class="PARAMETER">lefttype</replaceable>' and '<replaceable class="PARAMETER">righttype</replaceable>' does not exist
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message occurs if the specified binary operator does not exist. This message is returned if the specified binary operator does not exist.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: RemoveOperator: left unary operator '<replaceable class="PARAMETER">name</replaceable>' taking '<replaceable class="PARAMETER">lefttype</replaceable>' does not exist</computeroutput></term>
ERROR: RemoveOperator: left unary operator '<replaceable class="PARAMETER">oper</replaceable>' taking '<replaceable class="PARAMETER">lefttype</replaceable>' does not exist
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message occurs if the left unary operator This message is returned if the specified left unary operator
specified does not exist. does not exist.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: RemoveOperator: right unary operator '<replaceable class="PARAMETER">name</replaceable>' taking '<replaceable class="PARAMETER">righttype</replaceable>' does not exist</computeroutput></term>
ERROR: RemoveOperator: right unary operator '<replaceable class="PARAMETER">oper</replaceable>' taking '<replaceable class="PARAMETER">righttype</replaceable>' does not exist
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message occurs if the right unary operator This message is returned if the specified right unary operator
specified does not exist. does not exist.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
</refsynopsisdiv> <refsect1>
<title>Examples</title>
<refsect1 id="R1-SQL-DROPOPERATOR-1">
<refsect1info>
<date>1998-09-22</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DROP OPERATOR</command> drops an existing operator from the
database.
To execute this command you must be the owner of the operator.
</para>
<para> <para>
The left or right type of a left or right unary Remove the power operator <literal>a^b</literal> for type <type>integer</type>:
operator, respectively, must be specified as <literal>NONE</literal>. <programlisting>
DROP OPERATOR ^ (integer, integer);
</programlisting>
</para> </para>
<refsect2 id="R2-SQL-DROPOPERATOR-3">
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Notes
</title>
<para> <para>
The <command>DROP OPERATOR</command> statement is a Remove the left unary bitwise complement operator
<productname>PostgreSQL</productname> <literal>~b</literal> for type <type>bit</type>:
language extension. <programlisting>
DROP OPERATOR ~ (none, bit);
</programlisting>
</para> </para>
<para> <para>
Refer to Remove the right unary factorial operator <literal>x!</literal>
<xref linkend="sql-createoperator" endterm="sql-createoperator-title"> for type <type>integer</type>:
for information on how to create operators. <programlisting>
DROP OPERATOR ! (integer, none);
</programlisting>
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPOPERATOR-2"> <refsect1>
<title> <title>Compatibility</title>
Usage
</title>
<para>
Remove power operator <literal>a^n</literal> for <literal>int4</literal>:
<programlisting>
DROP OPERATOR ^ (int4, int4);
</programlisting>
</para>
<para>
Remove left unary negation operator (<literal>! b</literal>) for <type>boolean</type>:
<programlisting>
DROP OPERATOR ! (none, bool);
</programlisting>
</para>
<para> <para>
Remove right unary factorial operator (<literal>i !</literal>) for There is no <command>DROP OPERATOR</command> statement in the SQL standard.
<literal>int4</literal>:
<programlisting>
DROP OPERATOR ! (int4, none);
</programlisting>
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPOPERATOR-3"> <refsect1>
<title> <title>See Also</title>
Compatibility
</title> <simplelist type="inline">
<member><xref linkend="sql-createoperator" endterm="sql-createoperator-title"></member>
<refsect2 id="R2-SQL-DROPOPERATOR-4"> </simplelist>
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
SQL92
</title>
<para>
There is no <command>DROP OPERATOR</command> in <acronym>SQL92</acronym>.
</para>
</refsect2>
</refsect1> </refsect1>
</refentry> </refentry>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_rule.sgml,v 1.16 2002/07/12 18:43:13 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_rule.sgml,v 1.17 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,169 +8,122 @@ PostgreSQL documentation ...@@ -8,169 +8,122 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPRULE-TITLE">DROP RULE</refentrytitle> <refentrytitle id="SQL-DROPRULE-TITLE">DROP RULE</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP RULE</refname>
DROP RULE <refpurpose>remove a rewrite rule</refpurpose>
</refname>
<refpurpose>
remove a rewrite rule
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1998-09-22</date>
</refsynopsisdivinfo>
<synopsis>
DROP RULE <replaceable class="PARAMETER">name</replaceable> ON <replaceable class="PARAMETER">relation</replaceable> [ CASCADE | RESTRICT ] DROP RULE <replaceable class="PARAMETER">name</replaceable> ON <replaceable class="PARAMETER">relation</replaceable> [ CASCADE | RESTRICT ]
</synopsis> </synopsis>
</refsynopsisdiv>
<refsect2 id="R2-SQL-DROPRULE-1">
<refsect2info> <refsect1>
<date>1998-09-22</date> <title>Description</title>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP RULE</command> drops a rewrite rule.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="parameter">name</replaceable></term> <term><replaceable class="parameter">name</replaceable></term>
<listitem> <listitem>
<para> <para>
The name of an existing rule to drop. The name of the rule to drop.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><replaceable class="parameter">relation</replaceable></term> <term><replaceable class="parameter">relation</replaceable></term>
<listitem> <listitem>
<para> <para>
The name (optionally schema-qualified) of the relation the rule The name (optionally schema-qualified) of the table or view that
applies to. the rule applies to.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>CASCADE</term> <term><literal>CASCADE</literal></term>
<listitem> <listitem>
<para> <para>
Automatically drop objects that depend on the rule. Automatically drop objects that depend on the rule.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>RESTRICT</term> <term><literal>RESTRICT</literal></term>
<listitem> <listitem>
<para> <para>
Refuse to drop the rule if there are any dependent objects. Refuse to drop the rule if any objects depend on it. This is
This is the default. the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</refsect1>
<refsect1>
<title>Diagnostics</title>
</para>
</refsect2>
<refsect2 id="R2-SQL-DROPRULE-2">
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DROP RULE</computeroutput></term>
DROP RULE
</computeroutput></term>
<listitem> <listitem>
<para> <para>
Message returned if successful. Message returned if the command was successful.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: Rule "<replaceable class="parameter">name</replaceable>" not found</computeroutput></term>
ERROR: Rule "<replaceable class="parameter">name</replaceable>" not found
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message occurs if the specified rule does not exist. Message if the specified rule does not exist.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPRULE-1">
<refsect1info>
<date>1998-09-22</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DROP RULE</command> drops a rule from the specified
<productname>PostgreSQL</productname> rule
system. <productname>PostgreSQL</productname>
will immediately cease enforcing it and
will purge its definition from the system catalogs.
</para>
<refsect2 id="R2-SQL-DROPRULE-3">
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Notes
</title>
<para>
The <command>DROP RULE</command> statement is a
<productname>PostgreSQL</productname>
language extension.
</para>
<para>
Refer to <command>CREATE RULE</command> for
information on how to create rules.
</para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPRULE-2"> <refsect1>
<title> <title>Examples</title>
Usage
</title>
<para> <para>
To drop the rewrite rule <literal>newrule</literal>: To drop the rewrite rule <literal>newrule</literal>:
<programlisting> <programlisting>
DROP RULE newrule ON mytable; DROP RULE newrule ON mytable;
</programlisting> </programlisting>
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPRULE-3"> <refsect1>
<title> <title>Compatibility</title>
Compatibility
</title>
<refsect2 id="R2-SQL-DROPRULE-5">
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
SQL92
</title>
<para> <para>
There is no <command>DROP RULE</command> in SQL92. There is no <command>DROP RULE</command> statement in the SQL standard.
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1>
<title>See Also</title>
<simplelist type="inline">
<member><xref linkend="sql-createrule" endterm="sql-createrule-title"></member>
</simplelist>
</refsect1>
</refentry> </refentry>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_schema.sgml,v 1.1 2002/07/18 16:47:22 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_schema.sgml,v 1.2 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,31 +8,35 @@ PostgreSQL documentation ...@@ -8,31 +8,35 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPSCHEMA-TITLE">DROP SCHEMA</refentrytitle> <refentrytitle id="SQL-DROPSCHEMA-TITLE">DROP SCHEMA</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP SCHEMA</refname>
DROP SCHEMA <refpurpose>remove a schema</refpurpose>
</refname>
<refpurpose>
remove a schema
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>2002-07-18</date>
</refsynopsisdivinfo>
<synopsis>
DROP SCHEMA <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ] DROP SCHEMA <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ]
</synopsis>
</refsynopsisdiv>
</synopsis> <refsect1>
<title>Description</title>
<para>
<command>DROP SCHEMA</command> removes schemas from the database.
</para>
<refsect2 id="R2-SQL-DROPSCHEMA-1">
<refsect2info>
<date>2002-07-18</date>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
A schema can only be dropped by its owner or a superuser. Note that
the owner can drop the schema (and thereby all contained objects)
even if he does not own some of the objects within the schema.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">name</replaceable></term> <term><replaceable class="PARAMETER">name</replaceable></term>
...@@ -42,128 +46,84 @@ DROP SCHEMA <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE ...@@ -42,128 +46,84 @@ DROP SCHEMA <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>CASCADE</term> <term><literal>CASCADE</literal></term>
<listitem> <listitem>
<para> <para>
Automatically drop objects (tables, functions, etc) that are contained Automatically drop objects (tables, functions, etc.) that are
in the schema. contained in the schema.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>RESTRICT</term> <term><literal>RESTRICT</literal></term>
<listitem> <listitem>
<para> <para>
Refuse to drop the schema if it contains any objects. Refuse to drop the schema if it contains any objects. This is
This is the default. the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
<refsect1>
<refsect2 id="R2-SQL-DROPSCHEMA-2"> <title>Diagnostics</title>
<refsect2info>
<date>2002-07-18</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DROP SCHEMA</computeroutput></term>
DROP SCHEMA
</computeroutput></term>
<listitem> <listitem>
<para> <para>
The message returned if the schema is successfully dropped. Message returned if the schema was successfully dropped.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: Schema "<replaceable class="parameter">name</replaceable>" does not exist</computeroutput></term>
ERROR: Schema "<replaceable class="parameter">name</replaceable>" does not exist
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message occurs if the specified schema does not exist. This message is returned if the specified schema does not exist.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPSCHEMA-1">
<refsect1info>
<date>2002-07-18</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DROP SCHEMA</command> removes schemas from the data base.
</para>
<para>
A schema can only be dropped by its owner or a superuser. Note that
the owner can drop the schema (and thereby all contained objects)
even if he does not own some of the objects within the schema.
</para>
<refsect2 id="R2-SQL-DROPSCHEMA-3">
<refsect2info>
<date>2002-07-18</date>
</refsect2info>
<title>
Notes
</title>
<para>
Refer to the <command>CREATE SCHEMA</command> statement for
information on how to create a schema.
</para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPSCHEMA-2"> <refsect1>
<title> <title>Examples</title>
Usage
</title>
<para> <para>
To remove schema <literal>mystuff</literal> from the database, To remove schema <literal>mystuff</literal> from the database,
along with everything it contains: along with everything it contains:
<programlisting> <programlisting>
DROP SCHEMA mystuff CASCADE; DROP SCHEMA mystuff CASCADE;
</programlisting> </programlisting>
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPSCHEMA-3"> <refsect1>
<title> <title>Compatibility</title>
Compatibility
</title>
<refsect2 id="R2-SQL-DROPSCHEMA-4">
<refsect2info>
<date>2002-07-18</date>
</refsect2info>
<title>
SQL92
</title>
<para> <para>
<command>DROP SCHEMA</command> is fully compatible with <command>DROP SCHEMA</command> is fully conforming with the SQL
<acronym>SQL92</acronym>, except that the standard only allows standard, except that the standard only allows one schema to be
one schema to be dropped per command. dropped per command.
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1>
<title>See Also</title>
<simplelist type="inline">
<member><xref linkend="sql-createschema" endterm="sql-createschema-title"></member>
</simplelist>
</refsect1>
</refentry> </refentry>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_sequence.sgml,v 1.16 2002/07/18 15:49:08 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_sequence.sgml,v 1.17 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,31 +8,29 @@ PostgreSQL documentation ...@@ -8,31 +8,29 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPSEQUENCE-TITLE">DROP SEQUENCE</refentrytitle> <refentrytitle id="SQL-DROPSEQUENCE-TITLE">DROP SEQUENCE</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP SEQUENCE</refname>
DROP SEQUENCE <refpurpose>remove a sequence</refpurpose>
</refname>
<refpurpose>
remove a sequence
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
DROP SEQUENCE <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ] DROP SEQUENCE <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ]
</synopsis>
</refsynopsisdiv>
</synopsis> <refsect1>
<title>Description</title>
<refsect2 id="R2-SQL-DROPSEQUENCE-1">
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP SEQUENCE</command> removes sequence number generators.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">name</replaceable></term> <term><replaceable class="PARAMETER">name</replaceable></term>
...@@ -42,126 +40,80 @@ DROP SEQUENCE <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCAD ...@@ -42,126 +40,80 @@ DROP SEQUENCE <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCAD
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>CASCADE</term> <term><literal>CASCADE</literal></term>
<listitem> <listitem>
<para> <para>
Automatically drop objects that depend on the sequence. Automatically drop objects that depend on the sequence.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>RESTRICT</term> <term><literal>RESTRICT</literal></term>
<listitem> <listitem>
<para> <para>
Refuse to drop the sequence if there are any dependent objects. Refuse to drop the sequence if any objects depend on it. This
This is the default. is the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
<refsect1>
<refsect2 id="R2-SQL-DROPSEQUENCE-2"> <title>Diagnostics</title>
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DROP SEQUENCE</computeroutput></term>
DROP SEQUENCE
</computeroutput></term>
<listitem> <listitem>
<para> <para>
The message returned if the sequence is successfully dropped. Message returned if the sequence was successfully dropped.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: sequence "<replaceable class="parameter">name</replaceable>" does not exist</computeroutput></term>
ERROR: sequence "<replaceable class="parameter">name</replaceable>" does not exist
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message occurs if the specified sequence does not exist. Message returned if the specified sequence does not exist.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</refsect1>
</para> <refsect1>
</refsect2> <title>Examples</title>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPSEQUENCE-1">
<refsect1info>
<date>1998-09-22</date>
</refsect1info>
<title>
Description
</title>
<para> <para>
<command>DROP SEQUENCE</command> removes sequence number generators from the To remove the sequence <literal>serial</literal>:
data base. With the current implementation of sequences as
special tables it works just like the <command>DROP TABLE</command>
statement.
</para>
<refsect2 id="R2-SQL-DROPSEQUENCE-3"> <programlisting>
<refsect2info> DROP SEQUENCE serial;
<date>1998-09-22</date> </programlisting>
</refsect2info>
<title>
Notes
</title>
<para>
The <command>DROP SEQUENCE</command> statement is a
<productname>PostgreSQL</productname>
language extension.
</para>
<para>
Refer to the <command>CREATE SEQUENCE</command> statement for
information on how to create a sequence.
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPSEQUENCE-2"> <refsect1>
<title> <title>Compatibility</title>
Usage
</title>
<para>
To remove sequence <literal>serial</literal> from database:
<programlisting> <para>
DROP SEQUENCE serial; There is no <command>DROP SEQUENCE</command> statement in the SQL standard.
</programlisting>
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPSEQUENCE-3"> <refsect1>
<title> <title>See Also</title>
Compatibility
</title> <simplelist type="inline">
<member><xref linkend="sql-createsequence" endterm="sql-createsequence-title"></member>
<refsect2 id="R2-SQL-DROPSEQUENCE-4"> </simplelist>
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
SQL92
</title>
<para>
There is no <command>DROP SEQUENCE</command> in <acronym>SQL92</acronym>.
</para>
</refsect2>
</refsect1> </refsect1>
</refentry> </refentry>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_table.sgml,v 1.17 2002/07/14 22:47:56 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_table.sgml,v 1.18 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,158 +8,126 @@ PostgreSQL documentation ...@@ -8,158 +8,126 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPTABLE-TITLE">DROP TABLE</refentrytitle> <refentrytitle id="SQL-DROPTABLE-TITLE">DROP TABLE</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP TABLE</refname>
DROP TABLE <refpurpose>remove a table</refpurpose>
</refname>
<refpurpose>
remove a table
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
DROP TABLE <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ] DROP TABLE <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ]
</synopsis>
</refsynopsisdiv>
</synopsis> <refsect1>
<title>Description</title>
<para>
<command>DROP TABLE</command> removes tables from the database.
Only its owner may destroy a table. To empty a table of rows,
without destroying the table, use <command>DELETE</command>.
</para>
<refsect2 id="R2-SQL-DROPTABLE-1">
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP TABLE</command> always removes any indexes, rules,
triggers, and constraints that exist for the target table.
However, to drop a table that is referenced by a foreign-key
constraint of another table, <literal>CASCADE</> must be
specified. (<literal>CASCADE</> will remove the foreign-key
constraint, not the other table entirely.)
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">name</replaceable></term> <term><replaceable class="PARAMETER">name</replaceable></term>
<listitem> <listitem>
<para> <para>
The name (optionally schema-qualified) of an existing table to drop. The name (optionally schema-qualified) of the table to drop.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>CASCADE</term> <term><literal>CASCADE</literal></term>
<listitem> <listitem>
<para> <para>
Automatically drop objects that depend on the table Automatically drop objects that depend on the table (such as
(such as views). views).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>RESTRICT</term> <term><literal>RESTRICT</literal></term>
<listitem> <listitem>
<para> <para>
Refuse to drop the table if there are any dependent objects. Refuse to drop the table if any objects depend on it. This is
This is the default. the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
<refsect1>
<refsect2 id="R2-SQL-DROPTABLE-2"> <title>Diagnostics</title>
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DROP TABLE</computeroutput></term>
DROP TABLE
</computeroutput></term>
<listitem> <listitem>
<para> <para>
The message returned if the command completes successfully. Message returned if the command completes successfully.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: table "<replaceable class="parameter">name</replaceable>" does not exist</computeroutput></term>
ERROR: table "<replaceable class="parameter">name</replaceable>" does not exist
</computeroutput></term>
<listitem> <listitem>
<para> <para>
If the specified table does not exist in the database. Message returned if the specified table does not exist.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPTABLE-1">
<refsect1info>
<date>1998-09-22</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DROP TABLE</command> removes tables from the database.
Only its owner may destroy a table. A table may be emptied of rows, but not
destroyed, by using <command>DELETE</command>.
</para>
<para>
<command>DROP TABLE</command> always removes any indexes, rules,
triggers, and constraints that exist for the target table. However,
to drop a table that is referenced by a foreign-key constraint of another
table, CASCADE must be specified. (CASCADE will remove the foreign-key
constraint, not the other table itself.)
</para>
<refsect2 id="R2-SQL-DROPTABLE-3">
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Notes
</title>
<para>
Refer to <command>CREATE TABLE</command> and
<command>ALTER TABLE</command> for information on
how to create or modify tables.
</para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPTABLE-2"> <refsect1>
<title> <title>Examples</title>
Usage
</title>
<para> <para>
To destroy two tables, <literal>films</literal> and To destroy two tables, <literal>films</literal> and
<literal>distributors</literal>: <literal>distributors</literal>:
<programlisting> <programlisting>
DROP TABLE films, distributors; DROP TABLE films, distributors;
</programlisting> </programlisting>
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPTABLE-3"> <refsect1>
<title> <title>Compatibility</title>
Compatibility
</title>
<refsect2 id="R2-SQL-DROPTABLE-4">
<title>
SQL92
</title>
<para> <para>
This command conforms to the SQL standard.
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1>
<title>See Also</title>
<simplelist type="inline">
<member><xref linkend="sql-altertable" endterm="sql-altertable-title"></member>
<member><xref linkend="sql-createtable" endterm="sql-createtable-title"></member>
</simplelist>
</refsect1>
</refentry> </refentry>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_trigger.sgml,v 1.14 2002/11/21 23:34:43 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_trigger.sgml,v 1.15 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,124 +8,102 @@ PostgreSQL documentation ...@@ -8,124 +8,102 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPTRIGGER-TITLE">DROP TRIGGER</refentrytitle> <refentrytitle id="SQL-DROPTRIGGER-TITLE">DROP TRIGGER</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP TRIGGER</refname>
DROP TRIGGER <refpurpose>remove a trigger</refpurpose>
</refname>
<refpurpose>
remove a trigger
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1998-09-22</date>
</refsynopsisdivinfo>
<synopsis>
DROP TRIGGER <replaceable class="PARAMETER">name</replaceable> ON <replaceable class="PARAMETER">table</replaceable> [ CASCADE | RESTRICT ] DROP TRIGGER <replaceable class="PARAMETER">name</replaceable> ON <replaceable class="PARAMETER">table</replaceable> [ CASCADE | RESTRICT ]
</synopsis> </synopsis>
</refsynopsisdiv>
<refsect2 id="R2-SQL-DROPTRIGGER-1">
<refsect2info> <refsect1>
<date>1998-09-22</date> <title>Description</title>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP TRIGGER</command> will remove an existing
trigger definition. To execute this command, the current
user must be the owner of the table for which the trigger is defined.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">name</replaceable></term> <term><replaceable class="PARAMETER">name</replaceable></term>
<listitem> <listitem>
<para> <para>
The name of an existing trigger. The name of the trigger to remove.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">table</replaceable></term> <term><replaceable class="PARAMETER">table</replaceable></term>
<listitem> <listitem>
<para> <para>
The name (optionally schema-qualified) of a table. The name (optionally schema-qualified) of a table for which the
trigger is defined.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>CASCADE</term> <term><literal>CASCADE</literal></term>
<listitem> <listitem>
<para> <para>
Automatically drop objects that depend on the trigger. Automatically drop objects that depend on the trigger.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>RESTRICT</term> <term><literal>RESTRICT</literal></term>
<listitem> <listitem>
<para> <para>
Refuse to drop the trigger if there are any dependent objects. Refuse to drop the trigger if any objects depend on it. This is
This is the default. the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
<refsect1>
<refsect2 id="R2-SQL-DROPTRIGGER-2"> <title>Diagnostics</title>
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DROP TRIGGER</computeroutput></term>
DROP TRIGGER
</computeroutput></term>
<listitem> <listitem>
<para> <para>
The message returned if the trigger is successfully dropped. Message returned if the trigger was successfully dropped.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: DropTrigger: there is no trigger <replaceable class="PARAMETER">name</replaceable> on relation "<replaceable class="parameter">table</replaceable>"</computeroutput></term>
ERROR: DropTrigger: there is no trigger <replaceable class="PARAMETER">name</replaceable> on relation "<replaceable class="parameter">table</replaceable>"
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message occurs if the trigger specified does not exist. Message returned if the specified trigger does not exist.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPTRIGGER-1">
<refsect1info>
<date>1998-09-22</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DROP TRIGGER</command> will remove an existing
trigger definition. To execute this command the current
user must be the owner of the table for which the trigger is defined.
</para>
</refsect1> </refsect1>
<refsect1 id="SQL-DROPTRIGGER-examples"> <refsect1 id="SQL-DROPTRIGGER-examples">
<title>Examples</title> <title>Examples</title>
<para> <para>
Destroy the <literal>if_dist_exists</literal> trigger Destroy the trigger <literal>if_dist_exists</literal> on the table
on table <literal>films</literal>: <literal>films</literal>:
<programlisting> <programlisting>
DROP TRIGGER if_dist_exists ON films; DROP TRIGGER if_dist_exists ON films;
...@@ -136,30 +114,13 @@ DROP TRIGGER if_dist_exists ON films; ...@@ -136,30 +114,13 @@ DROP TRIGGER if_dist_exists ON films;
<refsect1 id="SQL-DROPTRIGGER-compatibility"> <refsect1 id="SQL-DROPTRIGGER-compatibility">
<title>Compatibility</title> <title>Compatibility</title>
<variablelist>
<varlistentry>
<term>SQL92</term>
<listitem>
<para>
There is no <command>DROP TRIGGER</command> statement in
<acronym>SQL92</acronym>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>SQL99</term>
<listitem>
<para> <para>
The <command>DROP TRIGGER</command> statement in The <command>DROP TRIGGER</command> statement in
<productname>PostgreSQL</productname> is incompatible with <productname>PostgreSQL</productname> is incompatible with the SQL
SQL99. In SQL99, trigger names are not local to tables, so the standard. In the SQL standard, trigger names are not local to
command is simply <literal>DROP TRIGGER tables, so the command is simply <literal>DROP TRIGGER
<replaceable>name</replaceable></literal>. <replaceable>name</replaceable></literal>.
</para> </para>
</listitem>
</varlistentry>
</variablelist>
</refsect1> </refsect1>
<refsect1> <refsect1>
...@@ -169,6 +130,7 @@ DROP TRIGGER if_dist_exists ON films; ...@@ -169,6 +130,7 @@ DROP TRIGGER if_dist_exists ON films;
<member><xref linkend="sql-createtrigger" endterm="sql-createtrigger-title"></member> <member><xref linkend="sql-createtrigger" endterm="sql-createtrigger-title"></member>
</simplelist> </simplelist>
</refsect1> </refsect1>
</refentry> </refentry>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_type.sgml,v 1.20 2002/11/21 23:34:43 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_type.sgml,v 1.21 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,118 +8,91 @@ PostgreSQL documentation ...@@ -8,118 +8,91 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPTYPE-TITLE">DROP TYPE</refentrytitle> <refentrytitle id="SQL-DROPTYPE-TITLE">DROP TYPE</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP TYPE</refname>
DROP TYPE <refpurpose>remove a user-defined data type</refpurpose>
</refname>
<refpurpose>
remove a user-defined data type
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
DROP TYPE <replaceable class="PARAMETER">typename</replaceable> [, ...] [ CASCADE | RESTRICT ] DROP TYPE <replaceable class="PARAMETER">typename</replaceable> [, ...] [ CASCADE | RESTRICT ]
</synopsis>
</refsynopsisdiv>
</synopsis> <refsect1>
<title>Description</title>
<refsect2 id="R2-SQL-DROPTYPE-1">
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP TYPE</command> will remove a user-defined data type.
Only the owner of a type can remove it.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">typename</replaceable></term> <term><replaceable class="PARAMETER">typename</replaceable></term>
<listitem> <listitem>
<para> <para>
The name (optionally schema-qualified) of an existing type. The name (optionally schema-qualified) of the data type to remove.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>CASCADE</term> <term><literal>CASCADE</literal></term>
<listitem> <listitem>
<para> <para>
Automatically drop objects that depend on the type Automatically drop objects that depend on the type (such as
(such as table columns, functions, operators, etc). table columns, functions, operators).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>RESTRICT</term> <term><literal>RESTRICT</literal></term>
<listitem> <listitem>
<para> <para>
Refuse to drop the type if there are any dependent objects. Refuse to drop the type if any objects depend on it. This is
This is the default. the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
<refsect1>
<refsect2 id="R2-SQL-DROPTYPE-2"> <title>Diagnostics</title>
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DROP TYPE</computeroutput></term>
DROP TYPE
</computeroutput></term>
<listitem> <listitem>
<para> <para>
The message returned if the command is successful. Message returned if the command was successful.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: RemoveType: type '<replaceable class="parameter">typename</replaceable>' does not exist</computeroutput></term>
ERROR: RemoveType: type '<replaceable class="parameter">typename</replaceable>' does not exist
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message occurs if the specified type is not found. Message returned if the specified type does not exist.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPTYPE-1">
<refsect1info>
<date>1998-09-22</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DROP TYPE</command> will remove a user type from the
system catalogs.
</para>
<para>
Only the owner of a type can remove it.
</para>
</refsect1> </refsect1>
<refsect1 id="SQL-DROPTYPE-examples"> <refsect1 id="SQL-DROPTYPE-examples">
<title>Examples</title> <title>Examples</title>
<para>
To remove the <type>box</type> type:
<para>
To remove the data type <type>box</type>:
<programlisting> <programlisting>
DROP TYPE box; DROP TYPE box;
</programlisting> </programlisting>
...@@ -130,9 +103,10 @@ DROP TYPE box; ...@@ -130,9 +103,10 @@ DROP TYPE box;
<title>Compatibility</title> <title>Compatibility</title>
<para> <para>
Note that the <command>CREATE TYPE</command> command and the data This command is similar to the corresponding command in the SQL
type extension mechanisms in <productname>PostgreSQL</productname> standard, but note that the <command>CREATE TYPE</command> command
differ from SQL99. and the data type extension mechanisms in
<productname>PostgreSQL</productname> differ from the SQL standard.
</para> </para>
</refsect1> </refsect1>
...@@ -143,6 +117,7 @@ DROP TYPE box; ...@@ -143,6 +117,7 @@ DROP TYPE box;
<member><xref linkend="sql-createtype" endterm="sql-createtype-title"></member> <member><xref linkend="sql-createtype" endterm="sql-createtype-title"></member>
</simplelist> </simplelist>
</refsect1> </refsect1>
</refentry> </refentry>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_user.sgml,v 1.15 2002/02/27 21:14:54 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_user.sgml,v 1.16 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,6 +8,7 @@ PostgreSQL documentation ...@@ -8,6 +8,7 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPUSER-TITLE">DROP USER</refentrytitle> <refentrytitle id="SQL-DROPUSER-TITLE">DROP USER</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname>DROP USER</refname> <refname>DROP USER</refname>
<refpurpose>remove a database user account</refpurpose> <refpurpose>remove a database user account</refpurpose>
...@@ -23,40 +24,36 @@ DROP USER <replaceable class="PARAMETER">name</replaceable> ...@@ -23,40 +24,36 @@ DROP USER <replaceable class="PARAMETER">name</replaceable>
<title>Description</title> <title>Description</title>
<para> <para>
<command>DROP USER</command> removes the specified user from the database. <command>DROP USER</command> removes the specified user.
It does not remove tables, views, or other objects owned by the user. If the It does not remove tables, views, or other objects owned by the user. If the
user owns any database, an error is raised. user owns any database, an error is raised.
</para> </para>
</refsect1>
<refsect2> <refsect1>
<title>Parameters</title> <title>Parameters</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">name</replaceable></term> <term><replaceable class="PARAMETER">name</replaceable></term>
<listitem> <listitem>
<para> <para>
The name of an existing user. The name of the user to remove.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect2>
</refsect1> </refsect1>
<refsect1> <refsect1>
<title>Diagnostics</title> <title>Diagnostics</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput>DROP USER</computeroutput></term> <term><computeroutput>DROP USER</computeroutput></term>
<listitem> <listitem>
<para> <para>
The message returned if the user is successfully deleted. Message returned if the user was successfully deleted.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -65,7 +62,7 @@ DROP USER <replaceable class="PARAMETER">name</replaceable> ...@@ -65,7 +62,7 @@ DROP USER <replaceable class="PARAMETER">name</replaceable>
<term><computeroutput>ERROR: DROP USER: user "<replaceable class="parameter">name</replaceable>" does not exist</computeroutput></term> <term><computeroutput>ERROR: DROP USER: user "<replaceable class="parameter">name</replaceable>" does not exist</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message occurs if the user name is not found. Message returned if the specified user does not exist.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -78,18 +75,13 @@ DROP USER <replaceable class="PARAMETER">name</replaceable> ...@@ -78,18 +75,13 @@ DROP USER <replaceable class="PARAMETER">name</replaceable>
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect1> </refsect1>
<refsect1> <refsect1>
<title>Notes</title> <title>Notes</title>
<para> <para>
Use <xref linkend="SQL-CREATEUSER" endterm="SQL-CREATEUSER-title">
to add new users, and <xref linkend="SQL-ALTERUSER"
endterm="SQL-ALTERUSER-title"> to change a user's attributes.
<productname>PostgreSQL</productname> includes a program <xref <productname>PostgreSQL</productname> includes a program <xref
linkend="APP-DROPUSER" endterm="APP-DROPUSER-title"> that has the linkend="APP-DROPUSER" endterm="APP-DROPUSER-title"> that has the
same functionality as this command (in fact, it calls this command) same functionality as this command (in fact, it calls this command)
...@@ -122,9 +114,8 @@ DROP USER jonathan; ...@@ -122,9 +114,8 @@ DROP USER jonathan;
<title>See Also</title> <title>See Also</title>
<simplelist type="inline"> <simplelist type="inline">
<member><xref linkend="sql-createuser" endterm="sql-createuser-title"></member>
<member><xref linkend="sql-alteruser" endterm="sql-alteruser-title"></member> <member><xref linkend="sql-alteruser" endterm="sql-alteruser-title"></member>
<member><xref linkend="app-dropuser"></member> <member><xref linkend="sql-createuser" endterm="sql-createuser-title"></member>
</simplelist> </simplelist>
</refsect1> </refsect1>
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_view.sgml,v 1.16 2002/11/21 23:34:43 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_view.sgml,v 1.17 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,154 +8,113 @@ PostgreSQL documentation ...@@ -8,154 +8,113 @@ PostgreSQL documentation
<refentrytitle id="SQL-DROPVIEW-TITLE">DROP VIEW</refentrytitle> <refentrytitle id="SQL-DROPVIEW-TITLE">DROP VIEW</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>DROP VIEW</refname>
DROP VIEW <refpurpose>remove a view</refpurpose>
</refname>
<refpurpose>
remove a view
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
DROP VIEW <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ] DROP VIEW <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ]
</synopsis> </synopsis>
</refsynopsisdiv>
<refsect2 id="R2-SQL-DROPVIEW-1">
<refsect2info> <refsect1>
<date>1998-09-22</date> <title>Description</title>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>DROP VIEW</command> drops an existing view. To execute
this command you must be the owner of the view.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">name</replaceable></term> <term><replaceable class="PARAMETER">name</replaceable></term>
<listitem> <listitem>
<para> <para>
The name (optionally schema-qualified) of an existing view. The name (optionally schema-qualified) of the view to remove.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>CASCADE</term> <term><literal>CASCADE</literal></term>
<listitem> <listitem>
<para> <para>
Automatically drop objects that depend on the view Automatically drop objects that depend on the view (such as
(such as other views). other views).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>RESTRICT</term> <term><literal>RESTRICT</literal></term>
<listitem> <listitem>
<para> <para>
Refuse to drop the view if there are any dependent objects. Refuse to drop the view if any objects depend on it. This is
This is the default. the default.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</refsect1>
</para> <refsect1>
</refsect2> <title>Diagnostics</title>
<refsect2 id="R2-SQL-DROPVIEW-2">
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>DROP VIEW</computeroutput></term>
DROP VIEW
</computeroutput></term>
<listitem> <listitem>
<para> <para>
The message returned if the command is successful. Message returned if the command was successful.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>ERROR: view <replaceable class="parameter">name</replaceable> does not exist</computeroutput></term>
ERROR: view <replaceable class="parameter">name</replaceable> does not exist
</computeroutput></term>
<listitem> <listitem>
<para> <para>
This message occurs if the specified view does not exist in Message returned if the specified view does not exist.
the database.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-DROPVIEW-1"> <refsect1>
<refsect1info> <title>Examples</title>
<date>1998-09-22</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>DROP VIEW</command> drops an existing view from the database.
To execute this command you must be the owner of the
view.
</para>
<refsect2 id="R2-SQL-DROPVIEW-3">
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
Notes
</title>
<para> <para>
Refer to <xref linkend="sql-createview" endterm="sql-createview-title"> This command will remove the view called <literal>kinds</literal>:
for information on how to create views. <programlisting>
DROP VIEW kinds;
</programlisting>
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPVIEW-2"> <refsect1>
<title> <title>Compatibility</title>
Usage
</title>
<para> <para>
This command will remove the view called <literal>kinds</literal>: This command conforms to the SQL standard.
</para> </para>
<programlisting>
DROP VIEW kinds;
</programlisting>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-DROPVIEW-3"> <refsect1>
<title> <title>See Also</title>
Compatibility
</title> <simplelist type="inline">
<member><xref linkend="sql-createview" endterm="sql-createview-title"></member>
<refsect2 id="R2-SQL-DROPVIEW-4"> </simplelist>
<refsect2info>
<date>1998-09-22</date>
</refsect2info>
<title>
SQL92
</title>
<para>
</para>
</refsect2>
</refsect1> </refsect1>
</refentry> </refentry>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/fetch.sgml,v 1.28 2003/03/27 16:51:27 momjian Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/fetch.sgml,v 1.29 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,19 +8,14 @@ PostgreSQL documentation ...@@ -8,19 +8,14 @@ PostgreSQL documentation
<refentrytitle id="SQL-FETCH-TITLE">FETCH</refentrytitle> <refentrytitle id="SQL-FETCH-TITLE">FETCH</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>FETCH</refname>
FETCH <refpurpose>retrieve rows from a query using a cursor</refpurpose>
</refname>
<refpurpose>
retrieve rows from a query using a cursor
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>2003-03-11</date>
</refsynopsisdivinfo>
<synopsis>
FETCH [ <replaceable class="PARAMETER">direction</replaceable> { FROM | IN } ] <replaceable class="PARAMETER">cursor</replaceable> FETCH [ <replaceable class="PARAMETER">direction</replaceable> { FROM | IN } ] <replaceable class="PARAMETER">cursor</replaceable>
where <replaceable class="PARAMETER">direction</replaceable> can be empty or one of: where <replaceable class="PARAMETER">direction</replaceable> can be empty or one of:
...@@ -39,89 +34,135 @@ where <replaceable class="PARAMETER">direction</replaceable> can be empty or one ...@@ -39,89 +34,135 @@ where <replaceable class="PARAMETER">direction</replaceable> can be empty or one
BACKWARD BACKWARD
BACKWARD <replaceable class="PARAMETER">count</replaceable> BACKWARD <replaceable class="PARAMETER">count</replaceable>
BACKWARD ALL BACKWARD ALL
</synopsis> </synopsis>
</refsynopsisdiv>
<refsect2 id="R2-SQL-FETCH-1">
<refsect2info> <refsect1>
<date>2003-03-11</date> <title>Description</title>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>FETCH</command> retrieves rows using a cursor.
</para>
<para>
A cursor has an associated position, which is used by
<command>FETCH</>. The cursor position can be before the first row of the
query result, on any particular row of the result, or after the last row
of the result. When created, a cursor is positioned before the first row.
After fetching some rows, the cursor is positioned on the row most recently
retrieved. If <command>FETCH</> runs off the end of the available rows
then the cursor is left positioned after the last row, or before the first
row if fetching backward. <command>FETCH ALL</> or <command>FETCH BACKWARD
ALL</> will always leave the cursor positioned after the last row or before
the first row.
</para>
<para>
The forms <literal>NEXT</>, <literal>PRIOR</>, <literal>FIRST</>,
<literal>LAST</>, <literal>ABSOLUTE</>, <literal>RELATIVE</> fetch
a single row after moving the cursor appropriately. If there is no
such row, an empty result is returned, and the cursor is left
positioned before the first row or after the last row as
appropriate.
</para>
<para>
The forms using <literal>FORWARD</> and <literal>BACKWARD</>
retrieve the indicated number of rows moving in the forward or
backward direction, leaving the cursor positioned on the
last-returned row (or after/before all rows, if the <replaceable
class="PARAMETER">count</replaceable> exceeds the number of rows
available).
</para>
<para>
<literal>RELATIVE 0</>, <literal>FORWARD 0</>, and
<literal>BACKWARD 0</> all request fetching the current row without
moving the cursor, that is, re-fetching the most recently fetched
row. This will succeed unless the cursor is positioned before the
first row or after the last row; in which case, no row is returned.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">direction</replaceable></term> <term><replaceable class="PARAMETER">direction</replaceable></term>
<listitem> <listitem>
<para> <para>
<replaceable class="PARAMETER">direction</replaceable> <replaceable class="PARAMETER">direction</replaceable> defines
defines the fetch direction and number of rows to fetch. the fetch direction and number of rows to fetch. It can be one
It can be one of the following: of the following:
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term>NEXT</term> <term><literal>NEXT</literal></term>
<listitem> <listitem>
<para> <para>
fetch next row. This is the default Fetch the next row. This is the default if <replaceable
if <replaceable class="PARAMETER">direction</replaceable> is omitted. class="PARAMETER">direction</replaceable> is omitted.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>PRIOR</term> <term><literal>PRIOR</literal></term>
<listitem> <listitem>
<para> <para>
fetch prior row. Fetch the prior row.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>FIRST</term> <term><literal>FIRST</literal></term>
<listitem> <listitem>
<para> <para>
fetch first row of query (same as ABSOLUTE 1). Fetch the first row of the query (same as <literal>ABSOLUTE 1</literal>).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>LAST</term> <term><literal>LAST</literal></term>
<listitem> <listitem>
<para> <para>
fetch last row of query (same as ABSOLUTE -1). Fetch the last row of the query (same as <literal>ABSOLUTE -1</literal>).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>ABSOLUTE <replaceable class="PARAMETER">count</replaceable></term> <term><literal>ABSOLUTE <replaceable class="PARAMETER">count</replaceable></literal></term>
<listitem> <listitem>
<para> <para>
fetch the <replaceable class="PARAMETER">count</replaceable>'th Fetch the <replaceable
row of query, or the class="PARAMETER">count</replaceable>'th row of the query,
abs(<replaceable class="PARAMETER">count</replaceable>)'th row or the <literal>abs(<replaceable
from the end if class="PARAMETER">count</replaceable>)</literal>'th row from
<replaceable class="PARAMETER">count</replaceable> &lt; 0. the end if <replaceable
Position before first row or after last row class="PARAMETER">count</replaceable> is negative. Position
if <replaceable class="PARAMETER">count</replaceable> is out of before first row or after last row if <replaceable
range; in particular, ABSOLUTE 0 positions before first row. class="PARAMETER">count</replaceable> is out of range; in
particular, <literal>ABSOLUTE 0</literal> positions before
the first row.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>RELATIVE <replaceable class="PARAMETER">count</replaceable></term> <term><literal>RELATIVE <replaceable class="PARAMETER">count</replaceable></literal></term>
<listitem> <listitem>
<para> <para>
fetch the <replaceable class="PARAMETER">count</replaceable>'th Fetch the <replaceable
succeeding row, or the class="PARAMETER">count</replaceable>'th succeeding row, or
abs(<replaceable class="PARAMETER">count</replaceable>)'th prior the <literal>abs(<replaceable
row if <replaceable class="PARAMETER">count</replaceable> &lt; 0. class="PARAMETER">count</replaceable>)</literal>'th prior
RELATIVE 0 re-fetches current row, if any. row if <replaceable class="PARAMETER">count</replaceable> is
negative. <literal>RELATIVE 0</literal> re-fetches the
current row, if any.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -130,77 +171,81 @@ where <replaceable class="PARAMETER">direction</replaceable> can be empty or one ...@@ -130,77 +171,81 @@ where <replaceable class="PARAMETER">direction</replaceable> can be empty or one
<term><replaceable class="PARAMETER">count</replaceable></term> <term><replaceable class="PARAMETER">count</replaceable></term>
<listitem> <listitem>
<para> <para>
fetch the next <replaceable class="PARAMETER">count</replaceable> Fetch the next <replaceable
rows (same as FORWARD <replaceable class="PARAMETER">count</replaceable>). class="PARAMETER">count</replaceable> rows (same as
<literal>FORWARD <replaceable
class="PARAMETER">count</replaceable></literal>).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>ALL</term> <term><literal>ALL</literal></term>
<listitem> <listitem>
<para> <para>
fetch all remaining rows (same as FORWARD ALL). Fetch all remaining rows (same as <literal>FORWARD ALL</literal>).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>FORWARD</term> <term><literal>FORWARD</literal></term>
<listitem> <listitem>
<para> <para>
fetch next row (same as NEXT). Fetch the next row (same as <literal>NEXT</literal>).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>FORWARD <replaceable class="PARAMETER">count</replaceable></term> <term><literal>FORWARD <replaceable class="PARAMETER">count</replaceable></literal></term>
<listitem> <listitem>
<para> <para>
fetch next <replaceable class="PARAMETER">count</replaceable> Fetch the next <replaceable
rows. FORWARD 0 re-fetches current row. class="PARAMETER">count</replaceable> rows.
<literal>FORWARD 0</literal> re-fetches the current row.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>FORWARD ALL</term> <term><literal>FORWARD ALL</literal></term>
<listitem> <listitem>
<para> <para>
fetch all remaining rows. Fetch all remaining rows.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>BACKWARD</term> <term><literal>BACKWARD</literal></term>
<listitem> <listitem>
<para> <para>
fetch prior row (same as PRIOR). Fetch the prior row (same as <literal>PRIOR</literal>).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>BACKWARD <replaceable class="PARAMETER">count</replaceable></term> <term><literal>BACKWARD <replaceable class="PARAMETER">count</replaceable></literal></term>
<listitem> <listitem>
<para> <para>
fetch prior <replaceable class="PARAMETER">count</replaceable> Fetch the prior <replaceable
rows (scanning backwards). BACKWARD 0 re-fetches current row. class="PARAMETER">count</replaceable> rows (scanning
backwards). <literal>BACKWARD 0</literal> re-fetches the
current row.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>BACKWARD ALL</term> <term><literal>BACKWARD ALL</literal></term>
<listitem> <listitem>
<para> <para>
fetch all prior rows (scanning backwards). Fetch all prior rows (scanning backwards).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </para>
</listitem> </listitem>
...@@ -210,12 +255,12 @@ where <replaceable class="PARAMETER">direction</replaceable> can be empty or one ...@@ -210,12 +255,12 @@ where <replaceable class="PARAMETER">direction</replaceable> can be empty or one
<term><replaceable class="PARAMETER">count</replaceable></term> <term><replaceable class="PARAMETER">count</replaceable></term>
<listitem> <listitem>
<para> <para>
<replaceable class="PARAMETER">count</replaceable> <replaceable class="PARAMETER">count</replaceable> is a
is a possibly-signed integer constant, determining the location possibly-signed integer constant, determining the location or
or number of rows to fetch. For FORWARD and BACKWARD cases, number of rows to fetch. For <literal>FORWARD</> and
specifying a negative <replaceable <literal>BACKWARD</> cases, specifying a negative <replaceable
class="PARAMETER">count</replaceable> class="PARAMETER">count</replaceable> is equivalent to changing
is equivalent to changing the sense of FORWARD and BACKWARD. the sense of <literal>FORWARD</> and <literal>BACKWARD</>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -229,26 +274,14 @@ where <replaceable class="PARAMETER">direction</replaceable> can be empty or one ...@@ -229,26 +274,14 @@ where <replaceable class="PARAMETER">direction</replaceable> can be empty or one
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
<refsect1>
<refsect2 id="R2-SQL-FETCH-2"> <title>Diagnostics</title>
<refsect2info>
<date>2003-03-11</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<command>FETCH</command> returns rows from the result of the query defined
by the specified cursor.
The following messages will be returned if the query fails:
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>WARNING: PerformPortalFetch: portal "<replaceable class="PARAMETER">cursor</replaceable>" not found</computeroutput></term>
WARNING: PerformPortalFetch: portal "<replaceable class="PARAMETER">cursor</replaceable>" not found
</computeroutput></term>
<listitem> <listitem>
<para> <para>
There is no cursor with the specified name. There is no cursor with the specified name.
...@@ -256,125 +289,60 @@ WARNING: PerformPortalFetch: portal "<replaceable class="PARAMETER">cursor</rep ...@@ -256,125 +289,60 @@ WARNING: PerformPortalFetch: portal "<replaceable class="PARAMETER">cursor</rep
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </refsect1>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-FETCH-1">
<refsect1info>
<date>2003-03-11</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>FETCH</command> retrieves rows using a cursor.
</para>
<para>
A cursor has an associated <firstterm>position</> that is used by
<command>FETCH</>. The cursor position can be before the first row of the
query result, or on any particular row of the result, or after the last row
of the result. When created, a cursor is positioned before the first row.
After fetching some rows, the cursor is positioned on the row most recently
retrieved. If <command>FETCH</> runs off the end of the available rows
then the cursor is left positioned after the last row, or before the first
row if fetching backward. <command>FETCH ALL</> or <command>FETCH BACKWARD
ALL</> will always leave the cursor positioned after the last row or before
the first row.
</para>
<para>
The SQL-compatible forms (NEXT, PRIOR, FIRST, LAST, ABSOLUTE, RELATIVE)
fetch a single row after moving the cursor appropriately. If there is
no such row, an empty result is returned, and the cursor is left positioned
before the first row or after the last row as appropriate.
</para>
<para>
The forms using FORWARD and BACKWARD are not in the SQL standard, but
are <productname>PostgreSQL</productname> extensions. These forms
retrieve the indicated number of rows moving in the forward or backward
direction, leaving the cursor positioned on the last-returned row
(or after/before all rows, if the <replaceable
class="PARAMETER">count</replaceable> exceeds the number of rows
available).
</para>
<tip>
<para>
RELATIVE 0, FORWARD 0, and BACKWARD 0 all request
fetching the current row without moving the
cursor --- that is, re-fetching the most recently fetched row.
This will succeed unless the cursor is positioned before the
first row or after the last row; in which case, no row is returned.
</para>
</tip>
<refsect2 id="R2-SQL-FETCH-3"> <refsect1>
<refsect2info> <title>Notes</title>
<date>2003-03-11</date>
</refsect2info>
<title>
Notes
</title>
<para> <para>
The cursor should be declared with the SCROLL option if one intends to The cursor should be declared with the <literal>SCROLL</literal>
use any variants of <command>FETCH</> other than <command>FETCH NEXT</> option if one intends to use any variants of <command>FETCH</>
or <command>FETCH FORWARD</> with a positive count. For simple queries other than <command>FETCH NEXT</> or <command>FETCH FORWARD</> with
<productname>PostgreSQL</productname> will allow backwards fetch from a positive count. For simple queries
cursors not declared with SCROLL, but this behavior is best not <productname>PostgreSQL</productname> will allow backwards fetch
relied on. If the cursor is declared with NO SCROLL, no backward from cursors not declared with <literal>SCROLL</literal>, but this
fetches are allowed. behavior is best not relied on. If the cursor is declared with
<literal>NO SCROLL</literal>, no backward fetches are allowed.
</para> </para>
<para> <para>
ABSOLUTE fetches are not any faster than navigating to the desired row <literal>ABSOLUTE</literal> fetches are not any faster than
with a relative move: the underlying implementation must traverse all navigating to the desired row with a relative move: the underlying
the intermediate rows anyway. Negative absolute fetches are even worse: implementation must traverse all the intermediate rows anyway.
the query must be read to the end to find the last row, and then Negative absolute fetches are even worse: the query must be read to
traversed backward from there. However, rewinding to the start of the the end to find the last row, and then traversed backward from
query (as with FETCH ABSOLUTE 0) is fast. there. However, rewinding to the start of the query (as with
<literal>FETCH ABSOLUTE 0</literal>) is fast.
</para> </para>
<para> <para>
Updating data via a cursor is not supported by Updating data via a cursor is currently not supported by
<productname>PostgreSQL</productname>, because mapping cursor <productname>PostgreSQL</productname>.
updates back to base tables is not generally possible, as is also
the case with view updates. Consequently, users must issue
explicit <command>UPDATE</command> commands to replace data.
</para> </para>
<para> <para>
<xref linkend="sql-declare" endterm="sql-declare-title"> <xref linkend="sql-declare" endterm="sql-declare-title">
is used to define a cursor. is used to define a cursor. Use
Use
<xref linkend="sql-move" endterm="sql-move-title"> <xref linkend="sql-move" endterm="sql-move-title">
to change cursor position without retrieving data. to change cursor position without retrieving data.
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-FETCH-2"> <refsect1>
<title> <title>Examples</title>
Usage
</title>
<para> <para>
The following example traverses a table using a cursor. The following example traverses a table using a cursor.
<programlisting> <programlisting>
-- Set up and use a cursor:
BEGIN WORK; BEGIN WORK;
-- Set up a cursor:
DECLARE liahona SCROLL CURSOR FOR SELECT * FROM films; DECLARE liahona SCROLL CURSOR FOR SELECT * FROM films;
-- Fetch first 5 rows in the cursor liahona: -- Fetch the first 5 rows in the cursor liahona:
FETCH FORWARD 5 IN liahona; FETCH FORWARD 5 FROM liahona;
<computeroutput>
code | title | did | date_prod | kind | len code | title | did | date_prod | kind | len
-------+-------------------------+-----+------------+----------+------- -------+-------------------------+-----+------------+----------+-------
BL101 | The Third Man | 101 | 1949-12-23 | Drama | 01:44 BL101 | The Third Man | 101 | 1949-12-23 | Drama | 01:44
...@@ -382,70 +350,46 @@ FETCH FORWARD 5 IN liahona; ...@@ -382,70 +350,46 @@ FETCH FORWARD 5 IN liahona;
JL201 | Une Femme est une Femme | 102 | 1961-03-12 | Romantic | 01:25 JL201 | Une Femme est une Femme | 102 | 1961-03-12 | Romantic | 01:25
P_301 | Vertigo | 103 | 1958-11-14 | Action | 02:08 P_301 | Vertigo | 103 | 1958-11-14 | Action | 02:08
P_302 | Becket | 103 | 1964-02-03 | Drama | 02:28 P_302 | Becket | 103 | 1964-02-03 | Drama | 02:28
</computeroutput>
-- Fetch previous row: -- Fetch the previous row:
FETCH PRIOR FROM liahona; FETCH PRIOR FROM liahona;
<computeroutput>
code | title | did | date_prod | kind | len code | title | did | date_prod | kind | len
-------+---------+-----+------------+--------+------- -------+---------+-----+------------+--------+-------
P_301 | Vertigo | 103 | 1958-11-14 | Action | 02:08 P_301 | Vertigo | 103 | 1958-11-14 | Action | 02:08
</computeroutput>
-- close the cursor and commit work:
-- Close the cursor and end the transaction:
CLOSE liahona; CLOSE liahona;
COMMIT WORK; COMMIT WORK;
</programlisting> </programlisting>
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-FETCH-3"> <refsect1>
<title> <title>Compatibility</title>
Compatibility
</title>
<refsect2 id="R2-SQL-FETCH-4">
<refsect2info>
<date>2003-03-11</date>
</refsect2info>
<title>
SQL92
</title>
<para> <para>
<acronym>SQL92</acronym> defines <command>FETCH</command> for use The SQL standard defines <command>FETCH</command> for use in
in embedded contexts only. Therefore, it describes placing the embedded SQL only. This variant of <command>FETCH</command>
results into explicit variables using an <literal>INTO</> clause, described here returns the data as if it were a
for example: <command>SELECT</command> result rather than placing it in host
variables. Other than this point, <command>FETCH</command> is
<synopsis> fully upward-compatible with the SQL standard.
FETCH ABSOLUTE <replaceable class="PARAMETER">n</replaceable>
FROM <replaceable class="PARAMETER">cursor</replaceable>
INTO :<replaceable class="PARAMETER">variable</replaceable> [, ...]
</synopsis>
<productname>PostgreSQL</productname>'s use of non-embedded
cursors is non-standard, and so is its practice of returning the
result data as if it were a <command>SELECT</command> result.
Other than this point, <command>FETCH</command> is fully
upward-compatible with <acronym>SQL92</acronym>.
</para> </para>
<para> <para>
The <command>FETCH</command> forms involving FORWARD and BACKWARD The <command>FETCH</command> forms involving
(including the forms FETCH <replaceable <literal>FORWARD</literal> and <literal>BACKWARD</literal>, as well
class="PARAMETER">count</replaceable> and FETCH ALL, in which as the forms <literal>FETCH <replaceable
FORWARD is implicit) are <productname>PostgreSQL</productname> class="PARAMETER">count</replaceable></literal> and <literal>FETCH
extensions. ALL</literal>, in which <literal>FORWARD</literal> is implicit, are
<productname>PostgreSQL</productname> extensions.
</para> </para>
<para> <para>
<acronym>SQL92</acronym> allows only <literal>FROM</> preceding the The SQL standard allows only <literal>FROM</> preceding the cursor
cursor name; the option to use <literal>IN</> is an extension. name; the option to use <literal>IN</> is an extension.
</para> </para>
</refsect2>
</refsect1> </refsect1>
</refentry> </refentry>
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/move.sgml,v 1.21 2003/03/27 16:51:27 momjian Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/move.sgml,v 1.22 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,112 +8,74 @@ PostgreSQL documentation ...@@ -8,112 +8,74 @@ PostgreSQL documentation
<refentrytitle id="SQL-MOVE-TITLE">MOVE</refentrytitle> <refentrytitle id="SQL-MOVE-TITLE">MOVE</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>MOVE</refname>
MOVE <refpurpose>reposition a cursor</refpurpose>
</refname>
<refpurpose>
reposition a cursor
</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
MOVE [ <replaceable class="PARAMETER">direction</replaceable> { FROM | IN } ] <replaceable class="PARAMETER">cursor</replaceable> MOVE [ <replaceable class="PARAMETER">direction</replaceable> { FROM | IN } ] <replaceable class="PARAMETER">cursor</replaceable>
</synopsis> </synopsis>
</refsynopsisdiv> </refsynopsisdiv>
<refsect1 id="R1-SQL-MOVE-1"> <refsect1>
<refsect1info> <title>Description</title>
<date>1998-09-24</date>
</refsect1info>
<title>
Description
</title>
<para> <para>
<command>MOVE</command> repositions a cursor without retrieving any data. <command>MOVE</command> repositions a cursor without retrieving any data.
<command>MOVE</command> works exactly like the <command>FETCH</command> <command>MOVE</command> works exactly like the <command>FETCH</command>
command, except it only repositions the cursor and does not return rows. command, except it only repositions the cursor and does not return rows.
</para> </para>
<para> <para>
Refer to Refer to
<xref linkend="sql-fetch" endterm="sql-fetch-title"> <xref linkend="sql-fetch" endterm="sql-fetch-title">
for details on syntax and usage. for details on syntax and usage.
</para> </para>
</refsect1>
<refsect2 id="R2-SQL-MOVE-3"> <refsect1>
<refsect2info> <title>Diagnostics</title>
<date>1998-09-24</date>
</refsect2info>
<title>
Notes
</title>
<para> <para>
The count returned in <command>MOVE</command>'s status string is the The count returned in <command>MOVE</command>'s status string is
count of the number of rows that would have been returned by the the count of the number of rows that would have been returned by
equivalent <command>FETCH</command> command. the equivalent <command>FETCH</command> command.
</para> </para>
<para>
Refer to
<xref linkend="sql-fetch" endterm="sql-fetch-title">
for a description of valid arguments.
Refer to
<xref linkend="sql-declare" endterm="sql-declare-title">
to define a cursor.
</para>
</refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-MOVE-2"> <refsect1>
<title> <title>Examples</title>
Usage
</title>
<para>
Set up and use a cursor:
<programlisting> <programlisting>
BEGIN WORK; BEGIN WORK;
DECLARE liahona CURSOR FOR SELECT * FROM films; DECLARE liahona CURSOR FOR SELECT * FROM films;
-- Skip first 5 rows:
-- Skip the first 5 rows:
MOVE FORWARD 5 IN liahona; MOVE FORWARD 5 IN liahona;
<computeroutput>
MOVE 5 MOVE 5
</computeroutput>
-- Fetch 6th row in the cursor liahona: -- Fetch the 6th row from the cursor liahona:
FETCH 1 IN liahona; FETCH 1 FROM liahona;
<computeroutput>
code | title | did | date_prod | kind | len code | title | did | date_prod | kind | len
-------+--------+-----+-----------+--------+------- -------+--------+-----+------------+--------+-------
P_303 | 48 Hrs | 103 | 1982-10-22| Action | 01:37 P_303 | 48 Hrs | 103 | 1982-10-22 | Action | 01:37
(1 row) (1 row)
</computeroutput>
-- close the cursor liahona and commit work: -- Close the cursor liahona and end the transaction:
CLOSE liahona; CLOSE liahona;
COMMIT WORK; COMMIT WORK;
</programlisting> </programlisting>
</para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-MOVE-3"> <refsect1>
<title> <title>Compatibility</title>
Compatibility
</title>
<refsect2 id="R2-SQL-MOVE-4">
<refsect2info>
<date>1998-09-01</date>
</refsect2info>
<title>
SQL92
</title>
<para> <para>
There is no <acronym>SQL92</acronym> <command>MOVE</command> statement. There is no <command>MOVE</command> statement in the SQL standard.
</para> </para>
</refsect2>
</refsect1> </refsect1>
</refentry> </refentry>
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/reset.sgml,v 1.19 2003/03/25 16:15:44 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/reset.sgml,v 1.20 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,33 +8,66 @@ PostgreSQL documentation ...@@ -8,33 +8,66 @@ PostgreSQL documentation
<refentrytitle id="SQL-RESET-TITLE">RESET</refentrytitle> <refentrytitle id="SQL-RESET-TITLE">RESET</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname>RESET</refname> <refname>RESET</refname>
<refpurpose>restore the value of a run-time parameter to a default value</refpurpose> <refpurpose>restore the value of a run-time parameter to the default value</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<synopsis> <synopsis>
RESET <replaceable class="PARAMETER">variable</replaceable> RESET <replaceable class="PARAMETER">parameter</replaceable>
</synopsis> </synopsis>
<synopsis> <synopsis>
RESET ALL RESET ALL
</synopsis> </synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<refsect2 id="R2-SQL-RESET-1">
<title>Inputs</title>
<para> <para>
<command>RESET</command> restores run-time parameters to their
default values. <command>RESET</command> is an alternative
spelling for
<synopsis>
SET <replaceable class="parameter">parameter</replaceable> TO DEFAULT
</synopsis>
Refer to <xref linkend="sql-set" endterm="sql-set-title"> for
details.
</para>
<para>
The default value is defined as the value that the parameter would
have had, had no <command>SET</> ever been issued for it in the
current session. The actual source of this value might be a
compiled-in default, the configuration file, command-line options,
or per-database or per-user default settings. See <xref
linkend="runtime-config"> for details.
</para>
<para>
See the <command>SET</> reference page for details on the
transaction behavior of <command>RESET</>.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">variable</replaceable></term> <term><replaceable class="PARAMETER">parameter</replaceable></term>
<listitem> <listitem>
<para> <para>
The name of a run-time parameter. See <xref The name of a run-time parameter. See <xref linkend="sql-set"
linkend="sql-set" endterm="sql-set-title"> for a list. endterm="sql-set-title"> for a list.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>ALL</term> <term><literal>ALL</literal></term>
<listitem> <listitem>
<para> <para>
Resets all settable run-time parameters to default values. Resets all settable run-time parameters to default values.
...@@ -42,61 +75,30 @@ RESET ALL ...@@ -42,61 +75,30 @@ RESET ALL
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect2>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>
<command>RESET</command> restores run-time parameters to their
default values. Refer to
<xref linkend="sql-set" endterm="sql-set-title">
for details. <command>RESET</command> is an alternate spelling for
<synopsis>
SET <replaceable class="parameter">variable</replaceable> TO DEFAULT
</synopsis>
The default value is defined as the value that the variable would
have had, had no <command>SET</> ever been issued for it in the
current session. The actual source of this value might be a
compiled-in default, the postmaster's configuration file or command-line
switches, or per-database or per-user default settings. See
<xref linkend="runtime-config"> for details.
</para>
<para>
See the <command>SET</> manual page for details on the transaction
behavior of <command>RESET</>.
</para>
</refsect1> </refsect1>
<refsect1> <refsect1>
<title>Diagnostics</title> <title>Diagnostics</title>
<para> <para>
See under the <xref linkend="sql-set" See under the <xref linkend="sql-set" endterm="sql-set-title">.
endterm="sql-set-title"> command.
</para> </para>
</refsect1> </refsect1>
<refsect1> <refsect1>
<title>Examples</title> <title>Examples</title>
<para>
Set <varname>DateStyle</> to its default value:
<para>
Set <varname>datestyle</> to its default value:
<screen> <screen>
RESET DateStyle; RESET datestyle;
</screen> </screen>
</para> </para>
<para> <para>
Set <varname>geqo</> to its default value: Set <varname>geqo</> to its default value:
<screen> <screen>
RESET GEQO; RESET geqo;
</screen> </screen>
</para> </para>
</refsect1> </refsect1>
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/select.sgml,v 1.66 2003/03/25 16:15:44 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/select.sgml,v 1.67 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,667 +8,666 @@ PostgreSQL documentation ...@@ -8,667 +8,666 @@ PostgreSQL documentation
<refentrytitle id="sql-select-title">SELECT</refentrytitle> <refentrytitle id="sql-select-title">SELECT</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>SELECT</refname>
SELECT <refpurpose>retrieve rows from a table or view</refpurpose>
</refname> </refnamediv>
<refpurpose>
retrieve rows from a table or view
</refpurpose></refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>2000-12-11</date> SELECT [ ALL | DISTINCT [ ON ( <replaceable class="parameter">expression</replaceable> [, ...] ) ] ]
</refsynopsisdivinfo> * | <replaceable class="parameter">expression</replaceable> [ AS <replaceable class="parameter">output_name</replaceable> ] [, ...]
<synopsis> [ FROM <replaceable class="parameter">from_item</replaceable> [, ...] ]
SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replaceable> [, ...] ) ] ] [ WHERE <replaceable class="parameter">condition</replaceable> ]
* | <replaceable class="PARAMETER">expression</replaceable> [ AS <replaceable class="PARAMETER">output_name</replaceable> ] [, ...] [ GROUP BY <replaceable class="parameter">expression</replaceable> [, ...] ]
[ FROM <replaceable class="PARAMETER">from_item</replaceable> [, ...] ] [ HAVING <replaceable class="parameter">condition</replaceable> [, ...] ]
[ WHERE <replaceable class="PARAMETER">condition</replaceable> ] [ { UNION | INTERSECT | EXCEPT } [ ALL ] <replaceable class="parameter">select</replaceable> ]
[ GROUP BY <replaceable class="PARAMETER">expression</replaceable> [, ...] ] [ ORDER BY <replaceable class="parameter">expression</replaceable> [ ASC | DESC | USING <replaceable class="parameter">operator</replaceable> ] [, ...] ]
[ HAVING <replaceable class="PARAMETER">condition</replaceable> [, ...] ] [ LIMIT { <replaceable class="parameter">count</replaceable> | ALL } ]
[ { UNION | INTERSECT | EXCEPT } [ ALL ] <replaceable class="PARAMETER">select</replaceable> ] [ OFFSET <replaceable class="parameter">start</replaceable> ]
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ] [ FOR UPDATE [ OF <replaceable class="parameter">table_name</replaceable> [, ...] ] ]
[ LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL } ]
[ OFFSET <replaceable class="PARAMETER">start</replaceable> ] where <replaceable class="parameter">from_item</replaceable> can be one of:
[ FOR UPDATE [ OF <replaceable class="PARAMETER">tablename</replaceable> [, ...] ] ]
[ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ] [ [ AS ] <replaceable class="parameter">alias</replaceable> [ ( <replaceable class="parameter">column_alias</replaceable> [, ...] ) ] ]
where <replaceable class="PARAMETER">from_item</replaceable> can be: ( <replaceable class="parameter">select</replaceable> ) [ AS ] <replaceable class="parameter">alias</replaceable> [ ( <replaceable class="parameter">column_alias</replaceable> [, ...] ) ]
<replaceable class="parameter">function_name</replaceable> ( [ <replaceable class="parameter">argument</replaceable> [, ...] ] ) [ AS ] <replaceable class="parameter">alias</replaceable> [ ( <replaceable class="parameter">column_alias</replaceable> [, ...] | <replaceable class="parameter">column_definition</replaceable> [, ...] ) ]
[ ONLY ] <replaceable class="PARAMETER">table_name</replaceable> [ * ] <replaceable class="parameter">function_name</replaceable> ( [ <replaceable class="parameter">argument</replaceable> [, ...] ] ) AS ( <replaceable class="parameter">column_definition</replaceable> [, ...] )
[ [ AS ] <replaceable class="PARAMETER">alias</replaceable> [ ( <replaceable class="PARAMETER">column_alias_list</replaceable> ) ] ] <replaceable class="parameter">from_item</replaceable> [ NATURAL ] <replaceable class="parameter">join_type</replaceable> <replaceable class="parameter">from_item</replaceable> [ ON <replaceable class="parameter">join_condition</replaceable> | USING ( <replaceable class="parameter">join_column</replaceable> [, ...] ) ]
| </synopsis>
( <replaceable class="PARAMETER">select</replaceable> )
[ AS ] <replaceable class="PARAMETER">alias</replaceable> [ ( <replaceable class="PARAMETER">column_alias_list</replaceable> ) ] <comment>FIXME: This last syntax is incorrect if the join type is an
| INNER or OUTER join (in which case one of NATURAL, ON ..., or USING
<replaceable class="PARAMETER">table_function_name</replaceable> ( [ <replaceable class="parameter">argument</replaceable> [, ...] ] ) ... is mandatory, not optional). What's the best way to fix
[ AS ] <replaceable class="PARAMETER">alias</replaceable> [ ( <replaceable class="PARAMETER">column_alias_list</replaceable> | <replaceable class="PARAMETER">column_definition_list</replaceable> ) ] this?</comment>
|
<replaceable class="PARAMETER">table_function_name</replaceable> ( [ <replaceable class="parameter">argument</replaceable> [, ...] ] )
AS ( <replaceable class="PARAMETER">column_definition_list</replaceable> )
|
<!--
FIXME: this syntax is incorrect if the join type is an INNER or
OUTER join (in which case one of NATURAL, ON ..., or USING ... is
mandatory, not optional). What's the best way to fix this?
-->
<replaceable class="PARAMETER">from_item</replaceable> [ NATURAL ] <replaceable class="PARAMETER">join_type</replaceable> <replaceable class="PARAMETER">from_item</replaceable>
[ ON <replaceable class="PARAMETER">join_condition</replaceable> | USING ( <replaceable class="PARAMETER">join_column_list</replaceable> ) ]
</synopsis>
<refsect2 id="R2-SQL-SELECT-1"> </refsynopsisdiv>
<refsect2info>
<date>2000-12-11</date> <refsect1>
</refsect2info> <title>Description</title>
<title>
Inputs
</title>
<para> <para>
<variablelist> <command>SELECT</command> retrieves rows from one or more tables.
<varlistentry> The general processing of <command>SELECT</command> is as follows:
<term><replaceable class="PARAMETER">expression</replaceable></term>
<orderedlist>
<listitem> <listitem>
<para> <para>
The name of a table's column or an expression. All elements in the <literal>FROM</literal> list are computed.
(Each element in the <literal>FROM</literal> list is a real or
virtual table.) If more than one element is specified in the
<literal>FROM</literal> list, they are cross-joined together.
(See <xref linkend="sql-from" endterm="sql-from-title"> below.)
</para> </para>
</listitem> </listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER">output_name</replaceable></term>
<listitem> <listitem>
<para> <para>
Specifies another name for an output column using If the <literal>WHERE</literal> clause is specified, all rows
the AS clause. This name is primarily used to label the column that do not satisfy the condition are eliminated from the
for display. It can also be used to refer to the column's value in output. (See <xref linkend="sql-where"
ORDER BY and GROUP BY clauses. But the endterm="sql-where-title"> below.)
<replaceable class="PARAMETER">output_name</replaceable>
cannot be used in the WHERE or HAVING clauses; write out the
expression instead.
</para> </para>
</listitem> </listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER">from_item</replaceable></term>
<listitem> <listitem>
<para> <para>
A table reference, sub-SELECT, table function, or JOIN clause. See below for details. If the <literal>GROUP BY</literal> clause is specified, the
output is divided into groups of rows that match on one or more
values. If the <literal>HAVING</literal> clause is present, it
eliminates groups that do not satisfy the given condition. (See
<xref linkend="sql-groupby" endterm="sql-groupby-title"> and
<xref linkend="sql-having" endterm="sql-having-title"> below.)
</para> </para>
</listitem> </listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER">condition</replaceable></term>
<listitem> <listitem>
<para> <para>
A Boolean expression giving a result of true or false. Using the operators <literal>UNION</literal>,
See the WHERE and HAVING clause descriptions below. <literal>INTERSECT</literal>, and <literal>EXCEPT</literal>, the
output of more than one <command>SELECT</command> statement can
be combined to form a single result set. The
<literal>UNION</literal> operator returns all rows that are in
one or both of the result sets. The
<literal>INTERSECT</literal> operator returns all rows that are
strictly in both result sets. The <literal>EXCEPT</literal>
operator returns the rows that are in the first result set but
not in the second. In all three cases, duplicate rows are
eliminated unless <literal>ALL</literal> is specified. (See
<xref linkend="sql-union" endterm="sql-union-title">, <xref
linkend="sql-intersect" endterm="sql-intersect-title">, and
<xref linkend="sql-except" endterm="sql-except-title"> below.)
</para> </para>
</listitem> </listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER">select</replaceable></term>
<listitem> <listitem>
<para> <para>
A select statement with all features except the ORDER BY, The actual output rows are computed the
LIMIT/OFFSET, and FOR UPDATE clauses (even those can be used when the <command>SELECT</command> output expressions for each selected
select is parenthesized). row. (See
<xref linkend="sql-select-list" endterm="sql-select-list-title">
below.)
</para> </para>
</listitem> </listitem>
</varlistentry>
</variablelist>
</para>
<para>
FROM items can contain:
<variablelist>
<varlistentry>
<term><replaceable class="PARAMETER">table_name</replaceable></term>
<listitem> <listitem>
<para> <para>
The name (optionally schema-qualified) of an existing table or view. If the <literal>ORDER BY</literal> clause is specified, the
If <literal>ONLY</> is specified, only that table is scanned. If returned rows are sorted in the specified order. If
<literal>ONLY</> is not specified, the table and all its descendant <literal>ORDER BY</literal> is not given, the rows are returned
tables (if any) are scanned. <literal>*</> can be appended to the in whatever order the system finds fastest to produce. (See
table name to indicate that descendant tables are to be scanned, but <xref linkend="sql-orderby" endterm="sql-orderby-title"> below.)
in the current version, this is the default behavior. (In releases
before 7.1, <literal>ONLY</> was the default behavior.) The
default behavior can be modified by changing the
<option>SQL_INHERITANCE</option> configuration option.
</para> </para>
</listitem> </listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER">alias</replaceable></term>
<listitem> <listitem>
<para> <para>
A substitute name for the FROM item containing the alias. If the <literal>LIMIT</literal> or <literal>OFFSET</literal>
An alias is used for brevity or to eliminate ambiguity for self-joins clause is specified, the <command>SELECT</command> statement
(where the same table is scanned multiple times). When an alias only returns a subset of the result rows. (See <xref
is provided, it completely hides the actual name of the table or linkend="sql-limit" endterm="sql-limit-title"> below.)
table function; for example given <literal>FROM foo AS f</>, the
remainder of the SELECT must refer to this FROM item as <literal>f</>
not <literal>foo</>.
If an alias is
written, a column alias list can also be written to provide
substitute names for one or more columns of the table.
</para> </para>
</listitem> </listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER">select</replaceable></term>
<listitem> <listitem>
<para> <para>
A sub-SELECT can appear in the FROM clause. This acts as though <literal>DISTINCT</literal> eliminates duplicate rows from the
its output were created as a temporary table for the duration of result. <literal>DISTINCT ON</literal> eliminates rows that
this single SELECT command. Note that the sub-SELECT must be match on all the specified expressions. <literal>ALL</literal>
surrounded by parentheses, and an alias <emphasis>must</emphasis> (the default) will return all candidate rows, including
be provided for it. duplicates. (See <xref linkend="sql-distinct"
endterm="sql-distinct-title"> below.)
</para> </para>
</listitem> </listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER">table function</replaceable></term>
<listitem> <listitem>
<para> <para>
A table function can appear in the FROM clause. This acts as though The <literal>FOR UPDATE</literal> clause causes the
its output were created as a temporary table for the duration of <command>SELECT</command> statement to lock the selected rows
this single SELECT command. An alias may also be used. If an alias is against concurrent updates. (See <xref linkend="sql-for-update"
written, a column alias list can also be written to provide substitute endterm="sql-for-update-title"> below.)
names for one or more columns of the table function. If the table
function has been defined as returning the <type>record</> data type,
an alias, or the keyword <literal>AS</>, must be present, followed by
a column definition list in the form ( <replaceable
class="PARAMETER">column_name</replaceable> <replaceable
class="PARAMETER">data_type</replaceable> [, ... ] ).
The column definition list must match the actual number and types
of columns returned by the function.
</para> </para>
</listitem> </listitem>
</varlistentry> </orderedlist>
</para>
<para>
You must have <literal>SELECT</literal> privilege on a table to
read its values. The use of <literal>FOR UPDATE</literal> requires
<literal>UPDATE</literal> privilege as well.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<refsect2 id="SQL-FROM">
<title id="sql-from-title"><literal>FROM</literal> Clause</title>
<para>
The <literal>FROM</literal> clause specifies one or more source
tables for the <command>SELECT</command>. If multiple sources are
specified, the result is the Cartesian product (cross join) of all
the sources. But usually qualification conditions
are added to restrict the returned rows to a small subset of the
Cartesian product.
</para>
<para>
<literal>FROM</literal>-clause elements can contain:
<variablelist>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">join_type</replaceable></term> <term><replaceable class="parameter">table_name</replaceable></term>
<listitem> <listitem>
<para> <para>
One of The name (optionally schema-qualified) of an existing table or
<command>[ INNER ] JOIN</command>, view. If <literal>ONLY</> is specified, only that table is
<command>LEFT [ OUTER ] JOIN</command>, scanned. If <literal>ONLY</> is not specified, the table and
<command>RIGHT [ OUTER ] JOIN</command>, all its descendant tables (if any) are scanned. <literal>*</>
<command>FULL [ OUTER ] JOIN</command>, or can be appended to the table name to indicate that descendant
<command>CROSS JOIN</command>. tables are to be scanned, but in the current version, this is
For INNER and OUTER join types, exactly one of NATURAL, the default behavior. (In releases before 7.1,
ON <replaceable class="PARAMETER">join_condition</replaceable>, or <literal>ONLY</> was the default behavior.) The default
USING ( <replaceable class="PARAMETER">join_column_list</replaceable> ) behavior can be modified by changing the
must appear. For CROSS JOIN, none of these items may appear. <varname>sql_interitance</varname> configuration option.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">join_condition</replaceable></term> <term><replaceable class="parameter">alias</replaceable></term>
<listitem> <listitem>
<para> <para>
A qualification condition. This is similar to the WHERE condition A substitute name for the <literal>FROM</> item containing the
except that it only applies to the two from_items being joined in alias. An alias is used for brevity or to eliminate ambiguity
this JOIN clause. for self-joins (where the same table is scanned multiple
times). When an alias is provided, it completely hides the
actual name of the table or function; for example given
<literal>FROM foo AS f</>, the remainder of the
<command>SELECT</command> must refer to this <literal>FROM</>
item as <literal>f</> not <literal>foo</>. If an alias is
written, a column alias list can also be written to provide
substitute names for one or more columns of the table.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><replaceable class="PARAMETER">join_column_list</replaceable></term> <term><replaceable class="parameter">select</replaceable></term>
<listitem> <listitem>
<para> <para>
A USING column list ( a, b, ... ) is shorthand for the ON condition A sub-<command>SELECT</command> can appear in the
left_table.a = right_table.a AND left_table.b = right_table.b ... <literal>FROM</literal> clause. This acts as though its
output were created as a temporary table for the duration of
this single <command>SELECT</command> command. Note that the
sub-<command>SELECT</command> must be surrounded by
parentheses, and an alias <emphasis>must</emphasis> be
provided for it.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist>
</para>
</refsect2>
<refsect2 id="R2-SQL-SELECT-2">
<refsect2info>
<date>1998-09-24</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist>
<varlistentry> <varlistentry>
<term>Rows</term> <term><replaceable class="parameter">function_name</replaceable></term>
<listitem> <listitem>
<para> <para>
The complete set of rows resulting from the query specification. Function calls can appear in the <literal>FROM</literal>
clause. (This is especially useful for functions that return
result sets, but any function can be used.) This acts as
though its output were created as a temporary table for the
duration of this single <command>SELECT</command> command. An
alias may also be used. If an alias is written, a column alias
list can also be written to provide substitute names for one
or more attributes of the function's composite return type. If
the function has been defined as returning the <type>record</>
data type, then an alias or the key word <literal>AS</> must
be present, followed by a column definition list in the form
<literal>( <replaceable
class="parameter">column_name</replaceable> <replaceable
class="parameter">data_type</replaceable> <optional>, ... </>
)</literal>. The column definition list must match the actual
number and types of columns returned by the function.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term> <term><replaceable class="parameter">join_type</replaceable></term>
<returnvalue><replaceable>count</replaceable></returnvalue>
</term>
<listitem> <listitem>
<para> <para>
The count of rows returned by the query. One of
</para> <itemizedlist>
<listitem>
<para><literal>[ INNER ] JOIN</literal></para>
</listitem> </listitem>
</varlistentry> <listitem>
</variablelist> <para><literal>LEFT [ OUTER ] JOIN</literal></para>
</para> </listitem>
</refsect2> <listitem>
</refsynopsisdiv> <para><literal>RIGHT [ OUTER ] JOIN</literal></para>
</listitem>
<listitem>
<para><literal>FULL [ OUTER ] JOIN</literal></para>
</listitem>
<listitem>
<para><literal>CROSS JOIN</literal></para>
</listitem>
</itemizedlist>
<refsect1 id="R1-SQL-SELECT-1"> For the <literal>INNER</> and <literal>OUTER</> join types, a
<refsect1info> join condition must be specified, namely exactly one of
<date>2000-12-11</date> <literal>NATURAL</>, <literal>ON <replaceable
</refsect1info> class="parameter">join_condition</replaceable></literal>, or
<title> <literal>USING (<replaceable
Description class="parameter">join_column</replaceable> [, ...])</literal>.
</title> See below for the meaning. For <literal>CROSS JOIN</literal>,
<para> none of these clauses may appear.
<command>SELECT</command> will return rows from one or more tables.
Candidates for selection are rows which satisfy the WHERE condition;
if WHERE is omitted, all rows are candidates.
(See <xref linkend="sql-where" endterm="sql-where-title">.)
</para> </para>
<para> <para>
Actually, the returned rows are not directly the rows produced by the A <literal>JOIN</literal> clause, combines two
FROM/WHERE/GROUP BY/HAVING clauses; rather, the output rows are formed <literal>FROM</> items. (Use parentheses if necessary to
by computing the SELECT output expressions for each selected row. determine the order of nesting.)
<command>*</command> can be written in the output list as a shorthand
for all the columns of the selected rows. Also, one can write
<replaceable class="PARAMETER">table_name</replaceable><command>.*</command>
as a shorthand for the columns coming from just that table.
</para> </para>
<para> <para>
DISTINCT will eliminate duplicate rows from the result. ALL (the <literal>CROSS JOIN</> and <literal>INNER JOIN</literal>
default) will return all candidate rows, including duplicates. produce a simple Cartesian product, the same as you get from
listing the two items at the top level of <literal>FROM</>.
<literal>CROSS JOIN</> is equivalent to <literal>INNER JOIN ON
(true)</>, that is, no rows are removed by qualification.
These join types are just a notational convenience, since they
do nothing you couldn't do with plain <literal>FROM</> and
<literal>WHERE</>.
</para> </para>
<para> <para>
DISTINCT ON eliminates rows that match on all the <literal>LEFT OUTER JOIN</> returns all rows in the qualified
specified expressions, keeping only the first row of each set of Cartesian product (i.e., all combined rows that pass its join
duplicates. The DISTINCT ON expressions are interpreted using the condition), plus one copy of each row in the left-hand table
same rules as for ORDER BY items; see below. for which there was no right-hand row that passed the join
Note that the <quote>first row</quote> of each set is unpredictable condition. This left-hand row is extended to the full width
unless ORDER BY is used to ensure that the desired of the joined table by inserting null values for the
row appears first. For example, right-hand columns. Note that only the <literal>JOIN</>
<programlisting> clauses own condition is considered while deciding which rows
SELECT DISTINCT ON (location) location, time, report have matches. Outer conditions are applied afterwards.
FROM weatherReports
ORDER BY location, time DESC;
</programlisting>
retrieves the most recent weather report for each location. But if
we had not used ORDER BY to force descending order of time values
for each location, we'd have gotten a report of unpredictable age
for each location.
</para> </para>
<para> <para>
The GROUP BY clause allows a user to divide a table Conversely, <literal>RIGHT OUTER JOIN</> returns all the
into groups of rows that match on one or more values. joined rows, plus one row for each unmatched right-hand row
(See <xref linkend="sql-groupby" endterm="sql-groupby-title">.) (extended with nulls on the left). This is just a notational
convenience, since you could convert it to a <literal>LEFT
OUTER JOIN</> by switching the left and right inputs.
</para> </para>
<para> <para>
The HAVING clause allows selection of only those groups of rows <literal>FULL OUTER JOIN</> returns all the joined rows, plus
meeting the specified condition. one row for each unmatched left-hand row (extended with nulls
(See <xref linkend="sql-having" endterm="sql-having-title">.) on the right), plus one row for each unmatched right-hand row
(extended with nulls on the left).
</para> </para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>ON <replaceable class="parameter">join_condition</replaceable></literal></term>
<listitem>
<para> <para>
The ORDER BY clause causes the returned rows to be sorted in a specified <replaceable class="parameter">join_condition</replaceable> is
order. If ORDER BY is not given, the rows are returned in whatever order an expression resulting in a value of type
the system finds cheapest to produce. <type>boolean</type> (similar to a <literal>WHERE</literal>
(See <xref linkend="sql-orderby" endterm="sql-orderby-title">.) clause) that specifies which rows in a join are considered to
match.
</para> </para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>USING (<replaceable class="parameter">join_column</replaceable> [, ...])</literal></term>
<listitem>
<para> <para>
<command>SELECT</command> queries can be combined using UNION, A clause of the form <literal>USING ( a, b, ... )</literal> is
INTERSECT, and EXCEPT operators. Use parentheses if necessary to shorthand for <literal>ON left_table.a = right_table.a AND
determine the ordering of these operators. left_table.b = right_table.b ...</literal>. Also,
<literal>USING</> implies that only one of each pair of
equivalent columns will be included in the join output, not
both.
</para> </para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>NATURAL</literal></term>
<listitem>
<para> <para>
The UNION operator computes the collection of rows <literal>NATURAL</literal> is shorthand for a
returned by the queries involved. <literal>USING</> list that mentions all columns in the two
Duplicate rows are eliminated unless ALL is specified. tables that have the same names.
(See <xref linkend="sql-union" endterm="sql-union-title">.)
</para> </para>
</listitem>
<para> </varlistentry>
The INTERSECT operator computes the rows that are common to both queries. </variablelist>
Duplicate rows are eliminated unless ALL is specified.
(See <xref linkend="sql-intersect" endterm="sql-intersect-title">.)
</para> </para>
</refsect2>
<refsect2 id="SQL-WHERE">
<title id="sql-where-title"><literal>WHERE</literal> Clause</title>
<para> <para>
The EXCEPT operator computes the rows returned by the first query but The optional <literal>WHERE</literal> clause has the general form
not the second query. <synopsis>
Duplicate rows are eliminated unless ALL is specified. WHERE <replaceable class="parameter">condition</replaceable>
(See <xref linkend="sql-except" endterm="sql-except-title">.) </synopsis>
where <replaceable class="parameter">condition</replaceable> is
any expression that evaluates to a result of type
<type>boolean</type>. Any row that does not satisfy this
condition will be eliminated from the output. A row satisfies the
condition if it returns true when the actual row values are
substituted for any variable references.
</para> </para>
</refsect2>
<refsect2 id="SQL-GROUPBY">
<title id="sql-groupby-title"><literal>GROUP BY</literal> Clause</title>
<para> <para>
The LIMIT clause allows a subset of the rows produced by the query The optional <literal>GROUP BY</literal> clause has the general form
to be returned to the user. <synopsis>
(See <xref linkend="sql-limit" endterm="sql-limit-title">.) GROUP BY <replaceable class="parameter">expression</replaceable> [, ...]
</synopsis>
</para> </para>
<para> <para>
The FOR UPDATE clause causes the <command>SELECT</command> <literal>GROUP BY</literal> will condense into a single row all
statement to lock the selected rows against concurrent updates. selected rows that share the same values for the grouped
expressions. <replaceable
class="parameter">expression</replaceable> can be an input column
name, or the name or ordinal number of an output column
(<command>SELECT</command> list), or it can be an arbitrary
expression formed from input-column values. In case of ambiguity,
a <literal>GROUP BY</literal> name will be interpreted as an
input-column name rather than an output column name.
</para> </para>
<para> <para>
You must have SELECT privilege to a table to read its values Aggregate functions, if any are used, are computed across all rows
(See the <command>GRANT</command>/<command>REVOKE</command> statements). making up each group, producing a separate value for each group
Use of FOR UPDATE requires UPDATE privilege as well. (whereas without <literal>GROUP BY</literal>, an aggregate
produces a single value computed across all the selected rows).
When <literal>GROUP BY</literal> is present, it is not valid for
the <command>SELECT</command> list expressions to refer to
ungrouped columns except within aggregate functions, since there
would be more than one possible value to return for an ungrouped
column.
</para> </para>
</refsect2>
<refsect2 id="SQL-FROM"> <refsect2 id="SQL-HAVING">
<refsect2info> <title id="sql-having-title"><literal>HAVING</literal> Clause</title>
<date>2000-12-11</date>
</refsect2info>
<title id="sql-from-title">
FROM Clause
</title>
<para> <para>
The FROM clause specifies one or more source tables for the The optional <literal>HAVING</literal> clause has the general form
<command>SELECT</command>. If multiple sources are specified, the <synopsis>
result is conceptually the Cartesian product of all the rows in HAVING <replaceable class="parameter">condition</replaceable>
all the sources --- but usually qualification conditions are added </synopsis>
to restrict the returned rows to a small subset of the Cartesian where <replaceable class="parameter">condition</replaceable> is
product. the same as specified for the <literal>WHERE</literal> clause.
</para> </para>
<para> <para>
When a FROM item is a simple table name, it implicitly includes rows <literal>HAVING</literal> eliminates group rows that do not
from sub-tables (inheritance children) of the table. satisfy the condition. <literal>HAVING</literal> is different
<command>ONLY</command> will from <literal>WHERE</literal>: <literal>WHERE</literal> filters
suppress rows from sub-tables of the table. Before individual rows before the application of <literal>GROUP
<Productname>PostgreSQL</Productname> 7.1, BY</literal>, while <literal>HAVING</literal> filters group rows
this was the default result, and adding sub-tables was done created by <literal>GROUP BY</literal>. Each column referenced in
by appending <command>*</command> to the table name. <replaceable class="parameter">condition</replaceable> must
This old behavior is available via the command unambiguously reference a grouping column, unless the reference
<command>SET SQL_Inheritance TO OFF</command>. appears within an aggregate function.
</para> </para>
</refsect2>
<refsect2 id="SQL-UNION">
<title id="sql-union-title"><literal>UNION</literal> Clause</title>
<para> <para>
A FROM item can also be a parenthesized The <literal>UNION</literal> clause has this general form:
sub-<command>SELECT</command> (note that an alias clause is <synopsis>
required for a sub-<command>SELECT</command>!). This is an <replaceable class="parameter">select_statement</replaceable> UNION [ ALL ] <replaceable class="parameter">select_statement</replaceable>
extremely useful feature since it's the only way to get multiple </synopsis>
levels of grouping, aggregation, or sorting in a single query. <replaceable class="parameter">select_statement</replaceable> is
any <command>SELECT</command> statement without an <literal>ORDER
BY</>, <literal>LIMIT</>, or <literal>FOR UPDATE</literal> clause.
(<literal>ORDER BY</> and <literal>LIMIT</> can be attached to a
subexpression if it is enclosed in parentheses. Without
parentheses, these clauses will be taken to apply to the result of
the <literal>UNION</literal>, not to its right-hand input
expression.)
</para> </para>
<para> <para>
A FROM item can be a table function (typically, a function that returns The <literal>UNION</literal> operator computes the set union of
multiple rows and/or columns, though actually any function can be used). the rows returned by the involved <command>SELECT</command>
The function is invoked with the given argument value(s), and then its statements. A row is in the set union of two result sets if it
output is scanned as though it were a table. appears in at least one of the result sets. The two
<command>SELECT</command> statements that represent the direct
operands of the <literal>UNION</literal> must produce the same
number of columns, and corresponding columns must be of compatible
data types.
</para> </para>
<para> <para>
In some cases it is useful to define table functions that can return The result of <literal>UNION</> does not contain any duplicate
different column sets depending on how they are invoked. To support this, rows unless the <literal>ALL</> option is specified.
the table function can be declared as returning the pseudo-type <literal>ALL</> prevents elimination of duplicates.
<type>record</>. When such a function is used in FROM, it must be
followed by an alias, or the keyword <literal>AS</> alone,
and then by a parenthesized list of column names and types. This provides
a query-time composite type definition. The composite type definition
must match the actual composite type returned from the function, or an
error will be reported at run-time.
</para> </para>
<para> <para>
Finally, a FROM item can be a JOIN clause, which combines two simpler Multiple <literal>UNION</> operators in the same
FROM items. (Use parentheses if necessary to determine the order <command>SELECT</command> statement are evaluated left to right,
of nesting.) unless otherwise indicated by parentheses.
</para> </para>
<para> <para>
A CROSS JOIN or INNER JOIN is a simple Cartesian product, Currently, <literal>FOR UPDATE</> may not be specified either for
the same as you get from listing the two items at the top level of FROM. a <literal>UNION</> result or for the inputs of <literal>UNION</>.
CROSS JOIN is equivalent to INNER JOIN ON (TRUE), that is, no rows are
removed by qualification. These join types are just a notational
convenience, since they do nothing you couldn't do with plain FROM and
WHERE.
</para> </para>
</refsect2>
<refsect2 id="SQL-INTERSECT">
<title id="sql-intersect-title"><literal>INTERSECT</literal> Clause</title>
<para> <para>
LEFT OUTER JOIN returns all rows in the qualified Cartesian product The <literal>INTERSECT</literal> clause has this general form:
(i.e., all combined rows that pass its ON condition), plus one copy of each <synopsis>
row in the left-hand table for which there was no right-hand row that <replaceable class="parameter">select_statement</replaceable> INTERSECT [ ALL ] <replaceable class="parameter">select_statement</replaceable>
passed the ON condition. This left-hand row is extended to the full </synopsis>
width of the joined table by inserting null values for the right-hand columns. <replaceable class="parameter">select_statement</replaceable> is
Note that only the <literal>JOIN</>'s own ON or USING condition is considered while any <command>SELECT</command> statement without an <literal>ORDER
deciding which rows have matches. Outer ON or WHERE conditions are BY</>, <literal>LIMIT</>, or <literal>FOR UPDATE</literal> clause.
applied afterwards.
</para> </para>
<para> <para>
Conversely, RIGHT OUTER JOIN returns all the joined rows, plus one row The <literal>INTERSECT</literal> operator computes the set
for each unmatched right-hand row (extended with nulls on the left). intersection of the rows returned by the involved
This is just a notational <command>SELECT</command> statements. A row is in the
convenience, since you could convert it to a LEFT OUTER JOIN by switching intersection of two result sets if it appears in both result sets.
the left and right inputs.
</para> </para>
<para> <para>
FULL OUTER JOIN returns all the joined rows, plus one row for each The result of <literal>INTERSECT</literal> does not contain any
unmatched left-hand row (extended with nulls on the right), plus one row duplicate rows unless the <literal>ALL</> option is specified.
for each unmatched right-hand row (extended with nulls on the left). With <literal>ALL</>, a row that has m duplicates in the left
table and n duplicates in the right table will appear min(m,n)
times in the result set.
</para> </para>
<para> <para>
For all the JOIN types except CROSS JOIN, you must write exactly one of Multiple <literal>INTERSECT</literal> operators in the same
ON <replaceable class="PARAMETER">join_condition</replaceable>, <command>SELECT</command> statement are evaluated left to right,
USING ( <replaceable class="PARAMETER">join_column_list</replaceable> ), unless parentheses dictate otherwise.
or NATURAL. ON is the most general case: you can write any qualification <literal>INTERSECT</literal> binds more tightly than
expression involving the two tables to be joined. <literal>UNION</literal>. That is, <literal>A UNION B INTERSECT
A USING column list ( a, b, ... ) is shorthand for the ON condition C</literal> will be read as <literal>A UNION (B INTERSECT
left_table.a = right_table.a AND left_table.b = right_table.b ... C)</literal>.
Also, USING implies that only one of each pair of equivalent columns will
be included in the JOIN output, not both. NATURAL is shorthand for
a USING list that mentions all similarly-named columns in the tables.
</para> </para>
</refsect2> </refsect2>
<refsect2 id="SQL-WHERE"> <refsect2 id="SQL-EXCEPT">
<refsect2info> <title id="sql-except-title"><literal>EXCEPT</literal> Clause</title>
<date>2000-03-15</date>
</refsect2info>
<title id="sql-where-title">
WHERE Clause
</title>
<para> <para>
The optional WHERE condition has the general form: The <literal>EXCEPT</literal> clause has this general form:
<synopsis>
<synopsis> <replaceable class="parameter">select_statement</replaceable> EXCEPT [ ALL ] <replaceable class="parameter">select_statement</replaceable>
WHERE <replaceable class="PARAMETER">boolean_expr</replaceable> </synopsis>
</synopsis> <replaceable class="parameter">select_statement</replaceable> is
any <command>SELECT</command> statement without an <literal>ORDER
<replaceable class="PARAMETER">boolean_expr</replaceable> BY</>, <literal>LIMIT</>, or <literal>FOR UPDATE</literal> clause.
can consist of any expression which evaluates to a Boolean value.
In many cases, this expression will be:
<synopsis>
<replaceable class="PARAMETER">expr</replaceable> <replaceable class="PARAMETER">cond_op</replaceable> <replaceable class="PARAMETER">expr</replaceable>
</synopsis>
or
<synopsis>
<replaceable class="PARAMETER">log_op</replaceable> <replaceable class="PARAMETER">expr</replaceable>
</synopsis>
where <replaceable class="PARAMETER">cond_op</replaceable>
can be one of: =, &lt;, &lt;=, &gt;, &gt;= or &lt;&gt;,
a conditional operator like ALL, ANY, IN, LIKE, or a
locally defined operator,
and <replaceable class="PARAMETER">log_op</replaceable> can be one
of: AND, OR, NOT.
SELECT will ignore all rows for which the WHERE condition does not return
TRUE.
</para> </para>
</refsect2>
<refsect2 id="SQL-GROUPBY"> <para>
<refsect2info> The <literal>EXCEPT</literal> operator computes the set of rows
<date>2000-03-15</date> that are in the result of the left <command>SELECT</command>
</refsect2info> statement but not in the result of the right one.
<title id="sql-groupby-title">
GROUP BY Clause
</title>
<para>
GROUP BY specifies a grouped table derived by the application
of this clause:
<synopsis>
GROUP BY <replaceable class="PARAMETER">expression</replaceable> [, ...]
</synopsis>
</para>
<para>
GROUP BY will condense into a single row all selected rows that
share the same values for the grouped columns. Aggregate
functions, if any, are computed across all rows making up each
group, producing a separate value for each group (whereas without
GROUP BY, an aggregate produces a single value computed across all
the selected rows). When GROUP BY is present, it is not valid for
the <command>SELECT</command> output expression(s) to refer to
ungrouped columns except within aggregate functions, since there
would be more than one possible value to return for an ungrouped
column.
</para> </para>
<para> <para>
A GROUP BY item can be an input column name, or the name or The result of <literal>EXCEPT</literal> does not contain any
ordinal number of an output column (<command>SELECT</command> duplicate rows unless the <literal>ALL</> option is specified.
expression), or it can be an arbitrary expression formed from With <literal>ALL</>, a row that has m duplicates in the left
input-column values. In case of ambiguity, a GROUP BY name will table and n duplicates in the right table will appear max(m-n,0)
be interpreted as an input-column name rather than an output times in the result set.
column name.
</para> </para>
</refsect2>
<refsect2 id="SQL-HAVING">
<refsect2info>
<date>2000-03-15</date>
</refsect2info>
<title id="sql-having-title">
HAVING Clause
</title>
<para> <para>
The optional HAVING condition has the general form: Multiple <literal>EXCEPT</literal> operators in the same
<command>SELECT</command> statement are evaluated left to right,
<synopsis> unless parentheses dictate otherwise. <literal>EXCEPT</> binds at
HAVING <replaceable class="PARAMETER">boolean_expr</replaceable> the same level as <literal>UNION</>.
</synopsis>
where <replaceable class="PARAMETER">boolean_expr</replaceable> is the same
as specified for the WHERE clause.
</para> </para>
</refsect2>
<para> <refsect2 id="sql-select-list">
HAVING specifies a grouped table derived by the elimination <title id="sql-select-list-title"><command>SELECT</command> List</title>
of group rows that do not satisfy the
<replaceable class="PARAMETER">boolean_expr</replaceable>. <para>
HAVING is different from WHERE: The <command>SELECT</command> list (between the key words
WHERE filters individual rows before application of GROUP BY, <literal>SELECT</> and <literal>FROM</>) specifies expressions
while HAVING filters group rows created by GROUP BY. that form the output rows of the <command>SELECT</command>
statement. The expressions can (and usually do) refer to columns
computed in the <literal>FROM</> clause. Using the clause
<literal>AS <replaceable
class="parameter">output_name</replaceable></literal>, another
name can be specified for an output column. This name is
primarily used to label the column for display. It can also be
used to refer to the column's value in <literal>ORDER BY</> and
<literal>GROUP BY</> clauses, but not in the <literal>WHERE</> or
<literal>HAVING</> clauses; there you must write out the
expression instead.
</para> </para>
<para> <para>
Each column referenced in Instead of an expression, <literal>*</literal> can be written in
<replaceable class="PARAMETER">boolean_expr</replaceable> shall unambiguously the output list as a shorthand for all the columns of the selected
reference a grouping column, unless the reference appears within an rows. Also, one can write <literal><replaceable
aggregate function. class="parameter">table_name</replaceable>.*</literal> as a
shorthand for the columns coming from just that table.
</para> </para>
</refsect2> </refsect2>
<refsect2 id="SQL-ORDERBY"> <refsect2 id="SQL-ORDERBY">
<refsect2info> <title id="sql-orderby-title"><literal>ORDER BY</literal> Clause</title>
<date>2000-03-15</date>
</refsect2info>
<title id="sql-orderby-title">
ORDER BY Clause
</title>
<para> <para>
<synopsis> The optional <literal>ORDER BY</literal> clause has this general form:
ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] <synopsis>
</synopsis></para> ORDER BY <replaceable class="parameter">expression</replaceable> [ ASC | DESC | USING <replaceable class="parameter">operator</replaceable> ] [, ...]
</synopsis>
<replaceable class="parameter">expression</replaceable> can be the
name or ordinal number of an output column
(<command>SELECT</command> list), or it can be an arbitrary
expression formed from input-column values.
</para>
<para> <para>
An ORDER BY item can be the name or ordinal number of an output The <literal>ORDER BY</literal> clause causes the result rows to
column (<command>SELECT</command> expression), or it can be an be sorted according to the specified expressions. If two rows are
arbitrary expression formed from input-column values. In case of equal according to the leftmost expression, the are compared
ambiguity, an ORDER BY name will be interpreted as an according to the next expression and so on. If they are equal
output-column name. according to all specified expressions, they are returned in
random order.
</para> </para>
<para> <para>
The ordinal number refers to the ordinal (left-to-right) position The ordinal number refers to the ordinal (left-to-right) position
of the result column. This feature makes it possible to define an ordering of the result column. This feature makes it possible to define an
on the basis of a column that does not have a unique name. ordering on the basis of a column that does not have a unique
This is never absolutely necessary because it is always possible name. This is never absolutely necessary because it is always
to assign a name to a result column using the AS clause, e.g.: possible to assign a name to a result column using the
<programlisting> <literal>AS</> clause.
SELECT title, date_prod + 1 AS newlen FROM films ORDER BY newlen; </para>
</programlisting></para>
<para>
<para> It is also possible to use arbitrary expressions in the
It is also possible to ORDER BY <literal>ORDER BY</literal> clause, including columns that do not
arbitrary expressions (an extension to SQL92), appear in the <command>SELECT</command> result list. Thus the
including fields that do not appear in the following statement is valid:
SELECT result list. <programlisting>
Thus the following statement is legal:
<programlisting>
SELECT name FROM distributors ORDER BY code; SELECT name FROM distributors ORDER BY code;
</programlisting> </programlisting>
A limitation of this feature is that an ORDER BY clause applying to the A limitation of this feature is that an <literal>ORDER BY</>
result of a UNION, INTERSECT, or EXCEPT query may only specify an output clause applying to the result of a <literal>UNION</>,
column name or number, not an expression. <literal>INTERSECT</>, or <literal>EXCEPT</> clause may only
specify an output column name or number, not an expression.
</para> </para>
<para> <para>
Note that if an ORDER BY item is a simple name that matches both If an <literal>ORDER BY</> expression is a simple name that
a result column name and an input column name, ORDER BY will interpret matches both a result column name and an input column name,
it as the result column name. This is the opposite of the choice that <literal>ORDER BY</> will interpret it as the result column name.
GROUP BY will make in the same situation. This inconsistency is This is the opposite of the choice that <literal>GROUP BY</> will
mandated by the SQL92 standard. make in the same situation. This inconsistency is made to be
compatible with the SQL standard.
</para> </para>
<para> <para>
Optionally one may add the key word <literal>DESC</> (descending) Optionally one may add the key word <literal>ASC</> (ascending) or
or <literal>ASC</> (ascending) after each column name in the <literal>DESC</> (descending) after each expression in the
<literal>ORDER BY</> clause. If not specified, <literal>ASC</> is <literal>ORDER BY</> clause. If not specified, <literal>ASC</> is
assumed by default. Alternatively, a specific ordering operator assumed by default. Alternatively, a specific ordering operator
name may be specified. <literal>ASC</> is equivalent to name may be specified in the <literal>USING</> clause.
<literal>USING &lt;</> and <literal>DESC</> is equivalent to <literal>ASC</> is equivalent to <literal>USING &lt;</> and
<literal>USING &gt;</>. <literal>DESC</> is equivalent to <literal>USING &gt;</>.
</para> </para>
<para> <para>
The null value sorts higher than any other value in a domain. In other The null value sorts higher than any other value. In other words,
words, with ascending sort order nulls sort at the end and with with ascending sort order, null values sort at the end, and with
descending sort order nulls sort at the beginning. descending sort order, null values sort at the beginning.
</para> </para>
<para> <para>
...@@ -676,273 +675,147 @@ SELECT name FROM distributors ORDER BY code; ...@@ -676,273 +675,147 @@ SELECT name FROM distributors ORDER BY code;
collation order that was established when the database cluster collation order that was established when the database cluster
was initialized. was initialized.
</para> </para>
</refsect2> </refsect2>
<refsect2 id="SQL-UNION"> <refsect2 id="SQL-LIMIT">
<refsect2info> <title id="sql-limit-title"><literal>LIMIT</literal> Clause</title>
<date>2000-12-11</date>
</refsect2info>
<title id="sql-union-title">
UNION Clause
</title>
<para>
<synopsis>
<replaceable class="PARAMETER">table_query</replaceable> UNION [ ALL ] <replaceable class="PARAMETER">table_query</replaceable>
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ]
[ LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL } ]
[ OFFSET <replaceable class="PARAMETER">start</replaceable> ]
</synopsis>
where
<replaceable class="PARAMETER">table_query</replaceable>
specifies any select expression without an ORDER BY, LIMIT, or FOR UPDATE
clause. (ORDER BY and LIMIT can be attached to a sub-expression
if it is enclosed in parentheses. Without parentheses, these clauses
will be taken to apply to the result of the UNION, not to its right-hand
input expression.)
</para>
<para>
The UNION operator computes the collection (set union) of the rows
returned by the queries involved. The two
<command>SELECT</command> statements that represent the direct
operands of the UNION must produce the same number of columns, and
corresponding columns must be of compatible data types.
</para>
<para>
The result of UNION does not contain any duplicate rows
unless the ALL option is specified. ALL prevents elimination of
duplicates.
</para>
<para>
Multiple UNION operators in the same <command>SELECT</command>
statement are evaluated left to right, unless otherwise indicated
by parentheses.
</para>
<para>
Currently, FOR UPDATE may not be specified either for a UNION result
or for the inputs of a UNION.
</para>
</refsect2>
<refsect2 id="SQL-INTERSECT">
<refsect2info>
<date>2000-12-11</date>
</refsect2info>
<title id="sql-intersect-title">
INTERSECT Clause
</title>
<para>
<synopsis>
<replaceable class="PARAMETER">table_query</replaceable> INTERSECT [ ALL ] <replaceable class="PARAMETER">table_query</replaceable>
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ]
[ LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL } ]
[ OFFSET <replaceable class="PARAMETER">start</replaceable> ]
</synopsis>
where
<replaceable class="PARAMETER">table_query</replaceable>
specifies any select expression without an ORDER BY, LIMIT, or
FOR UPDATE clause.
</para>
<para> <para>
INTERSECT is similar to UNION, except that it produces only rows that The <literal>LIMIT</literal> clause consists of two independent
appear in both query outputs, rather than rows that appear in either. clauses:
<synopsis>
LIMIT { <replaceable class="parameter">count</replaceable> | ALL }
OFFSET <replaceable class="parameter">start</replaceable>
</synopsis>
<replaceable class="parameter">count</replaceable> specifies the
maximum number of rows to return, and <replaceable
class="parameter">start</replaceable> specifies the number of rows
to skip before starting to return rows.
</para> </para>
<para> <para>
The result of INTERSECT does not contain any duplicate rows When using <literal>LIMIT</>, it is a good idea to use an
unless the ALL option is specified. With ALL, a row that has <literal>ORDER BY</> clause that constrains the result rows into a
m duplicates in L and n duplicates in R will appear min(m,n) times. unique order. Otherwise you will get an unpredictable subset of
the query's rows---you may be asking for the tenth through
twentieth rows, but tenth through twentieth in what ordering? You
don't know what ordering unless you specify <literal>ORDER BY</>.
</para> </para>
<para> <para>
Multiple INTERSECT operators in the same SELECT statement are The query planner takes <literal>LIMIT</> into account when
evaluated left to right, unless parentheses dictate otherwise. generating a query plan, so you are very likely to get different
INTERSECT binds more tightly than UNION --- that is, plans (yielding different row orders) depending on what you use
A UNION B INTERSECT C will be read as for <literal>LIMIT</> and <literal>OFFSET</>. Thus, using
A UNION (B INTERSECT C) unless otherwise specified by parentheses. different <literal>LIMIT</>/<literal>OFFSET</> values to select
different subsets of a query result <emphasis>will give
inconsistent results</emphasis> unless you enforce a predictable
result ordering with <literal>ORDER BY</>. This is not a bug; it
is an inherent consequence of the fact that SQL does not promise
to deliver the results of a query in any particular order unless
<literal>ORDER BY</> is used to constrain the order.
</para> </para>
</refsect2> </refsect2>
<refsect2 id="SQL-EXCEPT"> <refsect2 id="sql-distinct">
<refsect2info> <title id="sql-distinct-title"><literal>DISTINCT</literal> Clause</title>
<date>2000-12-11</date>
</refsect2info>
<title id="sql-except-title">
EXCEPT Clause
</title>
<para>
<synopsis>
<replaceable class="PARAMETER">table_query</replaceable> EXCEPT [ ALL ] <replaceable class="PARAMETER">table_query</replaceable>
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ]
[ LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL } ]
[ OFFSET <replaceable class="PARAMETER">start</replaceable> ]
</synopsis>
where
<replaceable class="PARAMETER">table_query</replaceable>
specifies any select expression without an ORDER BY, LIMIT,
or FOR UPDATE clause.
</para>
<para> <para>
EXCEPT is similar to UNION, except that it produces only rows that If <literal>DISTINCT</> is specified, all duplicate rows are
appear in the left query's output but not in the right query's output. removed from the result set (one row is kept from each group of
duplicates). <literal>ALL</> specifies the opposite: all rows are
kept; that is the default.
</para> </para>
<para> <para>
The result of EXCEPT does not contain any duplicate rows <literal>DISTINCT ON ( <replaceable
unless the ALL option is specified. With ALL, a row that has class="parameter">expression</replaceable> [, ...] )</literal>
m duplicates in L and n duplicates in R will appear max(m-n,0) times. keeps only the first row of each set of rows where the given
</para> expressions evaluate to equal. The <literal>DISTINCT ON</literal>
expressions are interpreted using the same rules as for
<para> <literal>ORDER BY</> (see above). Note that the <quote>first
Multiple EXCEPT operators in the same SELECT statement are row</quote> of each set is unpredictable unless <literal>ORDER
evaluated left to right, unless parentheses dictate otherwise. BY</> is used to ensure that the desired row appears first. For
EXCEPT binds at the same level as UNION. example,
<programlisting>
SELECT DISTINCT ON (location) location, time, report
FROM weather_reports
ORDER BY location, time DESC;
</programlisting>
retrieves the most recent weather report for each location. But
if we had not used <literal>ORDER BY</> to force descending order
of time values for each location, we'd have gotten a report from
an unpredictable time for each location.
</para> </para>
</refsect2> </refsect2>
<refsect2 id="SQL-LIMIT"> <refsect2 id="SQL-FOR-UPDATE">
<refsect2info> <title id="sql-for-update-title"><literal>FOR UPDATE</literal> Clause</title>
<date>2000-02-20</date>
</refsect2info>
<title id="sql-limit-title">
LIMIT Clause
</title>
<para>
<synopsis>
LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL }
OFFSET <replaceable class="PARAMETER">start</replaceable>
</synopsis>
where
<replaceable class="PARAMETER">count</replaceable> specifies the
maximum number of rows to return, and
<replaceable class="PARAMETER">start</replaceable> specifies the
number of rows to skip before starting to return rows.
</para>
<para>
LIMIT allows you to retrieve just a portion of the rows that are generated
by the rest of the query. If a limit count is given, no more than that
many rows will be returned. If an offset is given, that many rows will
be skipped before starting to return rows.
</para>
<para> <para>
When using LIMIT, it is a good idea to use an ORDER BY clause that The <literal>FOR UPDATE</literal> clause has this form:
constrains the result rows into a unique order. Otherwise you will get <synopsis>
an unpredictable subset of the query's rows---you may be asking for FOR UPDATE [ OF <replaceable class="parameter">table_name</replaceable> [, ...] ]
the tenth through twentieth rows, but tenth through twentieth in what </synopsis>
ordering? You don't know what ordering unless you specify ORDER BY.
</para> </para>
<para> <para>
As of <productname>PostgreSQL</productname> 7.0, the <literal>FOR UPDATE</literal> causes the rows retrieved by the
query optimizer takes LIMIT into account when generating a query plan, <command>SELECT</command> statement to be locked as though for
so you are very likely to get different plans (yielding different row update. This prevents them from being modified or deleted by
orders) depending on what you use for LIMIT and OFFSET. Thus, using other transactions until the current transaction ends. That is,
different LIMIT/OFFSET values to select different subsets of a query other transactions that attempt <command>UPDATE</command>,
result <emphasis>will give inconsistent results</emphasis> unless <command>DELETE</command>, or <command>SELECT FOR UPDATE</command>
you enforce a predictable result ordering with ORDER BY. This is not of these rows will be blocked until the current transaction ends.
a bug; it is an inherent consequence of the fact that SQL does not Also, if an <command>UPDATE</command>, <command>DELETE</command>,
promise to deliver the results of a query in any particular order or <command>SELECT FOR UPDATE</command> from another transaction
unless ORDER BY is used to constrain the order. has already locked a selected row or rows, <command>SELECT FOR
</para>
</refsect2>
<refsect2 id="SQL-FOR-UPDATE">
<refsect2info>
<date>2002-08-28</date>
</refsect2info>
<title id="sql-for-update-title">
FOR UPDATE Clause
</title>
<para>
<synopsis>
FOR UPDATE [ OF <replaceable class="PARAMETER">tablename</replaceable> [, ...] ]
</synopsis>
</para>
<para>
FOR UPDATE causes the rows retrieved by the query to be locked as
though for update. This prevents them from being modified or
deleted by other transactions until the current transaction ends;
that is, other transactions that attempt
<command>UPDATE</command>, <command>DELETE</command>, or
<command>SELECT FOR UPDATE</command> of these rows will be blocked
until the current transaction ends. Also, if an
<command>UPDATE</command>, <command>DELETE</command>, or
<command>SELECT FOR UPDATE</command> from another transaction has
already locked a selected row or rows, <command>SELECT FOR
UPDATE</command> will wait for the other transaction to complete, UPDATE</command> will wait for the other transaction to complete,
and will then lock and return the updated row (or no row, if the and will then lock and return the updated row (or no row, if the
row was deleted). For further discussion see <xref linkend="mvcc">. row was deleted). For further discussion see <xref
linkend="mvcc">.
</para> </para>
<para> <para>
If specific tables are named in FOR UPDATE, then only rows coming If specific tables are named in <literal>FOR UPDATE</literal>,
from those tables are locked; any other tables used in the then only rows coming from those tables are locked; any other
<command>SELECT</command> are simply read as usual. tables used in the <command>SELECT</command> are simply read as
usual.
</para> </para>
<para> <para>
FOR UPDATE cannot be used in contexts where returned rows can't be clearly <literal>FOR UPDATE</literal> cannot be used in contexts where
identified with individual table rows; for example it can't be used with returned rows can't be clearly identified with individual table
aggregation. rows; for example it can't be used with aggregation.
</para> </para>
<para> <para>
FOR UPDATE may appear before LIMIT for compatibility with <literal>FOR UPDATE</literal> may appear before
pre-7.3 applications. However, it effectively executes after LIMIT, <literal>LIMIT</literal> for compatibility with PostgreSQL
and so that is the recommended place to write it. versions before 7.3. It effectively executes after
<literal>LIMIT</literal>, however, and so that is the recommended
place to write it.
</para> </para>
</refsect2> </refsect2>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-SELECT-2"> <refsect1>
<title> <title>Examples</title>
Usage
</title>
<para> <para>
To join the table <literal>films</literal> with the table To join the table <literal>films</literal> with the table
<literal>distributors</literal>: <literal>distributors</literal>:
<programlisting> <programlisting>
SELECT f.title, f.did, d.name, f.date_prod, f.kind SELECT f.title, f.did, d.name, f.date_prod, f.kind
FROM distributors d, films f FROM distributors d, films f
WHERE f.did = d.did WHERE f.did = d.did
title | did | name | date_prod | kind title | did | name | date_prod | kind
---------------------------+-----+------------------+------------+---------- -------------------+-----+--------------+------------+----------
The Third Man | 101 | British Lion | 1949-12-23 | Drama The Third Man | 101 | British Lion | 1949-12-23 | Drama
The African Queen | 101 | British Lion | 1951-08-11 | Romantic The African Queen | 101 | British Lion | 1951-08-11 | Romantic
Une Femme est une Femme | 102 | Jean Luc Godard | 1961-03-12 | Romantic ...
Vertigo | 103 | Paramount | 1958-11-14 | Action
Becket | 103 | Paramount | 1964-02-03 | Drama
48 Hrs | 103 | Paramount | 1982-10-22 | Action
War and Peace | 104 | Mosfilm | 1967-02-12 | Drama
West Side Story | 105 | United Artists | 1961-01-03 | Musical
Bananas | 105 | United Artists | 1971-07-13 | Comedy
Yojimbo | 106 | Toho | 1961-06-16 | Drama
There's a Girl in my Soup | 107 | Columbia | 1970-06-11 | Comedy
Taxi Driver | 107 | Columbia | 1975-05-15 | Action
Absence of Malice | 107 | Columbia | 1981-11-15 | Action
Storia di una donna | 108 | Westward | 1970-08-15 | Romantic
The King and I | 109 | 20th Century Fox | 1956-08-11 | Musical
Das Boot | 110 | Bavaria Atelier | 1981-11-11 | Drama
Bed Knobs and Broomsticks | 111 | Walt Disney | | Musical
(17 rows)
</programlisting> </programlisting>
</para> </para>
...@@ -951,7 +824,7 @@ SELECT f.title, f.did, d.name, f.date_prod, f.kind ...@@ -951,7 +824,7 @@ SELECT f.title, f.did, d.name, f.date_prod, f.kind
the results by <literal>kind</literal>: the results by <literal>kind</literal>:
<programlisting> <programlisting>
SELECT kind, SUM(len) AS total FROM films GROUP BY kind; SELECT kind, sum(len) AS total FROM films GROUP BY kind;
kind | total kind | total
----------+------- ----------+-------
...@@ -960,7 +833,6 @@ SELECT kind, SUM(len) AS total FROM films GROUP BY kind; ...@@ -960,7 +833,6 @@ SELECT kind, SUM(len) AS total FROM films GROUP BY kind;
Drama | 14:28 Drama | 14:28
Musical | 06:42 Musical | 06:42
Romantic | 04:38 Romantic | 04:38
(5 rows)
</programlisting> </programlisting>
</para> </para>
...@@ -970,16 +842,15 @@ SELECT kind, SUM(len) AS total FROM films GROUP BY kind; ...@@ -970,16 +842,15 @@ SELECT kind, SUM(len) AS total FROM films GROUP BY kind;
that are less than 5 hours: that are less than 5 hours:
<programlisting> <programlisting>
SELECT kind, SUM(len) AS total SELECT kind, sum(len) AS total
FROM films FROM films
GROUP BY kind GROUP BY kind
HAVING SUM(len) < INTERVAL '5 hour'; HAVING sum(len) < interval '5 hours';
kind | total kind | total
----------+------- ----------+-------
Comedy | 02:58 Comedy | 02:58
Romantic | 04:38 Romantic | 04:38
(2 rows)
</programlisting> </programlisting>
</para> </para>
...@@ -988,7 +859,7 @@ SELECT kind, SUM(len) AS total ...@@ -988,7 +859,7 @@ SELECT kind, SUM(len) AS total
results according to the contents of the second column results according to the contents of the second column
(<literal>name</literal>): (<literal>name</literal>):
<programlisting> <programlisting>
SELECT * FROM distributors ORDER BY name; SELECT * FROM distributors ORDER BY name;
SELECT * FROM distributors ORDER BY 2; SELECT * FROM distributors ORDER BY 2;
...@@ -1007,7 +878,6 @@ SELECT * FROM distributors ORDER BY 2; ...@@ -1007,7 +878,6 @@ SELECT * FROM distributors ORDER BY 2;
111 | Walt Disney 111 | Walt Disney
112 | Warner Bros. 112 | Warner Bros.
108 | Westward 108 | Westward
(13 rows)
</programlisting> </programlisting>
</para> </para>
...@@ -1016,7 +886,7 @@ SELECT * FROM distributors ORDER BY 2; ...@@ -1016,7 +886,7 @@ SELECT * FROM distributors ORDER BY 2;
<literal>distributors</literal> and <literal>distributors</literal> and
<literal>actors</literal>, restricting the results to those that begin <literal>actors</literal>, restricting the results to those that begin
with letter W in each table. Only distinct rows are wanted, so the with letter W in each table. Only distinct rows are wanted, so the
ALL keyword is omitted: key word <literal>ALL</literal> is omitted.
<programlisting> <programlisting>
distributors: actors: distributors: actors:
...@@ -1047,173 +917,135 @@ SELECT actors.name ...@@ -1047,173 +917,135 @@ SELECT actors.name
</para> </para>
<para> <para>
This example shows how to use a table function, both with and without This example shows how to use a function in the <literal>FROM</>
a column definition list. clause, both with and without a column definition list.
<programlisting> <programlisting>
distributors: CREATE FUNCTION distributors(int) RETURNS SETOF distributors AS '
did | name
-----+--------------
108 | Westward
111 | Walt Disney
112 | Warner Bros.
...
CREATE FUNCTION distributors(int)
RETURNS SETOF distributors AS '
SELECT * FROM distributors WHERE did = $1; SELECT * FROM distributors WHERE did = $1;
' LANGUAGE SQL; ' LANGUAGE SQL;
SELECT * FROM distributors(111); SELECT * FROM distributors(111);
did | name did | name
-----+------------- -----+-------------
111 | Walt Disney 111 | Walt Disney
(1 row)
CREATE FUNCTION distributors_2(int) CREATE FUNCTION distributors_2(int) RETURNS SETOF record AS '
RETURNS SETOF RECORD AS '
SELECT * FROM distributors WHERE did = $1; SELECT * FROM distributors WHERE did = $1;
' LANGUAGE SQL; ' LANGUAGE SQL;
SELECT * FROM distributors_2(111) AS (f1 int, f2 text); SELECT * FROM distributors_2(111) AS (f1 int, f2 text);
f1 | f2 f1 | f2
-----+------------- -----+-------------
111 | Walt Disney 111 | Walt Disney
(1 row)
</programlisting> </programlisting>
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-SELECT-3"> <refsect1>
<title> <title>Compatibility</title>
Compatibility
</title>
<refsect2 id="R2-SQL-SELECT-4">
<refsect2info>
<date>1998-09-24</date>
</refsect2info>
<title>Extensions</title>
<para> <para>
<productname>PostgreSQL</productname> allows one to omit Of course, the <command>SELECT</command> statement is compatible
the <command>FROM</command> clause from a query. This feature with the SQL standard. But there are some extensions and some
was retained from the original PostQUEL query language. It has missing features.
a straightforward use to compute the results of simple expressions: </para>
<refsect2>
<title>Omitted <literal>FROM</literal> Clauses</title>
<programlisting> <para>
<productname>PostgreSQL</productname> allows one to omit the
<literal>FROM</literal> clause. It has a straightforward use to
compute the results of simple expressions:
<programlisting>
SELECT 2+2; SELECT 2+2;
?column? ?column?
---------- ----------
4 4
</programlisting> </programlisting>
Some other <acronym>SQL</acronym> databases cannot do this except
Some other <acronym>SQL</acronym> databases cannot do this except by by introducing a dummy one-row table from which to do the
introducing a dummy one-row table to do the select from. A less <command>SELECT</command>.
obvious use is to abbreviate a normal select from one or more tables: </para>
<programlisting> <para>
A less obvious use is to abbreviate a normal
<command>SELECT</command> from tables:
<programlisting>
SELECT distributors.* WHERE distributors.name = 'Westward'; SELECT distributors.* WHERE distributors.name = 'Westward';
did | name did | name
-----+---------- -----+----------
108 | Westward 108 | Westward
</programlisting> </programlisting>
This works because an implicit <literal>FROM</literal> item is
added for each table that is referenced in other parts of the
<command>SELECT</command> statement but not mentioned in
<literal>FROM</literal>.
</para>
This works because an implicit FROM item is added for each table that is <para>
referenced in the query but not mentioned in FROM. While this is a convenient While this is a convenient shorthand, it's easy to misuse. For
shorthand, it's easy to misuse. For example, the query example, the command
<programlisting> <programlisting>
SELECT distributors.* FROM distributors d; SELECT distributors.* FROM distributors d;
</programlisting> </programlisting>
is probably a mistake; most likely the user meant is probably a mistake; most likely the user meant
<programlisting> <programlisting>
SELECT d.* FROM distributors d; SELECT d.* FROM distributors d;
</programlisting> </programlisting>
rather than the unconstrained join rather than the unconstrained join
<programlisting> <programlisting>
SELECT distributors.* FROM distributors d, distributors distributors; SELECT distributors.* FROM distributors d, distributors distributors;
</programlisting> </programlisting>
that he will actually get. To help detect this sort of mistake, that he will actually get. To help detect this sort of mistake,
<Productname>PostgreSQL</Productname> 7.1 PostgreSQL will warn if the implicit-<literal>FROM</literal>
and later will warn if the implicit-FROM feature is used in a query that also feature is used in a <command>SELECT</command> statement that also
contains an explicit FROM clause. contains an explicit <literal>FROM</literal> clause.
</para>
<para>
The table-function feature is a <productname>PostgreSQL</productname>
extension.
</para> </para>
</refsect2> </refsect2>
<refsect2 id="R2-SQL-SELECT-5"> <refsect2>
<refsect2info> <title>The <literal>AS</literal> Key Word</title>
<date>1998-09-24</date>
</refsect2info>
<title>
<acronym>SQL92</acronym>
</title>
<para>
</para>
<refsect3 id="R3-SQL-SELECT-1">
<refsect3info>
<date>1998-04-15</date>
</refsect3info>
<title>
SELECT Clause
</title>
<para>
In the <acronym>SQL92</acronym> standard, the optional keyword <literal>AS</>
is just noise and can be
omitted without affecting the meaning.
The <productname>PostgreSQL</productname> parser requires this keyword when
renaming output columns because the type extensibility features lead to
parsing ambiguities
in this context. <literal>AS</literal> is optional in FROM items, however.</para>
<para> <para>
The DISTINCT ON phrase is not part of <acronym>SQL92</acronym>. In the SQL standard, the optional key word <literal>AS</> is just
Nor are LIMIT and OFFSET. noise and can be omitted without affecting the meaning. The
<productname>PostgreSQL</productname> parser requires this key
word when renaming output columns because the type extensibility
features lead to parsing ambiguities in this context.
<literal>AS</literal> is optional in <literal>FROM</literal>
items, however.
</para> </para>
</refsect2>
<refsect2>
<title>Namespace Available to <literal>GROUP BY</literal> and <literal>ORDER BY</literal></title>
<para> <para>
In <acronym>SQL92</acronym>, an ORDER BY clause may only use result In the SQL standard, an <literal>ORDER BY</literal> clause may
column names or numbers, while a GROUP BY clause may only use input only use result column names or numbers, while a <literal>GROUP
column names. BY</literal> clause may only use expressions based on input column
<productname>PostgreSQL</productname> extends each of these clauses to names. <productname>PostgreSQL</productname> extends each of
allow the other choice as well (but it uses the standard's interpretation these clauses to allow the other choice as well (but it uses the
if there is ambiguity). standard's interpretation if there is ambiguity).
<productname>PostgreSQL</productname> also allows both clauses to specify <productname>PostgreSQL</productname> also allows both clauses to
arbitrary expressions. Note that names appearing in an expression will specify arbitrary expressions. Note that names appearing in an
always be taken as input-column names, not as result-column names. expression will always be taken as input-column names, not as
result-column names.
</para> </para>
</refsect3> </refsect2>
<refsect3 id="R3-SQL-UNION-1"> <refsect2>
<refsect3info> <title>Nonstandard Clauses</title>
<date>1998-09-24</date>
</refsect3info>
<title>
UNION/INTERSECT/EXCEPT Clause
</title>
<para>
The <acronym>SQL92</acronym> syntax for UNION/INTERSECT/EXCEPT allows an
additional CORRESPONDING BY option:
<synopsis>
<replaceable class="PARAMETER">table_query</replaceable> UNION [ALL]
[CORRESPONDING [BY (<replaceable class="PARAMETER">column</replaceable> [,...])]]
<replaceable class="PARAMETER">table_query</replaceable>
</synopsis></para>
<para> <para>
The CORRESPONDING BY clause is not supported by The clauses <literal>DISTINCT ON</literal>,
<productname>PostgreSQL</productname>. <literal>LIMIT</literal>, and <literal>OFFSET</literal> are not
defined in the SQL standard.
</para> </para>
</refsect3>
</refsect2> </refsect2>
</refsect1> </refsect1>
</refentry> </refentry>
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/select_into.sgml,v 1.21 2002/11/21 23:34:43 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/select_into.sgml,v 1.22 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,18 +8,14 @@ PostgreSQL documentation ...@@ -8,18 +8,14 @@ PostgreSQL documentation
<refentrytitle id="SQL-SELECTINTO-TITLE">SELECT INTO</refentrytitle> <refentrytitle id="SQL-SELECTINTO-TITLE">SELECT INTO</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname> <refname>SELECT INTO</refname>
SELECT INTO <refpurpose>create a new table from the results of a query</refpurpose>
</refname> </refnamediv>
<refpurpose>
create a new table from the results of a query
</refpurpose></refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>2000-12-11</date>
</refsynopsisdivinfo>
<synopsis>
SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replaceable> [, ...] ) ] ] SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replaceable> [, ...] ) ] ]
* | <replaceable class="PARAMETER">expression</replaceable> [ AS <replaceable class="PARAMETER">output_name</replaceable> ] [, ...] * | <replaceable class="PARAMETER">expression</replaceable> [ AS <replaceable class="PARAMETER">output_name</replaceable> ] [, ...]
INTO [ TEMPORARY | TEMP ] [ TABLE ] <replaceable class="PARAMETER">new_table</replaceable> INTO [ TEMPORARY | TEMP ] [ TABLE ] <replaceable class="PARAMETER">new_table</replaceable>
...@@ -32,25 +28,32 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replac ...@@ -32,25 +28,32 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replac
[ LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL } ] [ LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL } ]
[ OFFSET <replaceable class="PARAMETER">start</replaceable> ] [ OFFSET <replaceable class="PARAMETER">start</replaceable> ]
[ FOR UPDATE [ OF <replaceable class="PARAMETER">tablename</replaceable> [, ...] ] ] [ FOR UPDATE [ OF <replaceable class="PARAMETER">tablename</replaceable> [, ...] ] ]
</synopsis> </synopsis>
</refsynopsisdiv>
<refsect2 id="R2-SQL-SELECTINTO-1"> <refsect1>
<refsect2info> <title>Description</title>
<date>2001-03-20</date>
</refsect2info>
<title>
Inputs
</title>
<para> <para>
<command>SELECT INTO</command> creates a new table and fills it
with data computed by a query. The data is not returned to the
client, as it is with a normal <command>SELECT</command>. The new
table's columns have the names and data types associated with the
output columns of the <command>SELECT</command>.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term>TEMPORARY</term> <term><literal>TEMPORARY</literal> or <literal>TEMP</literal></term>
<term>TEMP</term>
<listitem> <listitem>
<para> <para>
If specified, the table is created as a temporary table. If specified, the table is created as a temporary table. Refer
Refer to <xref linkend="sql-createtable" endterm="sql-createtable-title"> for details. to <xref linkend="sql-createtable"
endterm="sql-createtable-title"> for details.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -64,21 +67,15 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replac ...@@ -64,21 +67,15 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replac
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
<para> <para>
All other inputs are described in detail for All other parameters are described in detail under <xref
<xref linkend="sql-select" endterm="sql-select-title">. linkend="sql-select" endterm="sql-select-title">.
</para> </para>
</refsect2> </refsect1>
<refsect2 id="R2-SQL-SELECTINTO-2"> <refsect1>
<refsect2info> <title>Diagnostics</title>
<date>2001-03-20</date>
</refsect2info>
<title>
Outputs
</title>
<para> <para>
Refer to Refer to
...@@ -87,51 +84,36 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replac ...@@ -87,51 +84,36 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replac
<xref linkend="sql-select" endterm="sql-select-title"> <xref linkend="sql-select" endterm="sql-select-title">
for a summary of possible output messages. for a summary of possible output messages.
</para> </para>
</refsect2> </refsect1>
</refsynopsisdiv>
<refsect1 id="R1-SQL-SELECTINTO-1">
<refsect1info>
<date>2001-03-20</date>
</refsect1info>
<title>
Description
</title>
<para> <refsect1>
<command>SELECT INTO</command> creates a new table and fills it <title>Notes</title>
with data computed by a query. The data is not returned to the
client, as it is with a normal <command>SELECT</command>. The new
table's columns have the names and data types associated with the
output columns of the <command>SELECT</command>.
<note>
<para> <para>
<xref linkend="sql-createtableas" endterm="sql-createtableas-title"> <xref linkend="sql-createtableas" endterm="sql-createtableas-title">
is functionally equivalent to <command>SELECT INTO</command>. is functionally equivalent to <command>SELECT INTO</command>.
<command>CREATE TABLE AS</command> is the recommended syntax, since <command>CREATE TABLE AS</command> is the recommended syntax, since
<command>SELECT INTO</command> is not standard. In fact, this form of this form of <command>SELECT INTO</command> is not available in
<command>SELECT INTO</command> is not available in <application>PL/pgSQL</application> or <xref linkend="app-ecpg">, <application>ECPG</application> or
because they interpret the INTO clause differently. <application>PL/pgSQL</application>, because they interpret the
</para> <literal>INTO</literal> clause differently.
</note>
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-SELECTINTO-2"> <refsect1>
<title> <title>Compatibility</title>
Compatibility
</title>
<para> <para>
SQL92 uses <command>SELECT ... INTO</command> to represent selecting The SQL standard uses <command>SELECT ... INTO</command> to
values into scalar variables of a host program, rather than creating represent selecting values into scalar variables of a host program,
a new table. This indeed is the usage found in <application>PL/pgSQL</application> and <xref linkend="app-ecpg">. rather than creating a new table. This indeed is the usage found
in <application>ECPG</application> (see <xref linkend="ecpg">) and
<application>PL/pgSQL</application> (see <xref linkend="plpgsql">).
The <productname>PostgreSQL</productname> usage of <command>SELECT The <productname>PostgreSQL</productname> usage of <command>SELECT
INTO</command> to represent table creation is historical. It's best INTO</command> to represent table creation is historical. It's
to use <command>CREATE TABLE AS</command> for this purpose in new code. best to use <command>CREATE TABLE AS</command> for this purpose in
(<command>CREATE TABLE AS</command> isn't standard either, but it's new code. (<command>CREATE TABLE AS</command> isn't standard
less likely to cause confusion.) either, but it's less likely to cause confusion.)
</para> </para>
</refsect1> </refsect1>
</refentry> </refentry>
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/set.sgml,v 1.74 2003/04/25 19:45:08 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/set.sgml,v 1.75 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,73 +8,20 @@ PostgreSQL documentation ...@@ -8,73 +8,20 @@ PostgreSQL documentation
<refentrytitle id="SQL-SET-TITLE">SET</refentrytitle> <refentrytitle id="SQL-SET-TITLE">SET</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname>SET</refname> <refname>SET</refname>
<refpurpose>change a run-time parameter</refpurpose> <refpurpose>change a run-time parameter</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<synopsis> <synopsis>
SET [ SESSION | LOCAL ] <replaceable class="PARAMETER">variable</replaceable> { TO | = } { <replaceable class="PARAMETER">value</replaceable> | '<replaceable class="PARAMETER">value</replaceable>' | DEFAULT } SET [ SESSION | LOCAL ] <replaceable class="PARAMETER">variable</replaceable> { TO | = } { <replaceable class="PARAMETER">value</replaceable> | '<replaceable class="PARAMETER">value</replaceable>' | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { <replaceable class="PARAMETER">timezone</replaceable> | LOCAL | DEFAULT } SET [ SESSION | LOCAL ] TIME ZONE { <replaceable class="PARAMETER">timezone</replaceable> | LOCAL | DEFAULT }
</synopsis> </synopsis>
<refsect2 id="R2-SQL-SET-1">
<title>Inputs</title>
<para>
<variablelist>
<varlistentry>
<term><option>SESSION</></term>
<listitem>
<para>
Specifies that the command takes effect for the current session.
(This is the default if neither <option>SESSION</> nor
<option>LOCAL</> appears.)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>LOCAL</></term>
<listitem>
<para>
Specifies that the command takes effect for only the current
transaction. After <command>COMMIT</> or <command>ROLLBACK</>,
the session-level setting takes effect again. Note that
<command>SET LOCAL</> will appear to have no effect if it's
executed outside a <command>BEGIN</> block, since the transaction
will end immediately.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER">variable</replaceable></term>
<listitem>
<para>
Name of a settable run-time parameter.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER">value</replaceable></term>
<listitem>
<para>
New value of parameter. <option>DEFAULT</option> can be
used to specify resetting the parameter to its default
value. Lists of strings are allowed, but more complex
constructs may need to be single or double quoted.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
</refsynopsisdiv> </refsynopsisdiv>
<refsect1 id="R1-SQL-SET-1"> <refsect1>
<title>Description</title> <title>Description</title>
<para> <para>
...@@ -83,7 +30,7 @@ SET [ SESSION | LOCAL ] TIME ZONE { <replaceable class="PARAMETER">timezone</rep ...@@ -83,7 +30,7 @@ SET [ SESSION | LOCAL ] TIME ZONE { <replaceable class="PARAMETER">timezone</rep
<xref linkend="runtime-config"> can be changed on-the-fly with <xref linkend="runtime-config"> can be changed on-the-fly with
<command>SET</command>. <command>SET</command>.
(But some require superuser privileges to change, and others cannot (But some require superuser privileges to change, and others cannot
be changed after server or session start.) Note that be changed after server or session start.)
<command>SET</command> only affects the value used by the current <command>SET</command> only affects the value used by the current
session. session.
</para> </para>
...@@ -114,236 +61,153 @@ SET [ SESSION | LOCAL ] TIME ZONE { <replaceable class="PARAMETER">timezone</rep ...@@ -114,236 +61,153 @@ SET [ SESSION | LOCAL ] TIME ZONE { <replaceable class="PARAMETER">timezone</rep
does not start a new transaction block. See the does not start a new transaction block. See the
<varname>autocommit</> section in <xref linkend="runtime-config"> for details. <varname>autocommit</> section in <xref linkend="runtime-config"> for details.
</para> </para>
</refsect1>
<para> <refsect1>
Here are additional details about a few of the parameters that can be set: <title>Parameters</title>
<variablelist>
<varlistentry>
<term><varname>DATESTYLE</></term>
<listitem>
<para>
Choose the date/time representation style. Two separate
settings are involved: the default date/time output format and the
interpretation of ambiguous input.
</para>
<para>
The following are date/time output styles:
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><literal>ISO</></term> <term><literal>SESSION</></term>
<listitem> <listitem>
<para> <para>
Use ISO 8601-style dates and times (<literal>YYYY-MM-DD Specifies that the command takes effect for the current session.
HH:MM:SS</literal>). This is the default. (This is the default if neither <literal>SESSION</> nor
<literal>LOCAL</> appears.)
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><literal>SQL</></term> <term><literal>LOCAL</></term>
<listitem> <listitem>
<para> <para>
Use Oracle/Ingres-style dates and times. Note that this Specifies that the command takes effect for only the current
style has nothing to do with SQL (which mandates ISO 8601 transaction. After <command>COMMIT</> or <command>ROLLBACK</>,
style); the naming of this option is a historical accident. the session-level setting takes effect again. Note that
<command>SET LOCAL</> will appear to have no effect if it is
executed outside a <command>BEGIN</> block, since the
transaction will end immediately.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><literal>PostgreSQL</></term> <term><replaceable class="PARAMETER">variable</replaceable></term>
<listitem> <listitem>
<para> <para>
Use traditional <productname>PostgreSQL</productname> format. Name of a settable run-time parameter. Available parameters are
documented in <xref linkend="runtime-config"> and below.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><literal>German</></term> <term><replaceable class="PARAMETER">value</replaceable></term>
<listitem> <listitem>
<para> <para>
Use <literal>dd.mm.yyyy</literal> for numeric date representations. New value of parameter. Values can be specified as string
constants, identifiers, numbers, or comma-separated lists of
these. <literal>DEFAULT</literal> can be used to specify
resetting the parameter to its default value.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
<para> <para>
The following two options determine both a substyle of the Besides the configuration parameters documented in <xref
<quote>SQL</quote> and <quote>PostgreSQL</quote> output formats linkend="runtime-config">, there are a few that can only be
and the preferred interpretation of ambiguous date input. adjusted using the <command>SET</command> command or that have a
special syntax:
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><literal>European</></term> <term><literal>NAMES</literal></term>
<listitem> <listitem>
<para> <para>
Use <literal>dd/mm/yyyy</literal> for numeric date representations. <literal>>SET NAMES <replaceable>value</></> is an alias for
<literal>SET client_encoding TO <replaceable>value</></>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><literal>NonEuropean</></term> <term><literal>SEED</literal></term>
<term><literal>US</></term>
<listitem> <listitem>
<para> <para>
Use <literal>mm/dd/yyyy</literal> for numeric date representations. Sets the internal seed for the random number generator (the
</para> function <function>random</function>). Allowed values are
</listitem> floating-point numbers between 0 and 1, which are then
</varlistentry> multiplied by 2<superscript>31</>-1.
</variablelist>
</para> </para>
<para> <para>
A value for <command>SET DATESTYLE</command> can be one from The seed can also be set by invoking the function
the first list (output styles), or one from the second list <function>setseed</function>:
(substyles), or one from each separated by a comma. <programlisting>
</para>
<para>
<command>SET DATESTYLE</command> affects interpretation of
input and provides several standard output formats. For
applications needing different variations or tighter control
over input or output, consider using
the <function>to_char</function> family of
functions.
</para>
<para>
There are several now-deprecated means for setting the date style
in addition to the normal methods of setting it via <command>SET</> or
a configuration-file entry:
<simplelist>
<member>
Setting the postmaster's <envar>PGDATESTYLE</envar> environment
variable. (This will be overridden by any of the other methods.)
</member>
<member>
Running postmaster using the option <option>-o -e</option> to
set dates to the <literal>European</literal> convention.
(This overrides environment variables and configuration-file
entries.)
</member>
<member>
Setting the client's <envar>PGDATESTYLE</envar> environment variable.
If <envar>PGDATESTYLE</envar> is set in the frontend environment of a client
based on <application>libpq</>, <application>libpq</> will automatically set <varname>DATESTYLE</> to the
value of <envar>PGDATESTYLE</envar> during connection start-up. This is
equivalent to a manually issued <command>SET DATESTYLE</>.
</member>
</simplelist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>NAMES</term>
<listitem>
<para>
<command>SET NAMES</> is an alias for <command>SET CLIENT_ENCODING</>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>SEED</term>
<listitem>
<para>
Sets the internal seed for the random number generator.
<variablelist>
<varlistentry>
<term><replaceable class="parameter">value</replaceable></term>
<listitem>
<para>
The value for the seed to be used by the
<function>random</function> function. Allowed
values are floating-point numbers between 0 and 1, which
are then multiplied by 2<superscript>31</>-1.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
The seed can also be set by invoking the
<function>setseed</function> SQL function:
<programlisting>
SELECT setseed(<replaceable>value</replaceable>); SELECT setseed(<replaceable>value</replaceable>);
</programlisting> </programlisting>
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>TIME ZONE</term> <term><literal>TIME ZONE</literal></term>
<term>TIMEZONE</term>
<listitem> <listitem>
<para> <para>
Sets the default time zone for your session. Arguments can be <literal>>SET TIME ZONE <replaceable>value</></> is an alias
an SQL time interval constant, an integer or double precision for <literal>SET timezone TO <replaceable>value</></>. The
constant, or a string representing a time zone name recognized syntax <literal>>SET TIME ZONE</literal> allows special syntax
by the host operating system. for the time zone specification. Here are examples of valid
</para> values:
<para>
Here are some typical values for time zone settings:
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term>'PST8PDT'</term> <term><literal>'PST8PDT'</literal></term>
<listitem> <listitem>
<para> <para>
Set the time zone for Berkeley, California. The time zone for Berkeley, California.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>'Portugal'</term> <term><literal>'Portugal'</literal></term>
<listitem> <listitem>
<para> <para>
Set the time zone for Portugal. The time zone for Portugal.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>'Europe/Rome'</term> <term><literal>'Europe/Rome'</literal></term>
<listitem> <listitem>
<para> <para>
Set the time zone for Italy. The time zone for Italy.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>7</term> <term><literal>7</literal></term>
<listitem> <listitem>
<para> <para>
Set the time zone to 7 hours offset west from GMT (equivalent The time zone to 7 hours offset west from UTC (equivalent
to PDT). to PDT).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>INTERVAL '08:00' HOUR TO MINUTE</term> <term><literal>INTERVAL '08:00' HOUR TO MINUTE</literal></term>
<listitem> <listitem>
<para> <para>
Set the time zone to 8 hours offset west from GMT (equivalent The time zone to 8 hours offset west from UTC (equivalent
to PST). to PST).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>LOCAL</term> <term><literal>LOCAL</literal></term>
<term>DEFAULT</term> <term><literal>DEFAULT</literal></term>
<listitem> <listitem>
<para> <para>
Set the time zone to your local time zone (the one that Set the time zone to your local time zone (the one that
...@@ -352,42 +216,18 @@ SELECT setseed(<replaceable>value</replaceable>); ...@@ -352,42 +216,18 @@ SELECT setseed(<replaceable>value</replaceable>);
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
<para>
The available time zone names depend on your operating
system. For example, on Linux
<filename>/usr/share/zoneinfo</filename> contains the database
of time zones; the names of the files in that directory can be
used as parameters to this command.
</para>
<para> See <xref linkend="datatype-datetime"> for more information
If an invalid time zone is specified, the time zone about time zones.
becomes GMT (on most systems anyway).
</para>
<para>
If the <envar>PGTZ</envar> environment variable is set in the frontend
environment of a client based on <application>libpq</>, <application>libpq</> will automatically
<command>SET TIMEZONE</command> to the value of
<envar>PGTZ</envar> during connection start-up.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </para>
<para>
Use <xref linkend="SQL-SHOW" endterm="SQL-SHOW-title"> to show the
current setting of a parameter.
</para>
</refsect1> </refsect1>
<refsect1> <refsect1>
<title>Diagnostics</title> <title>Diagnostics</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
...@@ -400,8 +240,7 @@ SELECT setseed(<replaceable>value</replaceable>); ...@@ -400,8 +240,7 @@ SELECT setseed(<replaceable>value</replaceable>);
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput>ERROR: '<replaceable>name</replaceable>' is not a <term><computeroutput>ERROR: '<replaceable>name</replaceable>' is not a valid option name</computeroutput></term>
valid option name</computeroutput></term>
<listitem> <listitem>
<para> <para>
The parameter you tried to set does not exist. The parameter you tried to set does not exist.
...@@ -410,8 +249,7 @@ SELECT setseed(<replaceable>value</replaceable>); ...@@ -410,8 +249,7 @@ SELECT setseed(<replaceable>value</replaceable>);
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput>ERROR: '<replaceable>name</replaceable>': <term><computeroutput>ERROR: '<replaceable>name</replaceable>': permission denied</computeroutput></term>
permission denied</computeroutput></term>
<listitem> <listitem>
<para> <para>
You must be a superuser to alter certain settings. You must be a superuser to alter certain settings.
...@@ -420,17 +258,14 @@ SELECT setseed(<replaceable>value</replaceable>); ...@@ -420,17 +258,14 @@ SELECT setseed(<replaceable>value</replaceable>);
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><computeroutput>ERROR: '<replaceable>name</replaceable>' cannot <term><computeroutput>ERROR: '<replaceable>name</replaceable>' cannot be changed after server start</computeroutput></term>
be changed after server start</computeroutput></term>
<listitem> <listitem>
<para> <para>
Some parameters are fixed once the server is started. Some parameters are fixed once the server is started.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect1> </refsect1>
<refsect1> <refsect1>
...@@ -438,81 +273,61 @@ SELECT setseed(<replaceable>value</replaceable>); ...@@ -438,81 +273,61 @@ SELECT setseed(<replaceable>value</replaceable>);
<para> <para>
The function <function>set_config</function> provides equivalent The function <function>set_config</function> provides equivalent
capability. See <xref linkend="functions-misc">. functionality. See <xref linkend="functions-misc">.
</para> </para>
</refsect1> </refsect1>
<refsect1> <refsect1>
<title>Examples</title> <title>Examples</title>
<para> <para>
Set the style of date to traditional Set the schema search path:
<productname>PostgreSQL</productname> with European conventions: <programlisting>
<screen> SET search_path TO my_schema, public;
SET DATESTYLE TO PostgreSQL,European; </programlisting>
</screen>
</para> </para>
<para> <para>
Set the time zone for Berkeley, California, using quotes to Set the style of date to traditional
preserve the uppercase spelling of the time zone name (note <productname>POSTGRES</productname> with European conventions:
that the date style is <literal>PostgreSQL</literal> for this <screen>
example): SET datestyle TO postgres,european;
</screen>
<screen>
SET TIME ZONE 'PST8PDT';
SELECT CURRENT_TIMESTAMP AS today;
today
------------------------------------
Tue Feb 26 07:32:21.42834 2002 PST
</screen>
</para> </para>
<para> <para>
Set the time zone for Italy (note the required single quotes to handle Set the time zone for Berkeley, California, using quotes to
the special characters): preserve the uppercase spelling of the time zone name:
<screen>
<screen> SET TIME ZONE 'PST8PDT';
SET TIME ZONE 'Europe/Rome'; SELECT current_timestamp AS today;
SELECT CURRENT_TIMESTAMP AS today;
today today
------------------------------- -------------------------------
2002-10-08 05:39:35.008271+02 2003-04-29 15:02:01.218622-07
</screen> </screen>
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-SET-3"> <refsect1>
<title>Compatibility</title> <title>Compatibility</title>
<refsect2 id="R2-SQL-SET-4">
<title>
SQL92
</title>
<para> <para>
<literal>SET TIME ZONE</literal> <literal>SET TIME ZONE</literal> extends syntax defined in the SQL
extends syntax defined in standard. The standard allows only numeric time zone offsets while
<acronym>SQL9x</acronym>. <acronym>SQL9x</acronym> allows <productname>PostgreSQL</productname> allows more flexible
only numeric time zone offsets while time-zone specifications. All other <literal>SET</literal>
<productname>PostgreSQL</productname> allows full time zone features are <productname>PostgreSQL</productname> extensions.
specifier strings as well. All other <literal>SET</literal>
features are
<productname>PostgreSQL</productname> extensions.
</para> </para>
</refsect2>
</refsect1> </refsect1>
<refsect1> <refsect1>
<title>See Also</title> <title>See Also</title>
<simpara> <simplelist type="inline">
<xref linkend="SQL-SHOW" endterm="SQL-SHOW-title">, <member><xref linkend="SQL-RESET" endterm="SQL-RESET-title"></member>
<xref linkend="SQL-RESET" endterm="SQL-RESET-title">, <member><xref linkend="SQL-SHOW" endterm="SQL-SHOW-title"></member>
<xref linkend="sql-set-constraints" endterm="sql-set-constraints-title">, </simplelist>
<xref linkend="sql-set-session-authorization" endterm="sql-set-session-authorization-title">,
<xref linkend="sql-set-transaction" endterm="sql-set-transaction-title">
</simpara>
</refsect1> </refsect1>
</refentry> </refentry>
......
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/set_constraints.sgml,v 1.5 2002/08/17 12:15:48 momjian Exp $ --> <!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/set_constraints.sgml,v 1.6 2003/05/04 02:23:16 petere Exp $ -->
<refentry id="SQL-SET-CONSTRAINTS"> <refentry id="SQL-SET-CONSTRAINTS">
<refmeta> <refmeta>
<refentrytitle id="SQL-SET-CONSTRAINTS-title">SET CONSTRAINTS</refentrytitle> <refentrytitle id="SQL-SET-CONSTRAINTS-title">SET CONSTRAINTS</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname>SET CONSTRAINTS</refname> <refname>SET CONSTRAINTS</refname>
<refpurpose>set the constraint mode of the current transaction</refpurpose> <refpurpose>set the constraint mode of the current transaction</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<refsynopsisdivinfo> <synopsis>
<date>2000-06-01</date>
</refsynopsisdivinfo>
<synopsis>
SET CONSTRAINTS { ALL | <replaceable class="parameter">constraint</replaceable> [, ...] } { DEFERRED | IMMEDIATE } SET CONSTRAINTS { ALL | <replaceable class="parameter">constraint</replaceable> [, ...] } { DEFERRED | IMMEDIATE }
</synopsis> </synopsis>
</refsynopsisdiv> </refsynopsisdiv>
<refsect1> <refsect1>
...@@ -22,39 +21,26 @@ SET CONSTRAINTS { ALL | <replaceable class="parameter">constraint</replaceable> ...@@ -22,39 +21,26 @@ SET CONSTRAINTS { ALL | <replaceable class="parameter">constraint</replaceable>
<para> <para>
<command>SET CONSTRAINTS</command> sets the behavior of constraint <command>SET CONSTRAINTS</command> sets the behavior of constraint
evaluation in the current transaction. In <option>IMMEDIATE evaluation in the current transaction. In
</option> mode, constraints are checked at the end of each <literal>IMMEDIATE</literal> mode, constraints are checked at the
statement. In <option>DEFERRED</option> mode, constraints are not end of each statement. In <literal>DEFERRED</literal> mode,
checked until transaction commit. constraints are not checked until transaction commit.
</para>
<note>
<para>
This command only alters the behavior of constraints within the
current transaction. Thus, if you execute this command outside
of an explicit transaction block (such as one started with
<command>BEGIN</command>), it will not appear to have any effect.
If you wish to change the behavior of a constraint without needing
to issue a <command>SET CONSTRAINTS</command> command in every
transaction, specify <option>INITIALLY DEFERRED</option> or
<option>INITIALLY IMMEDIATE</option> when you create the constraint.
</para> </para>
</note>
<para> <para>
When you change the mode of a constraint to be <option>IMMEDIATE When you change the mode of a constraint to be
</option>, the new constraint mode takes effect retroactively: <literal>IMMEDIATE</literal>, the new constraint mode takes effect
any outstanding data modifications that would have been checked retroactively: any outstanding data modifications that would have
at the end of the transaction (when using been checked at the end of the transaction (when using
<option>DEFERRED</option>) are instead checked during the <literal>DEFERRED</literal>) are instead checked during the
execution of the <command>SET CONSTRAINTS</command> command. execution of the <command>SET CONSTRAINTS</command> command.
</para> </para>
<para> <para>
Upon creation, a constraint is always give one of three Upon creation, a constraint is always give one of three
characteristics: <option>INITIALLY DEFERRED</option>, characteristics: <literal>INITIALLY DEFERRED</literal>,
<option>INITIALLY IMMEDIATE DEFERRABLE</option>, or <literal>INITIALLY IMMEDIATE DEFERRABLE</literal>, or
<option>INITIALLY IMMEDIATE NOT DEFERRABLE</option>. The third <literal>INITIALLY IMMEDIATE NOT DEFERRABLE</literal>. The third
class is not affected by the <command>SET CONSTRAINTS</command> class is not affected by the <command>SET CONSTRAINTS</command>
command. command.
</para> </para>
...@@ -66,21 +52,30 @@ SET CONSTRAINTS { ALL | <replaceable class="parameter">constraint</replaceable> ...@@ -66,21 +52,30 @@ SET CONSTRAINTS { ALL | <replaceable class="parameter">constraint</replaceable>
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-SET-CONSTRAINT-3"> <refsect1>
<title>Compatibility</title> <title>Notes</title>
<refsect2 id="R2-SQL-SET-CONSTRAINT-4"> <para>
<title>SQL92, SQL99</title> This command only alters the behavior of constraints within the
current transaction. Thus, if you execute this command outside of a
transaction block
(<command>BEGIN</command>/<command>COMMIT</command> pair), it will
not appear to have any effect. If you wish to change the behavior
of a constraint without needing to issue a <command>SET
CONSTRAINTS</command> command in every transaction, specify
<literal>INITIALLY DEFERRED</literal> or <literal>INITIALLY
IMMEDIATE</literal> when you create the constraint.
</para>
</refsect1>
<refsect1>
<title>Compatibility</title>
<para> <para>
<command>SET CONSTRAINTS</command> is defined in This command complies with the behavior defined in the SQL
<acronym>SQL92</acronym> and <acronym>SQL99</acronym>. The standard, except for the limitation that, in PostgreSQL, it only
implementation in <productname>PostgreSQL</productname> complies applies to foreign-key constraints.
with the behavior defined in the standard, except for the
<productname>PostgreSQL</productname> limitation that <command>SET
CONSTRAINTS</command> cannot be applied to check or unique constraints.
</para> </para>
</refsect2>
</refsect1> </refsect1>
</refentry> </refentry>
......
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/set_session_auth.sgml,v 1.8 2003/02/19 04:06:28 momjian Exp $ --> <!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/set_session_auth.sgml,v 1.9 2003/05/04 02:23:16 petere Exp $ -->
<refentry id="SQL-SET-SESSION-AUTHORIZATION"> <refentry id="SQL-SET-SESSION-AUTHORIZATION">
<docinfo>
<date>2001-04-21</date>
</docinfo>
<refmeta> <refmeta>
<refentrytitle id="sql-set-session-authorization-title">SET SESSION AUTHORIZATION</refentrytitle> <refentrytitle id="sql-set-session-authorization-title">SET SESSION AUTHORIZATION</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
...@@ -16,7 +12,7 @@ ...@@ -16,7 +12,7 @@
<refsynopsisdiv> <refsynopsisdiv>
<synopsis> <synopsis>
SET [ SESSION | LOCAL ] SESSION AUTHORIZATION <replaceable class="PARAMETER">username</replaceable> SET [ SESSION | LOCAL ] SESSION AUTHORIZATION <replaceable class="parameter">username</replaceable>
SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT
RESET SESSION AUTHORIZATION RESET SESSION AUTHORIZATION
</synopsis> </synopsis>
...@@ -28,11 +24,10 @@ RESET SESSION AUTHORIZATION ...@@ -28,11 +24,10 @@ RESET SESSION AUTHORIZATION
<para> <para>
This command sets the session user identifier and the current user This command sets the session user identifier and the current user
identifier of the current SQL-session context to be <replaceable identifier of the current SQL-session context to be <replaceable
class="PARAMETER">username</replaceable>. The user name may be class="parameter">username</replaceable>. The user name may be
written as either an identifier or a string literal. The session written as either an identifier or a string literal. Using this
user identifier is valid for the duration of a connection; for command, it is possible, for example, to temporarily become an
example, it is possible to temporarily become an unprivileged user unprivileged user and later switch back to become a superuser.
and later switch back to become a superuser.
</para> </para>
<para> <para>
...@@ -52,7 +47,7 @@ RESET SESSION AUTHORIZATION ...@@ -52,7 +47,7 @@ RESET SESSION AUTHORIZATION
</para> </para>
<para> <para>
The <option>SESSION</> and <option>LOCAL</> modifiers act the same The <literal>SESSION</> and <literal>LOCAL</> modifiers act the same
as for the regular <xref linkend="SQL-SET" endterm="SQL-SET-title"> as for the regular <xref linkend="SQL-SET" endterm="SQL-SET-title">
command. command.
</para> </para>
...@@ -60,9 +55,8 @@ RESET SESSION AUTHORIZATION ...@@ -60,9 +55,8 @@ RESET SESSION AUTHORIZATION
<para> <para>
The <literal>DEFAULT</> and <literal>RESET</> forms reset the session The <literal>DEFAULT</> and <literal>RESET</> forms reset the session
and current user identifiers to be the originally authenticated user and current user identifiers to be the originally authenticated user
name. These forms are always accepted. name. These forms may be executed by any user.
</para> </para>
</refsect1> </refsect1>
<refsect1> <refsect1>
...@@ -88,18 +82,16 @@ SELECT SESSION_USER, CURRENT_USER; ...@@ -88,18 +82,16 @@ SELECT SESSION_USER, CURRENT_USER;
<refsect1> <refsect1>
<title>Compatibility</title> <title>Compatibility</title>
<simpara>SQL99</simpara>
<para> <para>
SQL99 allows some other expressions to appear in place of the The SQL standard allows some other expressions to appear in place
literal <parameter>username</parameter> which are not important in of the literal <replaceable>username</replaceable> which are not
practice. <application>PostgreSQL</application> allows identifier important in practice. <application>PostgreSQL</application>
syntax (<literal>"username"</literal>), which SQL does not. SQL allows identifier syntax (<literal>"username"</literal>), which SQL
does not allow this command during a transaction; does not. SQL does not allow this command during a transaction;
<application>PostgreSQL</application> does not make <application>PostgreSQL</application> does not make this
this restriction because there is no reason to. The restriction because there is no reason to. The privileges
privileges necessary to execute this command are left necessary to execute this command are left implementation-defined
implementation-defined by the standard. by the standard.
</para> </para>
</refsect1> </refsect1>
</refentry> </refentry>
......
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/set_transaction.sgml,v 1.13 2003/03/25 16:15:44 petere Exp $ --> <!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/set_transaction.sgml,v 1.14 2003/05/04 02:23:16 petere Exp $ -->
<refentry id="SQL-SET-TRANSACTION"> <refentry id="SQL-SET-TRANSACTION">
<docinfo>
<date>2000-11-24</date>
</docinfo>
<refmeta> <refmeta>
<refentrytitle id="SQL-SET-TRANSACTION-TITLE">SET TRANSACTION</refentrytitle> <refentrytitle id="SQL-SET-TRANSACTION-TITLE">SET TRANSACTION</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
...@@ -15,12 +11,12 @@ ...@@ -15,12 +11,12 @@
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<synopsis> <synopsis>
SET TRANSACTION SET TRANSACTION
[ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ] [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ]
SET SESSION CHARACTERISTICS AS TRANSACTION SET SESSION CHARACTERISTICS AS TRANSACTION
[ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ] [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ]
</synopsis> </synopsis>
</refsynopsisdiv> </refsynopsisdiv>
<refsect1> <refsect1>
...@@ -28,8 +24,8 @@ SET SESSION CHARACTERISTICS AS TRANSACTION ...@@ -28,8 +24,8 @@ SET SESSION CHARACTERISTICS AS TRANSACTION
<para> <para>
The <command>SET TRANSACTION</command> command sets the transaction The <command>SET TRANSACTION</command> command sets the transaction
characteristics of the current SQL-transaction. It has no effect on characteristics of the current transaction. It has no effect on any
any subsequent transactions. <command>SET SESSION subsequent transactions. <command>SET SESSION
CHARACTERISTICS</command> sets the default transaction CHARACTERISTICS</command> sets the default transaction
characteristics for each transaction of a session. <command>SET characteristics for each transaction of a session. <command>SET
TRANSACTION</command> can override it for an individual TRANSACTION</command> can override it for an individual
...@@ -80,7 +76,9 @@ SET SESSION CHARACTERISTICS AS TRANSACTION ...@@ -80,7 +76,9 @@ SET SESSION CHARACTERISTICS AS TRANSACTION
or data-modification statement (<command>SELECT</command>, or data-modification statement (<command>SELECT</command>,
<command>INSERT</command>, <command>DELETE</command>, <command>INSERT</command>, <command>DELETE</command>,
<command>UPDATE</command>, <command>FETCH</command>, <command>UPDATE</command>, <command>FETCH</command>,
<command>COPY</command>) of a transaction has been executed. <command>COPY</command>) of a transaction has been executed. See
<xref linkend="mvcc"> for more information about transaction
isolation and concurrency control.
</para> </para>
<para> <para>
...@@ -117,25 +115,23 @@ SET default_transaction_isolation = '<replaceable>value</replaceable>' ...@@ -117,25 +115,23 @@ SET default_transaction_isolation = '<replaceable>value</replaceable>'
<refsect1 id="R1-SQL-SET-TRANSACTION-3"> <refsect1 id="R1-SQL-SET-TRANSACTION-3">
<title>Compatibility</title> <title>Compatibility</title>
<refsect2 id="R2-SQL-SET-TRANSACTION-4">
<title>SQL92, SQL99</title>
<para> <para>
<option>SERIALIZABLE</option> is the default transaction isolation level in Both commands are defined in the SQL standard.
<acronym>SQL</acronym>. <productname>PostgreSQL</productname> does <literal>SERIALIZABLE</literal> is the default transaction
not provide the isolation levels <option>READ UNCOMMITTED</option> isolation level in <acronym>SQL</acronym>; in PostgreSQL it is
and <option>REPEATABLE READ</option>. Because of multiversion <literal>READ COMMITED</literal>, but you can change it as
concurrency control, the <option>SERIALIZABLE</option> level is not described above. <productname>PostgreSQL</productname> does not
truly serializable. See <xref linkend="mvcc"> for details. provide the isolation levels <literal>READ UNCOMMITTED</literal>
and <literal>REPEATABLE READ</literal>. Because of multiversion
concurrency control, the <literal>SERIALIZABLE</literal> level is
not truly serializable. See <xref linkend="mvcc"> for details.
</para> </para>
<para> <para>
In <acronym>SQL</acronym> there is one other transaction In the SQL standard, there is one other transaction characteristic
characteristic that can be set with these commands: the size of that can be set with these commands: the size of the diagnostics
the diagnostics area. This concept is not supported in area. This concept is only for use in embedded SQL.
<productname>PostgreSQL</productname>.
</para> </para>
</refsect2>
</refsect1> </refsect1>
</refentry> </refentry>
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/show.sgml,v 1.25 2003/04/25 19:45:08 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/show.sgml,v 1.26 2003/05/04 02:23:16 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8,58 +8,34 @@ PostgreSQL documentation ...@@ -8,58 +8,34 @@ PostgreSQL documentation
<refentrytitle id="SQL-SHOW-TITLE">SHOW</refentrytitle> <refentrytitle id="SQL-SHOW-TITLE">SHOW</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo> <refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta> </refmeta>
<refnamediv> <refnamediv>
<refname>SHOW</refname> <refname>SHOW</refname>
<refpurpose>show the value of a run-time parameter</refpurpose> <refpurpose>show the value of a run-time parameter</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<synopsis> <synopsis>
SHOW <replaceable class="PARAMETER">name</replaceable> SHOW <replaceable class="PARAMETER">name</replaceable>
</synopsis> </synopsis>
<synopsis> <synopsis>
SHOW ALL SHOW ALL
</synopsis> </synopsis>
<refsect2 id="R2-SQL-SHOW-1">
<title>Inputs</title>
<para>
<variablelist>
<varlistentry>
<term><replaceable class="PARAMETER">name</replaceable></term>
<listitem>
<para>
The name of a run-time parameter. See
<xref linkend="sql-set" endterm="sql-set-title">
for a list.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ALL</term>
<listitem>
<para>
Show all current session parameters.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
</refsynopsisdiv> </refsynopsisdiv>
<refsect1 id="R1-SQL-SHOW-1"> <refsect1>
<title>Description</title> <title>Description</title>
<para> <para>
<command>SHOW</command> will display the current setting of <command>SHOW</command> will display the current setting of
run-time parameters. These variables can be set using the run-time parameters. These variables can be set using the
<command>SET</command> statement, by editing the <command>SET</command> statement, by editing the
<filename>postgresql.conf</filename> configuration file, through the <filename>postgresql.conf</filename> configuration file, through
<envar>PGOPTIONS</envar> environmental variable (when using libpq the <envar>PGOPTIONS</envar> environmental variable (when using
or a libpq-based application), or through <application>libpq</> or a <application>libpq</>-based
command-line flags when starting the application), or through command-line flags when starting the
<application>postmaster</application>. <command>postmaster</command>. See <xref
linkend="runtime-config"> for details.
</para> </para>
<para> <para>
...@@ -67,17 +43,25 @@ SHOW ALL ...@@ -67,17 +43,25 @@ SHOW ALL
does not start a new transaction block. See the does not start a new transaction block. See the
<varname>autocommit</> section in <xref linkend="runtime-config"> for details. <varname>autocommit</> section in <xref linkend="runtime-config"> for details.
</para> </para>
</refsect1>
<para> <refsect1>
Available parameters are documented in <title>Parameters</title>
<xref linkend="runtime-config"> and on the
<xref linkend="SQL-SET" endterm="SQL-SET-title"> reference page.
In addition, there are a few parameters that can be shown but not set:
<variablelist> <variablelist>
<varlistentry>
<term><replaceable class="PARAMETER">name</replaceable></term>
<listitem>
<para>
The name of a run-time parameter. Available parameters are
documented in <xref linkend="runtime-config"> and on the <xref
linkend="SQL-SET" endterm="SQL-SET-title"> reference page. In
addition, there are a few parameters that can be shown but not
set:
<variablelist>
<varlistentry> <varlistentry>
<term>SERVER_VERSION</term> <term><literal>SERVER_VERSION</literal></term>
<listitem> <listitem>
<para> <para>
Shows the server's version number. Shows the server's version number.
...@@ -86,64 +70,69 @@ SHOW ALL ...@@ -86,64 +70,69 @@ SHOW ALL
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>SERVER_ENCODING</term> <term><literal>SERVER_ENCODING</literal></term>
<listitem> <listitem>
<para> <para>
Shows the server-side multibyte encoding. At present, this Shows the server-side character set encoding. At present,
parameter can be shown but not set, because the encoding is this parameter can be shown but not set, because the
determined at database creation time. encoding is determined at database creation time.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>LC_COLLATE</term> <term><literal>LC_COLLATE</literal></term>
<listitem> <listitem>
<para> <para>
Shows the database's locale setting for collation (text ordering). Shows the database's locale setting for collation (text
At present, this parameter can be shown but not set, because the ordering). At present, this parameter can be shown but not
setting is determined at <application>initdb</> time. set, because the setting is determined at
<command>initdb</> time.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>LC_CTYPE</term> <term><literal>LC_CTYPE</literal></term>
<listitem> <listitem>
<para> <para>
Shows the database's locale setting for character set considerations. Shows the database's locale setting for character
At present, this parameter can be shown but not set, because the classification. At present, this parameter can be shown but
setting is determined at <application>initdb</> time. not set, because the setting is determined at
<command>initdb</> time.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>ALL</literal></term>
<listitem>
<para> <para>
Use <xref linkend="SQL-SET" endterm="SQL-SET-title"> to set the value Show the values of all configurations parameters.
of settable parameters.
</para> </para>
</listitem>
</varlistentry>
</variablelist>
</refsect1> </refsect1>
<refsect1> <refsect1>
<title>Diagnostics</title> <title>Diagnostics</title>
<para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><computeroutput>ERROR: Option '<replaceable>name</replaceable>' <term><computeroutput>ERROR: Option '<replaceable>name</replaceable>' is not recognized</computeroutput></term>
is not recognized</computeroutput></term>
<listitem> <listitem>
<para> <para>
Message returned if <replaceable>name</replaceable> does Message returned if <replaceable>name</replaceable> does not
not stand for a known parameter. stand for a known parameter.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</refsect1> </refsect1>
<refsect1> <refsect1>
...@@ -155,10 +144,11 @@ SHOW ALL ...@@ -155,10 +144,11 @@ SHOW ALL
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-SHOW-2"> <refsect1>
<title>Examples</title> <title>Examples</title>
<para> <para>
Show the current <varname>DateStyle</varname> setting: Show the current setting of the parameter <varname>DateStyle</varname>:
<programlisting> <programlisting>
SHOW DateStyle; SHOW DateStyle;
...@@ -170,10 +160,9 @@ SHOW DateStyle; ...@@ -170,10 +160,9 @@ SHOW DateStyle;
</para> </para>
<para> <para>
Show whether the genetic query optimizer is enabled by displaying Show the current setting of the parameter <varname>geqo</varname>:
the <varname>geqo</varname> setting:
<programlisting> <programlisting>
SHOW GEQO; SHOW geqo;
geqo geqo
------ ------
on on
...@@ -198,10 +187,9 @@ SHOW ALL; ...@@ -198,10 +187,9 @@ SHOW ALL;
(94 rows) (94 rows)
</programlisting> </programlisting>
</para> </para>
</refsect1> </refsect1>
<refsect1 id="R1-SQL-SHOW-3"> <refsect1>
<title>Compatibility</title> <title>Compatibility</title>
<para> <para>
...@@ -209,6 +197,15 @@ SHOW ALL; ...@@ -209,6 +197,15 @@ SHOW ALL;
<productname>PostgreSQL</productname> extension. <productname>PostgreSQL</productname> extension.
</para> </para>
</refsect1> </refsect1>
<refsect1>
<title>See Also</title>
<simplelist type="inline">
<member><xref linkend="SQL-SET" endterm="SQL-SET-title"></member>
</simplelist>
</refsect1>
</refentry> </refentry>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.177 2003/04/04 03:03:53 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.178 2003/05/04 02:23:16 petere Exp $
--> -->
<Chapter Id="runtime"> <Chapter Id="runtime">
...@@ -1384,9 +1384,10 @@ SET ENABLE_SEQSCAN TO OFF; ...@@ -1384,9 +1384,10 @@ SET ENABLE_SEQSCAN TO OFF;
<indexterm><primary>date style</></> <indexterm><primary>date style</></>
<listitem> <listitem>
<para> <para>
Sets the display format for date and time values, as well as the rules for Sets the display format for date and time values, as well as
interpreting ambiguous date input values. the rules for interpreting ambiguous date input values. See
The default is <literal>ISO, US</>. <xref linkend="datatype-datetime"> for more information. The
default is <literal>ISO, US</>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -1556,7 +1557,7 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' ...@@ -1556,7 +1557,7 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
<para> <para>
This parameter adjusts the number of digits displayed for This parameter adjusts the number of digits displayed for
floating-point values, including <type>float4</>, <type>float8</>, floating-point values, including <type>float4</>, <type>float8</>,
and geometric datatypes. The parameter value is added to the and geometric data types. The parameter value is added to the
standard number of digits (<literal>FLT_DIG</> or <literal>DBL_DIG</> standard number of digits (<literal>FLT_DIG</> or <literal>DBL_DIG</>
as appropriate). The value can be set as high as 2, to include as appropriate). The value can be set as high as 2, to include
partially-significant digits; this is especially useful for dumping partially-significant digits; this is especially useful for dumping
...@@ -1813,26 +1814,28 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' ...@@ -1813,26 +1814,28 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
<indexterm><primary>preload_libraries</></> <indexterm><primary>preload_libraries</></>
<listitem> <listitem>
<para> <para>
This variable specifies one or more shared libraries that are to be This variable specifies one or more shared libraries that are
preloaded at Postmaster start. An initialization function can also be to be preloaded at server start. An initialization function
optionally specified by adding a colon followed by the name of the can also be optionally specified by adding a colon followed by
initialization function after the library name. For example the name of the initialization function after the library
<literal>'$libdir/mylib:init_mylib'</literal> would cause <literal>mylib</> name. For example
to be preloaded and <literal>init_mylib</> to be executed. If more than <literal>'$libdir/mylib:init_mylib'</literal> would cause
one library is to be loaded, they must be delimited with a comma. <literal>mylib</> to be preloaded and <literal>init_mylib</>
to be executed. If more than one library is to be loaded, they
must be delimited with a comma.
</para> </para>
<para> <para>
If <literal>mylib</> is not found, the postmaster will fail to start. If <literal>mylib</> is not found, the server will fail to
However, if <literal>init_mylib</> is not found, <literal>mylib</> will start. However, if <literal>init_mylib</> is not found,
still be preloaded without executing the initialization function. <literal>mylib</> will still be preloaded without executing
the initialization function.
</para> </para>
<para> <para>
By preloading a shared library (and initializing it if applicable), By preloading a shared library (and initializing it if
the library startup time is avoided when the library is used later in a applicable), the library startup time is avoided when the
specific backend. However there is a cost in terms of memory duplication library is first used.
as every backend is forked, whether or not the library is used.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -2057,9 +2060,10 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' ...@@ -2057,9 +2060,10 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
<indexterm><primary>time zone</></> <indexterm><primary>time zone</></>
<listitem> <listitem>
<para> <para>
Sets the time zone for displaying and interpreting time stamps. Sets the time zone for displaying and interpreting time
The default is to use whatever the system environment stamps. The default is to use whatever the system environment
specifies as the time zone. specifies as the time zone. See <xref
linkend="datatype-datetime"> for more information.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment