diff --git a/doc/src/sgml/ref/declare.sgml b/doc/src/sgml/ref/declare.sgml index 49d380e238b1c30583a5c75f7c0ca19d13349111..0aaf0dde43d0038f43fb5df75e011c872ca7e597 100644 --- a/doc/src/sgml/ref/declare.sgml +++ b/doc/src/sgml/ref/declare.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,222 +8,23 @@ PostgreSQL documentation <refentrytitle id="SQL-DECLARE-TITLE">DECLARE</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DECLARE - </refname> - <refpurpose> - define a cursor - </refpurpose> + <refname>DECLARE</refname> + <refpurpose>define a cursor</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1999-07-20</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DECLARE <replaceable class="parameter">cursorname</replaceable> [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ] CURSOR [ { WITH | WITHOUT } HOLD ] FOR <replaceable class="parameter">query</replaceable> - [ FOR { READ ONLY | UPDATE [ OF <replaceable class="parameter">column</replaceable> [, ...] ] ] - </synopsis> - <refsect2 id="R2-SQL-DECLARE-1"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - Inputs - </title> - <para> - <variablelist> - <varlistentry> - <term><replaceable class="parameter">cursorname</replaceable></term> - <listitem> - <para> - The name of the cursor to be used in subsequent - <command>FETCH</command> operations. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>BINARY</term> - <listitem> - <para> - Causes the cursor to return data in binary rather than in text format. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>INSENSITIVE</term> - <listitem> - <para> - <acronym>SQL92</acronym> keyword indicating that data retrieved - from the cursor should be unaffected by updates from other - processes or cursors. By default, all cursors are insensitive. - This keyword currently has no effect and is present for - compatibility with the SQL standard. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>NO SCROLL</term> - <listitem> - <para> - Specifies that the cursor cannot be used to retrieve rows in a - nonsequential fashion (e.g., backward). - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>SCROLL</term> - <listitem> - <para> - Specifies that the cursor may be used 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. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>WITHOUT HOLD</term> - <listitem> - <para> - Specifies 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> - </listitem> - </varlistentry> - - <varlistentry> - <term>WITH HOLD</term> - <listitem> - <para> - Specifies that the cursor may continue to be used after the - transaction that creates it successfully commits. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable class="parameter">query</replaceable></term> - <listitem> - <para> - A <command>SELECT</> query which will provide the rows to be - returned by the cursor. - Refer to <xref linkend="sql-select" endterm="sql-select-title"> - for further information about valid arguments. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>READ ONLY</term> - <listitem> - <para> - <acronym>SQL92</acronym> keyword indicating that the cursor will be used - in a read only mode. Since this is the only cursor access mode - available in <productname>PostgreSQL</productname> this keyword has no effect. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>UPDATE</term> - <listitem> - <para> - <acronym>SQL92</acronym> keyword indicating that the cursor will be used - to update tables. Since cursor updates are not currently - supported in <productname>PostgreSQL</productname> this keyword - provokes an informational error message. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable class="parameter">column</replaceable></term> - <listitem> - <para> - Column(s) to be updated. - Since cursor updates are not currently - supported in <productname>PostgreSQL</productname> the UPDATE clause - provokes an informational error message. - </para> - </listitem> - </varlistentry> - - </variablelist> - </para> - - <para> - The <literal>BINARY</literal>, <literal>INSENSITIVE</literal>, - and <literal>SCROLL</literal> keywords may appear in any order. - </para> - </refsect2> - - <refsect2 id="R2-SQL-DECLARE-2"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - Outputs - </title> - <para> - - <variablelist> - <varlistentry> - <term><computeroutput> -DECLARE CURSOR - </computeroutput></term> - <listitem> - <para> - The message returned if the <command>SELECT</command> is run successfully. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><computeroutput> -WARNING: Closing pre-existing portal "<replaceable class="parameter">cursorname</replaceable>" - </computeroutput></term> - <listitem> - <para> - This message is reported if a cursor with the same name already - exists. The previous definition is discarded. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><computeroutput> -ERROR: DECLARE CURSOR may only be used in begin/end transaction blocks - </computeroutput></term> - <listitem> - <para> - This error occurs if the cursor is not declared within a - transaction block, and <literal>WITH HOLD</literal> is not - specified. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> + [ FOR { READ ONLY | UPDATE [ OF <replaceable class="parameter">column</replaceable> [, ...] ] } ] +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-DECLARE-1"> - <refsect1info> - <date>1998-09-04</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <title>Description</title> + <para> <command>DECLARE</command> allows a user to create cursors, which can be used to retrieve @@ -236,51 +37,195 @@ ERROR: DECLARE CURSOR may only be used in begin/end transaction blocks 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. + 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> 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>). + a 4-byte value containing the internal representation of the value. </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. + Binary cursors should be used carefully. Many applications, + including <application>psql</application>, are not prepared to + handle binary cursors and expect data to come back in the text + format. </para> <para> - String representation is architecture-neutral whereas binary + 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. - - <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> + 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> + <term><replaceable class="parameter">cursorname</replaceable></term> + <listitem> + <para> + The name of the cursor to be used in subsequent + <command>FETCH</command> operations. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>BINARY</literal></term> + <listitem> + <para> + Causes the cursor to return data in binary rather than in text format. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>INSENSITIVE</literal></term> + <listitem> + <para> + Indicates that data retrieved from the cursor should be + unaffected by updates to the tables underlying the cursor while + the cursor exists. In PostgreSQL, all cursors are insensitive; + this key word currently has no effect and is present for + compatibility with the SQL standard. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>SCROLL</literal></term> + <term><literal>NO SCROLL</literal></term> + <listitem> + <para> + <literal>SCROLL</literal> specifies that the cursor may be used + 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> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>WITH HOLD</literal></term> + <term><literal>WITHOUT HOLD</literal></term> + <listitem> + <para> + <literal>WITH HOLD</literal> specifies that the cursor may + continue to be used after the transaction that created it + successfully commits. <literal>WITHOUT HOLD</literal> specifies + 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> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="parameter">query</replaceable></term> + <listitem> + <para> + A <command>SELECT</> command that will provide the rows to be + returned by the cursor. Refer to <xref linkend="sql-select" + endterm="sql-select-title"> for further information about valid + queries. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>FOR READ ONLY</literal></term> + <term><literal>FOR UPDATE</literal></term> + <listitem> + <para> + <literal>FOR READ ONLY</literal> indicates that the cursor will + be used in a read-only mode. <literal>FOR UPDATE</literal> + indicates that the cursor will be used to update tables. Since + 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> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="parameter">column</replaceable></term> + <listitem> + <para> + Column(s) to be updated by the cursor. Since cursor updates are + not currently supported in + <productname>PostgreSQL</productname>, the <literal>FOR + UPDATE</literal> clause provokes an error message. + </para> + </listitem> + </varlistentry> + </variablelist> + + <para> + The key words <literal>BINARY</literal>, + <literal>INSENSITIVE</literal>, and <literal>SCROLL</literal> may + appear in any order. </para> + </refsect1> - <refsect2 id="R2-SQL-DECLARE-3"> - <refsect2info> - <date>1998-09-04</date> - </refsect2info> - <title> - Notes - </title> + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DECLARE CURSOR</computeroutput></term> + <listitem> + <para> + The message returned if the cursor was successfully defined. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>WARNING: Closing pre-existing portal "<replaceable class="parameter">cursorname</replaceable>"</computeroutput></term> + <listitem> + <para> + This message is reported if a cursor with the same name already + exists. The previous definition is discarded. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>ERROR: DECLARE CURSOR may only be used in begin/end transaction blocks</computeroutput></term> + <listitem> + <para> + This error occurs if the cursor is not declared within a + transaction block, and <literal>WITH HOLD</literal> is not + specified. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Notes</title> <para> 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 <para> If <literal>WITH HOLD</literal> is specified and the transaction - that created the cursor successfully commits, the cursor can be - continue to be accessed by subsequent transactions in the same session. - (But if the creating - transaction is aborted, the cursor is removed.) A cursor created - with <literal>WITH HOLD</literal> is closed when an explicit - <command>CLOSE</command> command is issued on it, or when the client - connection is terminated. In the current implementation, the rows - represented by a held cursor are copied into a temporary file or - memory area so that they remain available for subsequent transactions. + that created the cursor successfully commits, the cursor can + continue to be accessed by subsequent transactions in the same + session. (But if the creating transaction is aborted, the cursor + is removed.) A cursor created with <literal>WITH HOLD</literal> + is closed when an explicit <command>CLOSE</command> command is + issued on it, or the session ends. In the current implementation, + the rows represented by a held cursor are copied into a temporary + file or memory area so that they remain available for subsequent + transactions. </para> <para> The <literal>SCROLL</> option should be specified when defining a 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 backward fetches without <literal>SCROLL</>, if the cursor's query plan is simple enough that no extra overhead is needed to support it. However, application developers are advised not to rely on using backward fetches from a cursor that has not been created - with <literal>SCROLL</literal>. If <literal>NO SCROLL</> is specified, - then backward fetches are disallowed in any case. + with <literal>SCROLL</literal>. If <literal>NO SCROLL</> is + specified, then backward fetches are disallowed in any case. </para> <para> - In <acronym>SQL92</acronym> cursors are only available in - embedded <acronym>SQL</acronym> (<acronym>ESQL</acronym>) applications. - The <productname>PostgreSQL</productname> backend - does not implement an explicit <command>OPEN cursor</command> - statement; a cursor is considered to be open when it is declared. - However, <application>ecpg</application>, the - embedded SQL preprocessor for <productname>PostgreSQL</productname>, - supports the <acronym>SQL92</acronym> cursor conventions, including those - involving <command>DECLARE</command> and <command>OPEN</command> statements. + The SQL standard only makes provisions for cursors in embedded + <acronym>SQL</acronym>. The <productname>PostgreSQL</productname> + server does not implement an <command>OPEN</command> statement for + cursors; a cursor is considered to be open when it is declared. + However, <application>ECPG</application>, the embedded SQL + preprocessor for <productname>PostgreSQL</productname>, supports + the standard SQL cursor conventions, including those involving + <command>DECLARE</command> and <command>OPEN</command> statements. </para> - </refsect2> </refsect1> - <refsect1 id="R1-SQL-DECLARESTATEMENT-2"> - <title> - Usage - </title> + <refsect1> + <title>Examples</title> + <para> To declare a cursor: - - <programlisting> -DECLARE liahona CURSOR - FOR SELECT * FROM films; - </programlisting> +<programlisting> +DECLARE liahona CURSOR FOR SELECT * FROM films; +</programlisting> + See <xref linkend="sql-fetch" endterm="sql-fetch-title"> for more + examples of cursor usage. </para> </refsect1> - <refsect1 id="R1-SQL-DECLARESTATEMENT-3"> - <title> - Compatibility - </title> - - <refsect2 id="R2-SQL-DECLARESTATEMENT-4"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - SQL92 - </title> - <para> - <acronym>SQL92</acronym> allows cursors only in embedded - <acronym>SQL</acronym> and in modules. <productname>PostgreSQL</> - permits cursors to be used interactively. - </para> + <refsect1> + <title>Compatibility</title> - <para> - <acronym>SQL92</acronym> allows embedded or modular cursors to - update database information. All <productname>PostgreSQL</> - cursors are read only. - </para> + <para> + The SQL standard allows cursors only in embedded + <acronym>SQL</acronym> and in modules. <productname>PostgreSQL</> + permits cursors to be used interactively. + </para> - <para> - The <literal>BINARY</literal> keyword is a - <productname>PostgreSQL</productname> extension. - </para> - </refsect2> + <para> + The SQL standard allows cursors to update table data. All + <productname>PostgreSQL</> cursors are read only. + </para> + + <para> + Binary cursors are a <productname>PostgreSQL</productname> + extension. + </para> </refsect1> </refentry> diff --git a/doc/src/sgml/ref/drop_aggregate.sgml b/doc/src/sgml/ref/drop_aggregate.sgml index b671fa5c14576d5952398d61d0d6803739700bcf..539d578653a862178c9f769292d8c160552cbc8a 100644 --- a/doc/src/sgml/ref/drop_aggregate.sgml +++ b/doc/src/sgml/ref/drop_aggregate.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,167 +8,126 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPAGGREGATE-TITLE">DROP AGGREGATE</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP AGGREGATE - </refname> - <refpurpose> - remove a user-defined aggregate function - </refpurpose> + <refname>DROP AGGREGATE</refname> + <refpurpose>remove a user-defined aggregate function</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1999-07-20</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DROP AGGREGATE <replaceable class="PARAMETER">name</replaceable> ( <replaceable class="PARAMETER">type</replaceable> ) [ CASCADE | RESTRICT ] - </synopsis> - - <refsect2 id="R2-SQL-DROPAGGREGATE-1"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - Inputs - </title> - <para> - <variablelist> - <varlistentry> - <term><replaceable class="parameter">name</replaceable></term> - <listitem> - <para> - The name (optionally schema-qualified) of an existing aggregate function. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><replaceable class="parameter">type</replaceable></term> - <listitem> - <para> - The input data type of the aggregate function, - or <literal>*</literal> if the function accepts any input type. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>CASCADE</term> - <listitem> - <para> - Automatically drop objects that depend on the aggregate. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>RESTRICT</term> - <listitem> - <para> - Refuse to drop the aggregate if there are any dependent objects. - This is the default. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPAGGREGATE-2"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - Outputs - </title> - <para> - <variablelist> - <varlistentry> - <term><computeroutput> -DROP AGGREGATE - </computeroutput></term> - <listitem> - <para> - Message returned if the command is successful. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -ERROR: RemoveAggregate: aggregate '<replaceable class="parameter">name</replaceable>' for type <replaceable class="parameter">type</replaceable> does not exist - </computeroutput></term> - <listitem> - <para> - This message occurs if the aggregate function specified does not - exist in the database. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-DROPAGGREGATE-1"> - <refsect1info> - <date>1998-04-15</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <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. + aggregate function. To execute this command the current + user must be the owner of the aggregate function. </para> + </refsect1> + + <refsect1> + <title>Parameters</title> + + <variablelist> + <varlistentry> + <term><replaceable class="parameter">name</replaceable></term> + <listitem> + <para> + The name (optionally schema-qualified) of an existing aggregate function. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="parameter">type</replaceable></term> + <listitem> + <para> + The argument data type of the aggregate function, or + <literal>*</literal> if the function accepts any data type. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>CASCADE</literal></term> + <listitem> + <para> + Automatically drop objects that depend on the aggregate function. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RESTRICT</literal></term> + <listitem> + <para> + Refuse to drop the aggregate function if any objects depend on + it. This is the default. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> - <refsect2 id="R2-SQL-DROPAGGREGATE-3"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - Notes - </title> - - <para> - Use - <xref linkend="sql-createaggregate" endterm="sql-createaggregate-title"> - to create aggregate functions. - </para> - </refsect2> + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DROP AGGREGATE</computeroutput></term> + <listitem> + <para> + Message returned if the command was successful. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>ERROR: RemoveAggregate: aggregate '<replaceable class="parameter">name</replaceable>' for type <replaceable class="parameter">type</replaceable> does not exist</computeroutput></term> + <listitem> + <para> + This message is returned if the specified aggregate function + does not exist. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Examples</title> + + <para> + To remove the aggregate function <literal>myavg</literal> for type + <type>integer</type>: +<programlisting> +DROP AGGREGATE myavg(integer); +</programlisting> + </para> </refsect1> - <refsect1 id="R1-SQL-DROPAGGREGATE-2"> - <title> - Usage - </title> + <refsect1> + <title>Compatibility</title> + <para> - To remove the <literal>myavg</literal> aggregate for type - <literal>int4</literal>: + There is no <command>DROP AGGREGATE</command> statement in the SQL + standard. </para> - <programlisting> -DROP AGGREGATE myavg(int4); - </programlisting> </refsect1> - <refsect1 id="R1-SQL-DROPAGGREGATE-3"> - <title> - Compatibility - </title> - - <refsect2 id="R2-SQL-DROPAGGREGATE-4"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - SQL92 - </title> - - <para> - There is no <command>DROP AGGREGATE</command> statement - in <acronym>SQL92</acronym>; the statement is a - <productname>PostgreSQL</productname> - language extension. - </para> - </refsect2> + <refsect1> + <title>See Also</title> + + <simplelist type="inline"> + <member><xref linkend="sql-createaggregate" endterm="sql-createaggregate-title"></member> + </simplelist> </refsect1> + </refentry> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/ref/drop_cast.sgml b/doc/src/sgml/ref/drop_cast.sgml index 2f2cec02e14628ace86ea31972897a4264e33a60..427796e56bf381c0340e0f69fadd32a888c9dece 100644 --- a/doc/src/sgml/ref/drop_cast.sgml +++ b/doc/src/sgml/ref/drop_cast.sgml @@ -1,4 +1,4 @@ -<!-- $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"> <refmeta> @@ -13,8 +13,7 @@ <refsynopsisdiv> <synopsis> -DROP CAST (<replaceable>sourcetype</replaceable> AS <replaceable>targettype</replaceable>) - [ CASCADE | RESTRICT ] +DROP CAST (<replaceable>sourcetype</replaceable> AS <replaceable>targettype</replaceable>) [ CASCADE | RESTRICT ] </synopsis> </refsynopsisdiv> @@ -30,10 +29,12 @@ DROP CAST (<replaceable>sourcetype</replaceable> AS <replaceable>targettype</rep data type. These are the same privileges that are required to create a cast. </para> + </refsect1> - <variablelist> - <title>Parameters</title> + <refsect1> + <title>Parameters</title> + <variablelist> <varlistentry> <term><replaceable>sourcetype</replaceable></term> @@ -66,45 +67,33 @@ DROP CAST (<replaceable>sourcetype</replaceable> AS <replaceable>targettype</rep </listitem> </varlistentry> </variablelist> - - </refsect1> - - <refsect1 id="sql-dropcast-notes"> - <title>Notes</title> - - <para> - Use <command>CREATE CAST</command> to create user-defined casts. - </para> </refsect1> - <refsect1 id="sql-dropcast-examples"> <title>Examples</title> <para> To drop the cast from type <type>text</type> to type <type>int</type>: <programlisting> -DROP CAST (text AS int4); +DROP CAST (text AS int); </programlisting> </para> </refsect1> - <refsect1 id="sql-dropcast-compat"> <title>Compatibility</title> <para> - The <command>DROP CAST</command> command conforms to SQL99. + The <command>DROP CAST</command> command conforms to the SQL standard. </para> </refsect1> - - <refsect1 id="sql-dropcast-seealso"> + <refsect1> <title>See Also</title> - <para> - <xref linkend="sql-createcast" endterm="sql-createcast-title"> - </para> + <simplelist type="inline"> + <member><xref linkend="sql-createcast" endterm="sql-createcast-title"></member> + </simplelist> </refsect1> </refentry> diff --git a/doc/src/sgml/ref/drop_conversion.sgml b/doc/src/sgml/ref/drop_conversion.sgml index 535f1aa159ee9daa699122319ad68ceb53b2ddb5..6e785a84a8f44647240d6444cdb726e686785452 100644 --- a/doc/src/sgml/ref/drop_conversion.sgml +++ b/doc/src/sgml/ref/drop_conversion.sgml @@ -1,4 +1,4 @@ -<!-- $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"> <refmeta> @@ -13,8 +13,7 @@ <refsynopsisdiv> <synopsis> -DROP CONVERSION <replaceable>conversion_name</replaceable> - [ CASCADE | RESTRICT ] +DROP CONVERSION <replaceable>conversion_name</replaceable> [ CASCADE | RESTRICT ] </synopsis> </refsynopsisdiv> @@ -23,15 +22,14 @@ DROP CONVERSION <replaceable>conversion_name</replaceable> <para> <command>DROP CONVERSION</command> removes a previously defined conversion. - </para> - - <para> To be able to drop a conversion, you must own the conversion. </para> + </refsect1> - <variablelist> - <title>Parameters</title> + <refsect1> + <title>Parameters</title> + <variablelist> <varlistentry> <term><replaceable>conversion_name</replaceable></term> @@ -55,23 +53,8 @@ DROP CONVERSION <replaceable>conversion_name</replaceable> </listitem> </varlistentry> </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 id="sql-dropconversion-examples"> <title>Examples</title> @@ -83,25 +66,21 @@ DROP CONVERSION myname; </para> </refsect1> - <refsect1 id="sql-dropconversion-compat"> <title>Compatibility</title> <para> - <command>DROP CONVERSION</command> - is a <productname>PostgreSQL</productname> extension. - There is no <command>DROP CONVERSION</command> - statement in <acronym>SQL99</acronym>. + There is no <command>DROP CONVERSION</command> statement in the SQL + standard. </para> </refsect1> - - <refsect1 id="sql-dropconversion-seealso"> + <refsect1> <title>See Also</title> - <para> - <xref linkend="sql-createconversion" endterm="sql-createconversion-title"> - </para> + <simplelist type="inline"> + <member><xref linkend="sql-createconversion" endterm="sql-createconversion-title"></member> + </simplelist> </refsect1> </refentry> diff --git a/doc/src/sgml/ref/drop_database.sgml b/doc/src/sgml/ref/drop_database.sgml index 4f5095892fc989618b54e8b85905d7eb371f624a..fb77f53c67ce4d7bc05247ff835a0cacad9ff476 100644 --- a/doc/src/sgml/ref/drop_database.sgml +++ b/doc/src/sgml/ref/drop_database.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,59 +8,56 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPDATABASE-TITLE">DROP DATABASE</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP DATABASE - </refname> - <refpurpose> - remove a database - </refpurpose> + <refname>DROP DATABASE</refname> + <refpurpose>remove a database</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1999-12-11</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DROP DATABASE <replaceable class="PARAMETER">name</replaceable> - </synopsis> - - <refsect2 id="R2-SQL-DROPDATABASE-1"> - <refsect2info> - <date>1999-12-11</date> - </refsect2info> - <title> - Inputs - </title> - <para> - <variablelist> - <varlistentry> - <term><replaceable class="PARAMETER">name</replaceable></term> - <listitem> - <para> - The name of an existing database to remove. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPDATABASE-2"> - <refsect2info> - <date>1999-12-11</date> - </refsect2info> - <title> - Outputs - </title> - <para> +</synopsis> + </refsynopsisdiv> + + <refsect1> + <title>Description</title> - <variablelist> + <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> + <varlistentry> + <term><replaceable class="PARAMETER">name</replaceable></term> + <listitem> + <para> + The name of the database to remove. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Diagnostics</title> + + <variablelist> <varlistentry> <term><computeroutput>DROP DATABASE</computeroutput></term> <listitem> <para> - This message is returned if the command is successful. + This message is returned if the command was successful. </para> </listitem> </varlistentry> @@ -84,72 +81,34 @@ DROP DATABASE <replaceable class="PARAMETER">name</replaceable> </para> </listitem> </varlistentry> - </variablelist> - </para> - </refsect2> - </refsynopsisdiv> - - <refsect1 id="R1-SQL-DROPDATABASE-1"> - <refsect1info> - <date>1999-12-11</date> - </refsect1info> - <title> - Description - </title> + </refsect1> + + <refsect1> + <title>Notes</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). + This command cannot be executed while connected to the target + database. Thus, it might be more convenient to use the program + <xref linkend="app-dropdb" endterm="app-dropdb-title"> instead, + which is a wrapper around this command. </para> + </refsect1> + + <refsect1> + <title>Compatibility</title> <para> - <command>DROP DATABASE</command> cannot be undone. Use it with care! + The is no <command>DROP DATABASE</command> statement in the SQL standard. </para> - - <refsect2 id="R2-SQL-DROPDATABASE-3"> - <refsect2info> - <date>1999-12-11</date> - </refsect2info> - <title> - Notes - </title> - - <para> - This command cannot be executed while connected to the target - database. Thus, it might be more convenient to use the shell - script <xref linkend="app-dropdb" endterm="app-dropdb-title">, - which is a wrapper around this command, instead. - </para> - - <para> - Refer to - <xref linkend="sql-createdatabase" endterm="sql-createdatabase-title"> - for information on how to create a database. - </para> - </refsect2> </refsect1> - <refsect1 id="R1-SQL-DROPDATABASE-3"> - <title> - Compatibility - </title> - - <refsect2 id="R2-SQL-DROPDATABASE-4"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - SQL92 - </title> - - <para> - <command>DROP DATABASE</command> statement is a - <productname>PostgreSQL</productname> language extension; - there is no such command in <acronym>SQL92</acronym>. - </para> - </refsect2> + <refsect1> + <title>See Also</title> + + <simplelist type="inline"> + <member><xref linkend="sql-createdatabase" endterm="sql-createdatabase-title"></member> + </simplelist> </refsect1> </refentry> diff --git a/doc/src/sgml/ref/drop_domain.sgml b/doc/src/sgml/ref/drop_domain.sgml index 5196ae4b899ef44bb6c006bc6455f55e166bc779..99c8ec7d44e89ec1c180a757b12451d47541055e 100644 --- a/doc/src/sgml/ref/drop_domain.sgml +++ b/doc/src/sgml/ref/drop_domain.sgml @@ -1,126 +1,98 @@ <!-- -$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 --> <refentry id="SQL-DROPDOMAIN"> <refmeta> - <refentrytitle id="SQL-DROPDOMAIN-TITLE"> - DROP DOMAIN - </refentrytitle> + <refentrytitle id="SQL-DROPDOMAIN-TITLE">DROP DOMAIN</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP DOMAIN - </refname> - <refpurpose> - remove a user-defined domain - </refpurpose> + <refname>DROP DOMAIN</refname> + <refpurpose>remove a domain</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1999-07-20</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DROP DOMAIN <replaceable class="PARAMETER">domainname</replaceable> [, ...] [ CASCADE | RESTRICT ] - </synopsis> - - <refsect2 id="R2-SQL-DROPDOMAIN-1"> - <refsect2info> - <date>2002-02-24</date> - </refsect2info> - <title> - Inputs - </title> - <para> - <variablelist> - <varlistentry> - <term><replaceable class="PARAMETER">domainname</replaceable></term> - <listitem> - <para> - The name (optionally schema-qualified) of an existing domain. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><literal>CASCADE</></term> - <listitem> - <para> - Automatically drop objects that depend on the domain - (such as table columns). - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><literal>RESTRICT</></term> - <listitem> - <para> - Refuse to drop the domain if there are any dependent objects. - This is the default. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPDOMAIN-2"> - <refsect2info> - <date>2002-02-24</date> - </refsect2info> - <title> - Outputs - </title> - <para> - <variablelist> - <varlistentry> - <term><computeroutput> -DROP DOMAIN - </computeroutput></term> - <listitem> - <para> - The message returned if the command is successful. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -ERROR: RemoveDomain: type '<replaceable class="parameter">domainname</replaceable>' does not exist - </computeroutput></term> - <listitem> - <para> - This message occurs if the specified domain (or type) is not found. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> +</synopsis> </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> + <refsect1> + <title>Description</title> + <para> - Only the owner of a domain can remove it. + <command>DROP DOMAIN</command> will remove a domain. Only the + owner of a domain can remove it. </para> </refsect1> + <refsect1> + <title>Parameters</title> + + <variablelist> + <varlistentry> + <term><replaceable class="PARAMETER">domainname</replaceable></term> + <listitem> + <para> + The name (optionally schema-qualified) of an existing domain. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>CASCADE</></term> + <listitem> + <para> + Automatically drop objects that depend on the domain (such as + table columns). + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RESTRICT</></term> + <listitem> + <para> + Refuse to drop the domain if any objects depend on it. This is + the default. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DROP DOMAIN</computeroutput></term> + <listitem> + <para> + Message returned if the command was successful. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>ERROR: RemoveDomain: type '<replaceable class="parameter">domainname</replaceable>' does not exist</computeroutput></term> + <listitem> + <para> + This message occurs if the specified domain does not exist. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + <refsect1 id="SQL-DROPDOMAIN-examples"> <title>Examples</title> + <para> - To remove the <type>box</type> domain: + To remove the domain <type>box</type>: <programlisting> DROP DOMAIN box; @@ -131,13 +103,9 @@ DROP DOMAIN box; <refsect1 id="SQL-DROPDOMAIN-compatibility"> <title>Compatibility</title> - <refsect2 id="R2-SQL-DROPDOMAIN-sql92"> - <title> - SQL92 - </title> - - <para></para> - </refsect2> + <para> + This command conforms to the SQL standard. + </para> </refsect1> <refsect1 id="SQL-DROPDOMAIN-see-also"> diff --git a/doc/src/sgml/ref/drop_function.sgml b/doc/src/sgml/ref/drop_function.sgml index 5f872499891c328c394f4bbb144b74a73a062a0b..10504630ff981476fa6fe1fd57971735d17d58c7 100644 --- a/doc/src/sgml/ref/drop_function.sgml +++ b/doc/src/sgml/ref/drop_function.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,129 +8,96 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPFUNCTION-TITLE">DROP FUNCTION</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP FUNCTION - </refname> - <refpurpose> - remove a user-defined function - </refpurpose> + <refname>DROP FUNCTION</refname> + <refpurpose>remove a user-defined function</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1999-07-20</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DROP FUNCTION <replaceable class="parameter">name</replaceable> ( [ <replaceable class="parameter">type</replaceable> [, ...] ] ) [ CASCADE | RESTRICT ] - </synopsis> - - <refsect2 id="R2-SQL-DROPFUNCTION-1"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - Inputs - </title> - <para> - <variablelist> - <varlistentry> - <term><replaceable class="parameter">name</replaceable></term> - <listitem> - <para> - The name (optionally schema-qualified) of an existing function. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><replaceable class="parameter">type</replaceable></term> - <listitem> - <para> - The type of a parameter of the function. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>CASCADE</term> - <listitem> - <para> - Automatically drop objects that depend on the function - (such as operators or triggers). - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>RESTRICT</term> - <listitem> - <para> - Refuse to drop the function if there are any dependent objects. - This is the default. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPFUNCTION-2"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - Outputs - </title> - <para> - - <variablelist> - <varlistentry> - <term><computeroutput> -DROP FUNCTION - </computeroutput></term> - <listitem> - <para> - Message returned if the command completes successfully. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -WARNING: RemoveFunction: Function "<replaceable class="parameter">name</replaceable>" ("<replaceable class="parameter">types</replaceable>") does not exist - </computeroutput></term> - <listitem> - <para> - This message is given if the function specified does not - exist in the current database. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-DROPFUNCTION-1"> - <refsect1info> - <date>1998-04-15</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <title>Description</title> + <para> - DROP FUNCTION will remove the definition of an existing + <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 input argument types to 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 id="SQL-DROPFUNCTION-notes"> - <title>Notes</title> + <refsect1> + <title>Parameters</title> + + <variablelist> + <varlistentry> + <term><replaceable class="parameter">name</replaceable></term> + <listitem> + <para> + The name (optionally schema-qualified) of an existing function. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="parameter">type</replaceable></term> + <listitem> + <para> + The data type of an argument of the function. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>CASCADE</literal></term> + <listitem> + <para> + Automatically drop objects that depend on the function (such as + operators or triggers). + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RESTRICT</literal></term> + <listitem> + <para> + Refuse to drop the function if any objects depend on it. This + is the default. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DROP FUNCTION</computeroutput></term> + <listitem> + <para> + Message returned if the command completes successfully. + </para> + </listitem> + </varlistentry> - <para> - Refer to - <xref linkend="sql-createfunction" endterm="sql-createfunction-title"> - for information on creating functions. - </para> + <varlistentry> + <term><computeroutput>WARNING: RemoveFunction: Function <replaceable class="parameter">name</replaceable> (<replaceable class="parameter">types</replaceable>) does not exist</computeroutput></term> + <listitem> + <para> + This message is output if the function specified does not exist. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> <refsect1 id="SQL-DROPFUNCTION-examples"> @@ -149,8 +116,8 @@ DROP FUNCTION sqrt(integer); <title>Compatibility</title> <para> - A <command>DROP FUNCTION</command> statement is defined in SQL99. One of - its syntax forms is similar to PostgreSQL's. + A <command>DROP FUNCTION</command> statement is defined in the SQL + standard, but it is not compatible with this command. </para> </refsect1> @@ -161,6 +128,7 @@ DROP FUNCTION sqrt(integer); <member><xref linkend="sql-createfunction" endterm="sql-createfunction-title"></member> </simplelist> </refsect1> + </refentry> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/ref/drop_group.sgml b/doc/src/sgml/ref/drop_group.sgml index bb1d7224bb985d94b2516c25c8955c0cb35a1543..c6c6907e7518810a6060b55b26d0d2eb605aa64e 100644 --- a/doc/src/sgml/ref/drop_group.sgml +++ b/doc/src/sgml/ref/drop_group.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,89 +8,60 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPGROUP-TITLE">DROP GROUP</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP GROUP - </refname> - <refpurpose> - remove a user group - </refpurpose> + <refname>DROP GROUP</refname> + <refpurpose>remove a user group</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>2000-01-14</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DROP GROUP <replaceable class="PARAMETER">name</replaceable> - </synopsis> - - <refsect2 id="R2-SQL-DROPGROUP-1"> - <refsect2info> - <date>2000-01-14</date> - </refsect2info> - <title> - Inputs - </title> - <para> - - <variablelist> - <varlistentry> - <term><replaceable class="PARAMETER">name</replaceable></term> - <listitem> - <para> - The name of an existing group. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPGROUP-2"> - <refsect2info> - <date>2000-01-14</date> - </refsect2info> - <title> - Outputs - </title> - <para> - <variablelist> - <varlistentry> - <term><computeroutput>DROP GROUP</computeroutput></term> - <listitem> - <para> - The message returned if the group is successfully deleted. - </para> - </listitem> - </varlistentry> - - </variablelist> - </para> - </refsect2> +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-DROPGROUP-1"> - <refsect1info> - <date>2000-01-14</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <title>Description</title> + <para> - <command>DROP GROUP</command> removes the specified group from the database. - The users in the group are not deleted. + <command>DROP GROUP</command> removes the specified group. 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> + <title>Parameters</title> + + <variablelist> + <varlistentry> + <term><replaceable class="PARAMETER">name</replaceable></term> + <listitem> + <para> + The name of an existing group. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DROP GROUP</computeroutput></term> + <listitem> + <para> + Message returned if the group was successfully removed. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Examples</title> - <refsect1 id="R1-SQL-DROPGROUP-2"> - <title> - Usage - </title> <para> To drop a group: <programlisting> @@ -99,23 +70,23 @@ DROP GROUP staff; </para> </refsect1> - <refsect1 id="R1-SQL-DROPGROUP-3"> - <title> - Compatibility - </title> - - <refsect2 id="R2-SQL-DROPGROUP-4"> - <refsect2info> - <date>2000-01-14</date> - </refsect2info> - <title> - SQL92 - </title> - <para> - There is no <command>DROP GROUP</command> in <acronym>SQL92</acronym>. - </para> - </refsect2> + <refsect1> + <title>Compatibility</title> + + <para> + There is no <command>DROP GROUP</command> statement in the SQL standard. + </para> </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> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/ref/drop_index.sgml b/doc/src/sgml/ref/drop_index.sgml index 149afff0779fd15121f4ac9609bc818c03ba626a..b6086ffff39c8646bfcbe43e626a04af4c3b1e4b 100644 --- a/doc/src/sgml/ref/drop_index.sgml +++ b/doc/src/sgml/ref/drop_index.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,161 +8,118 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPINDEX-TITLE">DROP INDEX</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP INDEX - </refname> - <refpurpose> - remove an index - </refpurpose> + <refname>DROP INDEX</refname> + <refpurpose>remove an index</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1999-07-20</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DROP INDEX <replaceable class="PARAMETER">index_name</replaceable> [, ...] [ CASCADE | RESTRICT ] - </synopsis> - - <refsect2 id="R2-SQL-DROPINDEX-1"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - Inputs - </title> - <para> - <variablelist> - <varlistentry> - <term><replaceable class="PARAMETER">index_name</replaceable></term> - <listitem> - <para> - The name (optionally schema-qualified) of an index to remove. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>CASCADE</term> - <listitem> - <para> - Automatically drop objects that depend on the index. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>RESTRICT</term> - <listitem> - <para> - Refuse to drop the index if there are any dependent objects. - This is the default. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPINDEX-2"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - Outputs - </title> - <para> - <variablelist> - <varlistentry> - <term><computeroutput> -DROP INDEX - </computeroutput></term> - <listitem> - <para> - The message returned if the command completes successfully. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -ERROR: index "<replaceable class="PARAMETER">index_name</replaceable>" does not exist - </computeroutput></term> - <listitem> - <para> - This message occurs if <replaceable class="PARAMETER">index_name</replaceable> - is not an index in the database. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-DROPINDEX-1"> - <refsect1info> - <date>1998-04-15</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <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> + </refsect1> + + <refsect1> + <title>Parameters</title> - <refsect2 id="R2-SQL-DROPINDEX-3"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - Notes - </title> - <para> - <command>DROP INDEX</command> is a <productname>PostgreSQL</productname> - language extension. - </para> - <para> - Refer to - <xref linkend="sql-createindex" endterm="sql-createindex-title"> - for information on how to create indexes. - </para> - </refsect2> + <variablelist> + <varlistentry> + <term><replaceable class="PARAMETER">index_name</replaceable></term> + <listitem> + <para> + The name (optionally schema-qualified) of an index to remove. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>CASCADE</literal></term> + <listitem> + <para> + Automatically drop objects that depend on the index. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RESTRICT</literal></term> + <listitem> + <para> + Refuse to drop the index if any objects depend on it. This is + the default. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> - <refsect1 id="R1-SQL-DROPINDEX-2"> - <title> - Usage - </title> + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DROP INDEX</computeroutput></term> + <listitem> + <para> + Message returned if the command completes successfully. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>ERROR: index "<replaceable class="PARAMETER">index_name</replaceable>" does not exist</computeroutput></term> + <listitem> + <para> + This message is returned if <replaceable + class="PARAMETER">index_name</replaceable> is not an existing + index. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Examples</title> + <para> - This command will remove the <literal>title_idx</literal> index: + This command will remove the index <literal>title_idx</literal>: - <programlisting> - DROP INDEX title_idx; - </programlisting> +<programlisting> +DROP INDEX title_idx; +</programlisting> </para> </refsect1> - <refsect1 id="R1-SQL-DROPINDEX-3"> - <title> - Compatibility - </title> - - <refsect2 id="R2-SQL-DROPINDEX-4"> - <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> + <title>Compatibility</title> + + <para> + <command>DROP INDEX</command> is a + <productname>PostgreSQL</productname> language extension. There + are no provisions for indexes in the SQL standard. + </para> </refsect1> + + <refsect1> + <title>See Also</title> + + <simplelist type="inline"> + <member><xref linkend="sql-createindex" endterm="sql-createindex-title"></member> + </simplelist> + </refsect1> + </refentry> diff --git a/doc/src/sgml/ref/drop_language.sgml b/doc/src/sgml/ref/drop_language.sgml index e0690a88ac69c30b36015076d9cc46a358109018..5e7a77f8cf0a840bd378f5b836e4f08a761f5d7f 100644 --- a/doc/src/sgml/ref/drop_language.sgml +++ b/doc/src/sgml/ref/drop_language.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,163 +8,120 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPLANGUAGE-TITLE">DROP LANGUAGE</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP LANGUAGE - </refname> - <refpurpose> - remove a user-defined procedural language - </refpurpose> + <refname>DROP LANGUAGE</refname> + <refpurpose>remove a user-defined procedural language</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1999-07-20</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DROP [ PROCEDURAL ] LANGUAGE <replaceable class="PARAMETER">name</replaceable> [ CASCADE | RESTRICT ] - </synopsis> - - <refsect2 id="R2-SQL-DROPLANGUAGE-1"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - Inputs - </title> - <para> - - <variablelist> - <varlistentry> - <term><replaceable class="PARAMETER">name</replaceable></term> - <listitem> - <para> - The name of an existing procedural language. For backward - compatibility, the name may be enclosed by single quotes. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>CASCADE</term> - <listitem> - <para> - Automatically drop objects that depend on the language - (such as functions in the language). - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>RESTRICT</term> - <listitem> - <para> - Refuse to drop the language if there are any dependent objects. - This is the default. - </para> - </listitem> - </varlistentry> - </variablelist> - - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPLANGUAGE-2"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - Outputs - </title> - <para> - <variablelist> - <varlistentry> - <term><computeroutput> -DROP LANGUAGE - </computeroutput></term> - <listitem> - <para> - This message is returned if the language is successfully dropped. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -ERROR: Language "<replaceable class="parameter">name</replaceable>" doesn't exist - </computeroutput></term> - <listitem> - <para> - This message occurs if a language called - <replaceable class="parameter">name</replaceable> is - not found in the database. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> +</synopsis> </refsynopsisdiv> - - <refsect1 id="R1-SQL-DROPLANGUAGE-1"> - <refsect1info> - <date>1998-04-15</date> - </refsect1info> - <title> - Description - </title> + + <refsect1> + <title>Description</title> + <para> - <command>DROP PROCEDURAL LANGUAGE</command> will remove the definition + <command>DROP LANGUAGE</command> will remove the definition of the previously registered procedural language called <replaceable class="parameter">name</replaceable>. </para> + </refsect1> - <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> + <title>Parameters</title> + + <variablelist> + <varlistentry> + <term><replaceable class="PARAMETER">name</replaceable></term> + <listitem> + <para> + The name of an existing procedural language. For backward + compatibility, the name may be enclosed by single quotes. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>CASCADE</literal></term> + <listitem> + <para> + Automatically drop objects that depend on the language (such as + functions in the language). + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RESTRICT</literal></term> + <listitem> + <para> + Refuse to drop the language if any objects depend on it. This + is the default. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> - - <refsect1 id="R1-SQL-DROPLANGUAGE-2"> - <title> - Usage - </title> + + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DROP LANGUAGE</computeroutput></term> + <listitem> + <para> + This message is returned if the language was successfully dropped. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>ERROR: Language "<replaceable class="parameter">name</replaceable>" doesn't exist</computeroutput></term> + <listitem> + <para> + This message is returned if a language called <replaceable + class="parameter">name</replaceable> is not found in the + database. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Examples</title> + <para> - This command removes the PL/Sample language: + This command removes the procedural language + <literal>plsample</literal>: - <programlisting> +<programlisting> DROP LANGUAGE plsample; - </programlisting> +</programlisting> </para> </refsect1> - <refsect1 id="R1-SQL-DROPLANGUAGE-3"> - <title> - Compatibility - </title> - - <refsect2 id="R2-SQL-DROPLANGUAGE-5"> - <refsect2info> - <date>1998-04-15</date> - </refsect2info> - <title> - SQL92 - </title> - <para> - There is no <command>DROP PROCEDURAL LANGUAGE</command> in - <acronym>SQL92</acronym>. - </para> - </refsect2> + <refsect1> + <title>Compatibility</title> + + <para> + There is no <command>DROP LANGUAGE</command> statement in the SQL + standard. + </para> + </refsect1> + + <refsect1> + <title>See Also</title> + + <simplelist type="inline"> + <member><xref linkend="sql-createlanguage" endterm="sql-createlanguage-title"></member> + </simplelist> </refsect1> + </refentry> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/ref/drop_opclass.sgml b/doc/src/sgml/ref/drop_opclass.sgml index 3f54baaccdce17701fe5eb10fd520e8d37e1a499..3e54959a48dc49f6e3681f20d2409435d5844431 100644 --- a/doc/src/sgml/ref/drop_opclass.sgml +++ b/doc/src/sgml/ref/drop_opclass.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,162 +8,118 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPOPCLASS-TITLE">DROP OPERATOR CLASS</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP OPERATOR CLASS - </refname> - <refpurpose> - remove a user-defined operator class - </refpurpose> + <refname>DROP OPERATOR CLASS</refname> + <refpurpose>remove a user-defined operator class</refpurpose> </refnamediv> <refsynopsisdiv> - <refsynopsisdivinfo> - <date>2002-07-28</date> - </refsynopsisdivinfo> - <synopsis> -DROP OPERATOR CLASS <replaceable class="PARAMETER">name</replaceable> USING <replaceable class="PARAMETER">access_method</replaceable> [ CASCADE | RESTRICT ] - </synopsis> - - <refsect2 id="R2-SQL-DROPOPCLASS-1"> - <refsect2info> - <date>2002-07-28</date> - </refsect2info> - <title> - Inputs - </title> - <para> - <variablelist> - <varlistentry> - <term><replaceable class="parameter">name</replaceable></term> - <listitem> - <para> - The name (optionally schema-qualified) of an existing operator class. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><replaceable class="parameter">access_method</replaceable></term> - <listitem> - <para> - The name of the index access method the operator class is for. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>CASCADE</term> - <listitem> - <para> - Automatically drop objects that depend on the operator class. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>RESTRICT</term> - <listitem> - <para> - Refuse to drop the operator class if there are any dependent objects. - This is the default. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPOPCLASS-2"> - <refsect2info> - <date>2002-07-28</date> - </refsect2info> - <title> - Outputs - </title> - <para> - - <variablelist> - <varlistentry> - <term><computeroutput> -DROP OPERATOR CLASS - </computeroutput></term> - <listitem> - <para> - The message returned if the command is successful. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> +<synopsis> +DROP OPERATOR CLASS <replaceable class="PARAMETER">name</replaceable> USING <replaceable class="PARAMETER">index_method</replaceable> [ CASCADE | RESTRICT ] +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-DROPOPCLASS-1"> - <refsect1info> - <date>2002-07-28</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <title>Description</title> + <para> - <command>DROP OPERATOR CLASS</command> drops an existing operator class - from the database. + <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> - <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> + <variablelist> + <varlistentry> + <term><replaceable class="parameter">name</replaceable></term> + <listitem> + <para> + The name (optionally schema-qualified) of an existing operator class. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="parameter">index_method</replaceable></term> + <listitem> + <para> + The name of the index access method the operator class is for. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>CASCADE</literal></term> + <listitem> + <para> + Automatically drop objects that depend on the operator class. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RESTRICT</literal></term> + <listitem> + <para> + Refuse to drop the operator class if any objects depend on it. + This is the default. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> - <refsect1 id="R1-SQL-DROPOPCLASS-2"> - <title> - Usage - </title> + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DROP OPERATOR CLASS</computeroutput></term> + <listitem> + <para> + Message returned if the command was successful. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Examples</title> + <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; - </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 such indexes along with the operator class. </para> </refsect1> - <refsect1 id="R1-SQL-DROPOPCLASS-3"> - <title> - Compatibility - </title> - - <refsect2 id="R2-SQL-DROPOPCLASS-4"> - <refsect2info> - <date>2002-07-28</date> - </refsect2info> - <title> - SQL92 - </title> - <para> - There is no <command>DROP OPERATOR CLASS</command> in - <acronym>SQL92</acronym>. - </para> - </refsect2> + <refsect1> + <title>Compatibility</title> + + <para> + There is no <command>DROP OPERATOR CLASS</command> statement in the + SQL standard. + </para> </refsect1> + + <refsect1> + <title>See Also</title> + + <simplelist type="inline"> + <member><xref linkend="sql-createopclass" endterm="sql-createopclass-title"></member> + </simplelist> + </refsect1> + </refentry> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/ref/drop_operator.sgml b/doc/src/sgml/ref/drop_operator.sgml index edd99bd75e317ec513cc55a08a0278ec25bbe3ce..8f3b1e069c6138fd9c7f315f574b19fe615568d6 100644 --- a/doc/src/sgml/ref/drop_operator.sgml +++ b/doc/src/sgml/ref/drop_operator.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,216 +8,169 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPOPERATOR-TITLE">DROP OPERATOR</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP OPERATOR - </refname> - <refpurpose> - remove a user-defined operator - </refpurpose> + <refname>DROP OPERATOR</refname> + <refpurpose>remove a user-defined operator</refpurpose> </refnamediv> <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1999-07-20</date> - </refsynopsisdivinfo> - <synopsis> -DROP OPERATOR <replaceable class="PARAMETER">id</replaceable> ( <replaceable class="PARAMETER">lefttype</replaceable> | NONE , <replaceable class="PARAMETER">righttype</replaceable> | NONE ) [ CASCADE | RESTRICT ] - </synopsis> - - <refsect2 id="R2-SQL-DROPOPERATOR-1"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Inputs - </title> - <para> - <variablelist> - <varlistentry> - <term><replaceable class="parameter">id</replaceable></term> - <listitem> - <para> - The identifier (optionally schema-qualified) of an existing operator. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><replaceable class="parameter">lefttype</replaceable></term> - <listitem> - <para> - The type of the operator's left argument; write <literal>NONE</literal> if the - operator has no left argument. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><replaceable class="parameter">righttype</replaceable></term> - <listitem> - <para> - The type of the operator's right argument; write <literal>NONE</literal> if the - operator has no right argument. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>CASCADE</term> - <listitem> - <para> - Automatically drop objects that depend on the operator. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>RESTRICT</term> - <listitem> - <para> - Refuse to drop the operator if there are any dependent objects. - This is the default. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPOPERATOR-2"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Outputs - </title> - <para> - - <variablelist> - <varlistentry> - <term><computeroutput> -DROP OPERATOR - </computeroutput></term> - <listitem> - <para> - The message returned if the command is successful. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -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> - <para> - This message occurs if the specified binary operator does not exist. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -ERROR: RemoveOperator: left unary operator '<replaceable class="PARAMETER">oper</replaceable>' taking '<replaceable class="PARAMETER">lefttype</replaceable>' does not exist - </computeroutput></term> - <listitem> - <para> - This message occurs if the left unary operator - specified does not exist. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -ERROR: RemoveOperator: right unary operator '<replaceable class="PARAMETER">oper</replaceable>' taking '<replaceable class="PARAMETER">righttype</replaceable>' does not exist - </computeroutput></term> - <listitem> - <para> - This message occurs if the right unary operator - specified does not exist. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> +<synopsis> +DROP OPERATOR <replaceable class="PARAMETER">name</replaceable> ( <replaceable class="PARAMETER">lefttype</replaceable> | NONE , <replaceable class="PARAMETER">righttype</replaceable> | NONE ) [ CASCADE | RESTRICT ] +</synopsis> </refsynopsisdiv> - <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> + <refsect1> + <title>Description</title> + <para> - The left or right type of a left or right unary - operator, respectively, must be specified as <literal>NONE</literal>. + <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> - <refsect2 id="R2-SQL-DROPOPERATOR-3"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Notes - </title> - <para> - The <command>DROP OPERATOR</command> statement is a - <productname>PostgreSQL</productname> - language extension. - </para> - <para> - Refer to - <xref linkend="sql-createoperator" endterm="sql-createoperator-title"> - for information on how to create operators. - </para> - </refsect2> + <variablelist> + <varlistentry> + <term><replaceable class="parameter">name</replaceable></term> + <listitem> + <para> + The name (optionally schema-qualified) of an existing operator. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="parameter">lefttype</replaceable></term> + <listitem> + <para> + The data type of the operator's left operand; write + <literal>NONE</literal> if the operator has no left operand. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="parameter">righttype</replaceable></term> + <listitem> + <para> + The data type of the operator's right operand; write + <literal>NONE</literal> if the operator has no right operand. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>CASCADE</literal></term> + <listitem> + <para> + Automatically drop objects that depend on the operator. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RESTRICT</literal></term> + <listitem> + <para> + Refuse to drop the operator if any objects depend on it. This + is the default. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> - <refsect1 id="R1-SQL-DROPOPERATOR-2"> - <title> - Usage - </title> - <para> - Remove power operator <literal>a^n</literal> for <literal>int4</literal>: + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DROP OPERATOR</computeroutput></term> + <listitem> + <para> + Message returned if the command was successful. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <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> + <listitem> + <para> + This message is returned if the specified binary operator does not exist. + </para> + </listitem> + </varlistentry> - <programlisting> -DROP OPERATOR ^ (int4, int4); - </programlisting> + <varlistentry> + <term><computeroutput>ERROR: RemoveOperator: left unary operator '<replaceable class="PARAMETER">name</replaceable>' taking '<replaceable class="PARAMETER">lefttype</replaceable>' does not exist</computeroutput></term> + <listitem> + <para> + This message is returned if the specified left unary operator + does not exist. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>ERROR: RemoveOperator: right unary operator '<replaceable class="PARAMETER">name</replaceable>' taking '<replaceable class="PARAMETER">righttype</replaceable>' does not exist</computeroutput></term> + <listitem> + <para> + This message is returned if the specified right unary operator + does not exist. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Examples</title> + + <para> + Remove the power operator <literal>a^b</literal> for type <type>integer</type>: +<programlisting> +DROP OPERATOR ^ (integer, integer); +</programlisting> </para> + <para> - Remove left unary negation operator (<literal>! b</literal>) for <type>boolean</type>: - <programlisting> -DROP OPERATOR ! (none, bool); - </programlisting> + Remove the left unary bitwise complement operator + <literal>~b</literal> for type <type>bit</type>: +<programlisting> +DROP OPERATOR ~ (none, bit); +</programlisting> </para> + <para> - Remove right unary factorial operator (<literal>i !</literal>) for - <literal>int4</literal>: - <programlisting> -DROP OPERATOR ! (int4, none); - </programlisting> + Remove the right unary factorial operator <literal>x!</literal> + for type <type>integer</type>: +<programlisting> +DROP OPERATOR ! (integer, none); +</programlisting> </para> </refsect1> - <refsect1 id="R1-SQL-DROPOPERATOR-3"> - <title> - Compatibility - </title> - - <refsect2 id="R2-SQL-DROPOPERATOR-4"> - <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> + <title>Compatibility</title> + + <para> + There is no <command>DROP OPERATOR</command> statement in the SQL standard. + </para> </refsect1> + + <refsect1> + <title>See Also</title> + + <simplelist type="inline"> + <member><xref linkend="sql-createoperator" endterm="sql-createoperator-title"></member> + </simplelist> + </refsect1> + </refentry> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/ref/drop_rule.sgml b/doc/src/sgml/ref/drop_rule.sgml index afb1b6a874bf954d161a4a414159dead3419188d..0276621c57507a4167828542299dd579f79c3846 100644 --- a/doc/src/sgml/ref/drop_rule.sgml +++ b/doc/src/sgml/ref/drop_rule.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,169 +8,122 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPRULE-TITLE">DROP RULE</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP RULE - </refname> - <refpurpose> - remove a rewrite rule - </refpurpose> + <refname>DROP RULE</refname> + <refpurpose>remove a rewrite rule</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1998-09-22</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DROP RULE <replaceable class="PARAMETER">name</replaceable> ON <replaceable class="PARAMETER">relation</replaceable> [ CASCADE | RESTRICT ] - </synopsis> - - <refsect2 id="R2-SQL-DROPRULE-1"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Inputs - </title> - <para> - <variablelist> - <varlistentry> - <term><replaceable class="parameter">name</replaceable></term> - <listitem> - <para> - The name of an existing rule to drop. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><replaceable class="parameter">relation</replaceable></term> - <listitem> - <para> - The name (optionally schema-qualified) of the relation the rule - applies to. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>CASCADE</term> - <listitem> - <para> - Automatically drop objects that depend on the rule. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>RESTRICT</term> - <listitem> - <para> - Refuse to drop the rule if there are any dependent objects. - This is the default. - </para> - </listitem> - </varlistentry> - </variablelist> - - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPRULE-2"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Outputs - </title> - <para> - <variablelist> - <varlistentry> - <term><computeroutput> -DROP RULE - </computeroutput></term> - <listitem> - <para> - Message returned if successful. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -ERROR: Rule "<replaceable class="parameter">name</replaceable>" not found - </computeroutput></term> - <listitem> - <para> - This message occurs if the specified rule does not exist. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-DROPRULE-1"> - <refsect1info> - <date>1998-09-22</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <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. + <command>DROP RULE</command> drops a rewrite rule. </para> + </refsect1> + + <refsect1> + <title>Parameters</title> + + <variablelist> + <varlistentry> + <term><replaceable class="parameter">name</replaceable></term> + <listitem> + <para> + The name of the rule to drop. + </para> + </listitem> + </varlistentry> - <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> + <varlistentry> + <term><replaceable class="parameter">relation</replaceable></term> + <listitem> + <para> + The name (optionally schema-qualified) of the table or view that + the rule applies to. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>CASCADE</literal></term> + <listitem> + <para> + Automatically drop objects that depend on the rule. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RESTRICT</literal></term> + <listitem> + <para> + Refuse to drop the rule if any objects depend on it. This is + the default. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> - - <refsect1 id="R1-SQL-DROPRULE-2"> - <title> - Usage - </title> + + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DROP RULE</computeroutput></term> + <listitem> + <para> + Message returned if the command was successful. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>ERROR: Rule "<replaceable class="parameter">name</replaceable>" not found</computeroutput></term> + <listitem> + <para> + Message if the specified rule does not exist. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Examples</title> + <para> To drop the rewrite rule <literal>newrule</literal>: - <programlisting> +<programlisting> DROP RULE newrule ON mytable; - </programlisting> +</programlisting> </para> </refsect1> - <refsect1 id="R1-SQL-DROPRULE-3"> - <title> - Compatibility - </title> - - <refsect2 id="R2-SQL-DROPRULE-5"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - SQL92 - </title> - <para> - There is no <command>DROP RULE</command> in SQL92. - </para> - </refsect2> + <refsect1> + <title>Compatibility</title> + + <para> + There is no <command>DROP RULE</command> statement in the SQL standard. + </para> </refsect1> + + <refsect1> + <title>See Also</title> + + <simplelist type="inline"> + <member><xref linkend="sql-createrule" endterm="sql-createrule-title"></member> + </simplelist> + </refsect1> + </refentry> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/ref/drop_schema.sgml b/doc/src/sgml/ref/drop_schema.sgml index 8c69893ae2f066ebbb4da848ab8bb09909825b74..5411b257991ef61fc0e87d40ccf98a752e6ea1a5 100644 --- a/doc/src/sgml/ref/drop_schema.sgml +++ b/doc/src/sgml/ref/drop_schema.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,107 +8,23 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPSCHEMA-TITLE">DROP SCHEMA</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP SCHEMA - </refname> - <refpurpose> - remove a schema - </refpurpose> + <refname>DROP SCHEMA</refname> + <refpurpose>remove a schema</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>2002-07-18</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DROP SCHEMA <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ] - - </synopsis> - - <refsect2 id="R2-SQL-DROPSCHEMA-1"> - <refsect2info> - <date>2002-07-18</date> - </refsect2info> - <title> - Inputs - </title> - <para> - <variablelist> - <varlistentry> - <term><replaceable class="PARAMETER">name</replaceable></term> - <listitem> - <para> - The name of a schema. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>CASCADE</term> - <listitem> - <para> - Automatically drop objects (tables, functions, etc) that are contained - in the schema. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>RESTRICT</term> - <listitem> - <para> - Refuse to drop the schema if it contains any objects. - This is the default. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPSCHEMA-2"> - <refsect2info> - <date>2002-07-18</date> - </refsect2info> - <title> - Outputs - </title> - <para> - - <variablelist> - <varlistentry> - <term><computeroutput> -DROP SCHEMA - </computeroutput></term> - <listitem> - <para> - The message returned if the schema is successfully dropped. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -ERROR: Schema "<replaceable class="parameter">name</replaceable>" does not exist - </computeroutput></term> - <listitem> - <para> - This message occurs if the specified schema does not exist. - </para> - </listitem> - </varlistentry> - </variablelist> - - </para> - </refsect2> +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-DROPSCHEMA-1"> - <refsect1info> - <date>2002-07-18</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <title>Description</title> + <para> - <command>DROP SCHEMA</command> removes schemas from the data base. + <command>DROP SCHEMA</command> removes schemas from the database. </para> <para> @@ -116,54 +32,98 @@ ERROR: Schema "<replaceable class="parameter">name</replaceable>" does not exist 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> + <varlistentry> + <term><replaceable class="PARAMETER">name</replaceable></term> + <listitem> + <para> + The name of a schema. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>CASCADE</literal></term> + <listitem> + <para> + Automatically drop objects (tables, functions, etc.) that are + contained in the schema. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RESTRICT</literal></term> + <listitem> + <para> + Refuse to drop the schema if it contains any objects. This is + the default. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DROP SCHEMA</computeroutput></term> + <listitem> + <para> + Message returned if the schema was successfully dropped. + </para> + </listitem> + </varlistentry> - <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> + <varlistentry> + <term><computeroutput>ERROR: Schema "<replaceable class="parameter">name</replaceable>" does not exist</computeroutput></term> + <listitem> + <para> + This message is returned if the specified schema does not exist. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> - <refsect1 id="R1-SQL-DROPSCHEMA-2"> - <title> - Usage - </title> + <refsect1> + <title>Examples</title> + <para> To remove schema <literal>mystuff</literal> from the database, along with everything it contains: - <programlisting> +<programlisting> DROP SCHEMA mystuff CASCADE; - </programlisting> +</programlisting> </para> </refsect1> - <refsect1 id="R1-SQL-DROPSCHEMA-3"> - <title> - Compatibility - </title> + <refsect1> + <title>Compatibility</title> - <refsect2 id="R2-SQL-DROPSCHEMA-4"> - <refsect2info> - <date>2002-07-18</date> - </refsect2info> - <title> - SQL92 - </title> - <para> - <command>DROP SCHEMA</command> is fully compatible with - <acronym>SQL92</acronym>, except that the standard only allows - one schema to be dropped per command. - </para> - </refsect2> + <para> + <command>DROP SCHEMA</command> is fully conforming with the SQL + standard, except that the standard only allows one schema to be + dropped per command. + </para> </refsect1> + + <refsect1> + <title>See Also</title> + + <simplelist type="inline"> + <member><xref linkend="sql-createschema" endterm="sql-createschema-title"></member> + </simplelist> + </refsect1> + </refentry> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/ref/drop_sequence.sgml b/doc/src/sgml/ref/drop_sequence.sgml index eafeb6ddac2031b6861dd455da171c0deef8097c..fe77e2a3d69b4b9758ed4f63a0224ef08f81d579 100644 --- a/doc/src/sgml/ref/drop_sequence.sgml +++ b/doc/src/sgml/ref/drop_sequence.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,160 +8,112 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPSEQUENCE-TITLE">DROP SEQUENCE</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP SEQUENCE - </refname> - <refpurpose> - remove a sequence - </refpurpose> + <refname>DROP SEQUENCE</refname> + <refpurpose>remove a sequence</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1999-07-20</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DROP SEQUENCE <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ] - - </synopsis> - - <refsect2 id="R2-SQL-DROPSEQUENCE-1"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Inputs - </title> - <para> - <variablelist> - <varlistentry> - <term><replaceable class="PARAMETER">name</replaceable></term> - <listitem> - <para> - The name (optionally schema-qualified) of a sequence. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>CASCADE</term> - <listitem> - <para> - Automatically drop objects that depend on the sequence. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>RESTRICT</term> - <listitem> - <para> - Refuse to drop the sequence if there are any dependent objects. - This is the default. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPSEQUENCE-2"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Outputs - </title> - <para> - - <variablelist> - <varlistentry> - <term><computeroutput> -DROP SEQUENCE - </computeroutput></term> - <listitem> - <para> - The message returned if the sequence is successfully dropped. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -ERROR: sequence "<replaceable class="parameter">name</replaceable>" does not exist - </computeroutput></term> - <listitem> - <para> - This message occurs if the specified sequence does not exist. - </para> - </listitem> - </varlistentry> - </variablelist> - - </para> - </refsect2> +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-DROPSEQUENCE-1"> - <refsect1info> - <date>1998-09-22</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <title>Description</title> + <para> - <command>DROP SEQUENCE</command> removes sequence number generators from the - data base. With the current implementation of sequences as - special tables it works just like the <command>DROP TABLE</command> - statement. + <command>DROP SEQUENCE</command> removes sequence number generators. </para> + </refsect1> + + <refsect1> + <title>Parameters</title> + + <variablelist> + <varlistentry> + <term><replaceable class="PARAMETER">name</replaceable></term> + <listitem> + <para> + The name (optionally schema-qualified) of a sequence. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>CASCADE</literal></term> + <listitem> + <para> + Automatically drop objects that depend on the sequence. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RESTRICT</literal></term> + <listitem> + <para> + Refuse to drop the sequence if any objects depend on it. This + is the default. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> - <refsect2 id="R2-SQL-DROPSEQUENCE-3"> - <refsect2info> - <date>1998-09-22</date> - </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> - </refsect2> + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DROP SEQUENCE</computeroutput></term> + <listitem> + <para> + Message returned if the sequence was successfully dropped. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>ERROR: sequence "<replaceable class="parameter">name</replaceable>" does not exist</computeroutput></term> + <listitem> + <para> + Message returned if the specified sequence does not exist. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> - <refsect1 id="R1-SQL-DROPSEQUENCE-2"> - <title> - Usage - </title> + <refsect1> + <title>Examples</title> + <para> - To remove sequence <literal>serial</literal> from database: + To remove the sequence <literal>serial</literal>: - <programlisting> +<programlisting> DROP SEQUENCE serial; - </programlisting> +</programlisting> </para> </refsect1> - <refsect1 id="R1-SQL-DROPSEQUENCE-3"> - <title> - Compatibility - </title> - - <refsect2 id="R2-SQL-DROPSEQUENCE-4"> - <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> + <title>Compatibility</title> + + <para> + There is no <command>DROP SEQUENCE</command> statement in the SQL standard. + </para> </refsect1> + + <refsect1> + <title>See Also</title> + + <simplelist type="inline"> + <member><xref linkend="sql-createsequence" endterm="sql-createsequence-title"></member> + </simplelist> + </refsect1> + </refentry> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/ref/drop_table.sgml b/doc/src/sgml/ref/drop_table.sgml index 754dccf3e260a4eca731b76d6ae64333565a17a4..4ebda8787e637c0face0cd3117301e1759c6ab48 100644 --- a/doc/src/sgml/ref/drop_table.sgml +++ b/doc/src/sgml/ref/drop_table.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,158 +8,126 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPTABLE-TITLE">DROP TABLE</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP TABLE - </refname> - <refpurpose> - remove a table - </refpurpose> + <refname>DROP TABLE</refname> + <refpurpose>remove a table</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1999-07-20</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DROP TABLE <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ] - - </synopsis> - - <refsect2 id="R2-SQL-DROPTABLE-1"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Inputs - </title> - <para> - <variablelist> - <varlistentry> - <term><replaceable class="PARAMETER">name</replaceable></term> - <listitem> - <para> - The name (optionally schema-qualified) of an existing table to drop. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>CASCADE</term> - <listitem> - <para> - Automatically drop objects that depend on the table - (such as views). - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>RESTRICT</term> - <listitem> - <para> - Refuse to drop the table if there are any dependent objects. - This is the default. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPTABLE-2"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Outputs - </title> - <para> - <variablelist> - <varlistentry> - <term><computeroutput> -DROP TABLE - </computeroutput></term> - <listitem> - <para> - The message returned if the command completes successfully. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -ERROR: table "<replaceable class="parameter">name</replaceable>" does not exist - </computeroutput></term> - <listitem> - <para> - If the specified table does not exist in the database. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-DROPTABLE-1"> - <refsect1info> - <date>1998-09-22</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <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>. + Only its owner may destroy a table. To empty a table of rows, + without destroying the table, use <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.) + 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> + <varlistentry> + <term><replaceable class="PARAMETER">name</replaceable></term> + <listitem> + <para> + The name (optionally schema-qualified) of the table to drop. + </para> + </listitem> + </varlistentry> - <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> + <varlistentry> + <term><literal>CASCADE</literal></term> + <listitem> + <para> + Automatically drop objects that depend on the table (such as + views). + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RESTRICT</literal></term> + <listitem> + <para> + Refuse to drop the table if any objects depend on it. This is + the default. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> - <refsect1 id="R1-SQL-DROPTABLE-2"> - <title> - Usage - </title> + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DROP TABLE</computeroutput></term> + <listitem> + <para> + Message returned if the command completes successfully. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>ERROR: table "<replaceable class="parameter">name</replaceable>" does not exist</computeroutput></term> + <listitem> + <para> + Message returned if the specified table does not exist. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Examples</title> + <para> To destroy two tables, <literal>films</literal> and <literal>distributors</literal>: - <programlisting> +<programlisting> DROP TABLE films, distributors; - </programlisting> +</programlisting> </para> </refsect1> - <refsect1 id="R1-SQL-DROPTABLE-3"> - <title> - Compatibility - </title> - - <refsect2 id="R2-SQL-DROPTABLE-4"> - <title> - SQL92 - </title> - <para> - </para> - </refsect2> + <refsect1> + <title>Compatibility</title> + + <para> + This command conforms to the SQL standard. + </para> </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> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/ref/drop_trigger.sgml b/doc/src/sgml/ref/drop_trigger.sgml index 92602756fd49382fc155988e751f6c8cde918376..5a33d033c24c1d68be4c5fa3134f09e07bab63e8 100644 --- a/doc/src/sgml/ref/drop_trigger.sgml +++ b/doc/src/sgml/ref/drop_trigger.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,160 +8,121 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPTRIGGER-TITLE">DROP TRIGGER</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP TRIGGER - </refname> - <refpurpose> - remove a trigger - </refpurpose> + <refname>DROP TRIGGER</refname> + <refpurpose>remove a trigger</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1998-09-22</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DROP TRIGGER <replaceable class="PARAMETER">name</replaceable> ON <replaceable class="PARAMETER">table</replaceable> [ CASCADE | RESTRICT ] - </synopsis> - - <refsect2 id="R2-SQL-DROPTRIGGER-1"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Inputs - </title> - <para> - - <variablelist> - <varlistentry> - <term><replaceable class="PARAMETER">name</replaceable></term> - <listitem> - <para> - The name of an existing trigger. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><replaceable class="PARAMETER">table</replaceable></term> - <listitem> - <para> - The name (optionally schema-qualified) of a table. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>CASCADE</term> - <listitem> - <para> - Automatically drop objects that depend on the trigger. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>RESTRICT</term> - <listitem> - <para> - Refuse to drop the trigger if there are any dependent objects. - This is the default. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPTRIGGER-2"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Outputs - </title> - <para> - - <variablelist> - <varlistentry> - <term><computeroutput> -DROP TRIGGER - </computeroutput></term> - <listitem> - <para> - The message returned if the trigger is successfully dropped. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -ERROR: DropTrigger: there is no trigger <replaceable class="PARAMETER">name</replaceable> on relation "<replaceable class="parameter">table</replaceable>" - </computeroutput></term> - <listitem> - <para> - This message occurs if the trigger specified does not exist. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-DROPTRIGGER-1"> - <refsect1info> - <date>1998-09-22</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <title>Description</title> + <para> <command>DROP TRIGGER</command> will remove an existing - trigger definition. To execute this command the current + 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 id="SQL-DROPTRIGGER-examples"> - <title>Examples</title> + <refsect1> + <title>Parameters</title> - <para> - Destroy the <literal>if_dist_exists</literal> trigger - on table <literal>films</literal>: + <variablelist> + <varlistentry> + <term><replaceable class="PARAMETER">name</replaceable></term> + <listitem> + <para> + The name of the trigger to remove. + </para> + </listitem> + </varlistentry> -<programlisting> -DROP TRIGGER if_dist_exists ON films; -</programlisting> - </para> + <varlistentry> + <term><replaceable class="PARAMETER">table</replaceable></term> + <listitem> + <para> + The name (optionally schema-qualified) of a table for which the + trigger is defined. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>CASCADE</literal></term> + <listitem> + <para> + Automatically drop objects that depend on the trigger. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RESTRICT</literal></term> + <listitem> + <para> + Refuse to drop the trigger if any objects depend on it. This is + the default. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> - - <refsect1 id="SQL-DROPTRIGGER-compatibility"> - <title>Compatibility</title> - + + <refsect1> + <title>Diagnostics</title> + <variablelist> <varlistentry> - <term>SQL92</term> + <term><computeroutput>DROP TRIGGER</computeroutput></term> <listitem> <para> - There is no <command>DROP TRIGGER</command> statement in - <acronym>SQL92</acronym>. + Message returned if the trigger was successfully dropped. </para> </listitem> </varlistentry> <varlistentry> - <term>SQL99</term> + <term><computeroutput>ERROR: DropTrigger: there is no trigger <replaceable class="PARAMETER">name</replaceable> on relation "<replaceable class="parameter">table</replaceable>"</computeroutput></term> <listitem> <para> - The <command>DROP TRIGGER</command> statement in - <productname>PostgreSQL</productname> is incompatible with - SQL99. In SQL99, trigger names are not local to tables, so the - command is simply <literal>DROP TRIGGER - <replaceable>name</replaceable></literal>. + Message returned if the specified trigger does not exist. </para> </listitem> </varlistentry> </variablelist> </refsect1> + <refsect1 id="SQL-DROPTRIGGER-examples"> + <title>Examples</title> + + <para> + Destroy the trigger <literal>if_dist_exists</literal> on the table + <literal>films</literal>: + +<programlisting> +DROP TRIGGER if_dist_exists ON films; +</programlisting> + </para> + </refsect1> + + <refsect1 id="SQL-DROPTRIGGER-compatibility"> + <title>Compatibility</title> + + <para> + The <command>DROP TRIGGER</command> statement in + <productname>PostgreSQL</productname> is incompatible with the SQL + standard. In the SQL standard, trigger names are not local to + tables, so the command is simply <literal>DROP TRIGGER + <replaceable>name</replaceable></literal>. + </para> + </refsect1> + <refsect1> <title>See Also</title> @@ -169,6 +130,7 @@ DROP TRIGGER if_dist_exists ON films; <member><xref linkend="sql-createtrigger" endterm="sql-createtrigger-title"></member> </simplelist> </refsect1> + </refentry> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/ref/drop_type.sgml b/doc/src/sgml/ref/drop_type.sgml index 665ce85e3a02839e6d489cbdc74ea12639bb1c85..4267efcb0bd7f7ee7bdc14199ef390a1fc18ec79 100644 --- a/doc/src/sgml/ref/drop_type.sgml +++ b/doc/src/sgml/ref/drop_type.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,118 +8,91 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPTYPE-TITLE">DROP TYPE</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP TYPE - </refname> - <refpurpose> - remove a user-defined data type - </refpurpose> + <refname>DROP TYPE</refname> + <refpurpose>remove a user-defined data type</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1999-07-20</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DROP TYPE <replaceable class="PARAMETER">typename</replaceable> [, ...] [ CASCADE | RESTRICT ] - - </synopsis> - - <refsect2 id="R2-SQL-DROPTYPE-1"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Inputs - </title> - <para> - <variablelist> - <varlistentry> - <term><replaceable class="PARAMETER">typename</replaceable></term> - <listitem> - <para> - The name (optionally schema-qualified) of an existing type. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>CASCADE</term> - <listitem> - <para> - Automatically drop objects that depend on the type - (such as table columns, functions, operators, etc). - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>RESTRICT</term> - <listitem> - <para> - Refuse to drop the type if there are any dependent objects. - This is the default. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPTYPE-2"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Outputs - </title> - <para> - <variablelist> - <varlistentry> - <term><computeroutput> -DROP TYPE - </computeroutput></term> - <listitem> - <para> - The message returned if the command is successful. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -ERROR: RemoveType: type '<replaceable class="parameter">typename</replaceable>' does not exist - </computeroutput></term> - <listitem> - <para> - This message occurs if the specified type is not found. - </para> - </listitem> - </varlistentry> - </variablelist> - - </para> - </refsect2> +</synopsis> </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> + <refsect1> + <title>Description</title> + <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> + <varlistentry> + <term><replaceable class="PARAMETER">typename</replaceable></term> + <listitem> + <para> + The name (optionally schema-qualified) of the data type to remove. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>CASCADE</literal></term> + <listitem> + <para> + Automatically drop objects that depend on the type (such as + table columns, functions, operators). + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RESTRICT</literal></term> + <listitem> + <para> + Refuse to drop the type if any objects depend on it. This is + the default. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DROP TYPE</computeroutput></term> + <listitem> + <para> + Message returned if the command was successful. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>ERROR: RemoveType: type '<replaceable class="parameter">typename</replaceable>' does not exist</computeroutput></term> + <listitem> + <para> + Message returned if the specified type does not exist. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + <refsect1 id="SQL-DROPTYPE-examples"> <title>Examples</title> - <para> - To remove the <type>box</type> type: + <para> + To remove the data type <type>box</type>: <programlisting> DROP TYPE box; </programlisting> @@ -130,9 +103,10 @@ DROP TYPE box; <title>Compatibility</title> <para> - Note that the <command>CREATE TYPE</command> command and the data - type extension mechanisms in <productname>PostgreSQL</productname> - differ from SQL99. + This command is similar to the corresponding command in the SQL + standard, but note that the <command>CREATE TYPE</command> command + and the data type extension mechanisms in + <productname>PostgreSQL</productname> differ from the SQL standard. </para> </refsect1> @@ -143,6 +117,7 @@ DROP TYPE box; <member><xref linkend="sql-createtype" endterm="sql-createtype-title"></member> </simplelist> </refsect1> + </refentry> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/ref/drop_user.sgml b/doc/src/sgml/ref/drop_user.sgml index d7f3af80b827d23375727dfd3accc618ce5ecba4..7d094b993d332b64449ed9c2b6922f3957967964 100644 --- a/doc/src/sgml/ref/drop_user.sgml +++ b/doc/src/sgml/ref/drop_user.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,6 +8,7 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPUSER-TITLE">DROP USER</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> <refname>DROP USER</refname> <refpurpose>remove a database user account</refpurpose> @@ -23,40 +24,36 @@ DROP USER <replaceable class="PARAMETER">name</replaceable> <title>Description</title> <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 user owns any database, an error is raised. </para> + </refsect1> - <refsect2> - <title>Parameters</title> - - <para> - <variablelist> - <varlistentry> - <term><replaceable class="PARAMETER">name</replaceable></term> - <listitem> - <para> - The name of an existing user. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - + <refsect1> + <title>Parameters</title> + + <variablelist> + <varlistentry> + <term><replaceable class="PARAMETER">name</replaceable></term> + <listitem> + <para> + The name of the user to remove. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> <refsect1> <title>Diagnostics</title> - <para> <variablelist> <varlistentry> <term><computeroutput>DROP USER</computeroutput></term> <listitem> <para> - The message returned if the user is successfully deleted. + Message returned if the user was successfully deleted. </para> </listitem> </varlistentry> @@ -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> <listitem> <para> - This message occurs if the user name is not found. + Message returned if the specified user does not exist. </para> </listitem> </varlistentry> @@ -78,18 +75,13 @@ DROP USER <replaceable class="PARAMETER">name</replaceable> </para> </listitem> </varlistentry> - </variablelist> - </para> </refsect1> <refsect1> <title>Notes</title> <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 linkend="APP-DROPUSER" endterm="APP-DROPUSER-title"> that has the same functionality as this command (in fact, it calls this command) @@ -122,9 +114,8 @@ DROP USER jonathan; <title>See Also</title> <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="app-dropuser"></member> + <member><xref linkend="sql-createuser" endterm="sql-createuser-title"></member> </simplelist> </refsect1> diff --git a/doc/src/sgml/ref/drop_view.sgml b/doc/src/sgml/ref/drop_view.sgml index 9b35d88c040ad1399a8e63efd2d129abe7a08d24..fd32f92f8ac535d72e3e5f324293853a952f1364 100644 --- a/doc/src/sgml/ref/drop_view.sgml +++ b/doc/src/sgml/ref/drop_view.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,154 +8,113 @@ PostgreSQL documentation <refentrytitle id="SQL-DROPVIEW-TITLE">DROP VIEW</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - DROP VIEW - </refname> - <refpurpose> - remove a view - </refpurpose> + <refname>DROP VIEW</refname> + <refpurpose>remove a view</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1999-07-20</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> DROP VIEW <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ] - </synopsis> - - <refsect2 id="R2-SQL-DROPVIEW-1"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Inputs - </title> - <para> - - <variablelist> - <varlistentry> - <term><replaceable class="PARAMETER">name</replaceable></term> - <listitem> - <para> - The name (optionally schema-qualified) of an existing view. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>CASCADE</term> - <listitem> - <para> - Automatically drop objects that depend on the view - (such as other views). - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>RESTRICT</term> - <listitem> - <para> - Refuse to drop the view if there are any dependent objects. - This is the default. - </para> - </listitem> - </varlistentry> - </variablelist> - - </para> - </refsect2> - - <refsect2 id="R2-SQL-DROPVIEW-2"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Outputs - </title> - <para> - - <variablelist> - <varlistentry> - <term><computeroutput> -DROP VIEW - </computeroutput></term> - <listitem> - <para> - The message returned if the command is successful. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -ERROR: view <replaceable class="parameter">name</replaceable> does not exist - </computeroutput></term> - <listitem> - <para> - This message occurs if the specified view does not exist in - the database. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-DROPVIEW-1"> - <refsect1info> - <date>1998-09-22</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <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. + <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> + <varlistentry> + <term><replaceable class="PARAMETER">name</replaceable></term> + <listitem> + <para> + The name (optionally schema-qualified) of the view to remove. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>CASCADE</literal></term> + <listitem> + <para> + Automatically drop objects that depend on the view (such as + other views). + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RESTRICT</literal></term> + <listitem> + <para> + Refuse to drop the view if any objects depend on it. This is + the default. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>DROP VIEW</computeroutput></term> + <listitem> + <para> + Message returned if the command was successful. + </para> + </listitem> + </varlistentry> - <refsect2 id="R2-SQL-DROPVIEW-3"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - Notes - </title> - <para> - Refer to <xref linkend="sql-createview" endterm="sql-createview-title"> - for information on how to create views. - </para> - </refsect2> + <varlistentry> + <term><computeroutput>ERROR: view <replaceable class="parameter">name</replaceable> does not exist</computeroutput></term> + <listitem> + <para> + Message returned if the specified view does not exist. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> - <refsect1 id="R1-SQL-DROPVIEW-2"> - <title> - Usage - </title> + <refsect1> + <title>Examples</title> + <para> This command will remove the view called <literal>kinds</literal>: - </para> - <programlisting> +<programlisting> DROP VIEW kinds; - </programlisting> +</programlisting> + </para> </refsect1> - <refsect1 id="R1-SQL-DROPVIEW-3"> - <title> - Compatibility - </title> - - <refsect2 id="R2-SQL-DROPVIEW-4"> - <refsect2info> - <date>1998-09-22</date> - </refsect2info> - <title> - SQL92 - </title> - <para> - </para> - </refsect2> + <refsect1> + <title>Compatibility</title> + + <para> + This command conforms to the SQL standard. + </para> </refsect1> + + <refsect1> + <title>See Also</title> + + <simplelist type="inline"> + <member><xref linkend="sql-createview" endterm="sql-createview-title"></member> + </simplelist> + </refsect1> + </refentry> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/ref/fetch.sgml b/doc/src/sgml/ref/fetch.sgml index a1f3b13719fae9d3d5d46c422cec4d7ba1346050..305e5fc02ccaa66e2f1c8731fe531d9e055268e8 100644 --- a/doc/src/sgml/ref/fetch.sgml +++ b/doc/src/sgml/ref/fetch.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,19 +8,14 @@ PostgreSQL documentation <refentrytitle id="SQL-FETCH-TITLE">FETCH</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - FETCH - </refname> - <refpurpose> - retrieve rows from a query using a cursor - </refpurpose> + <refname>FETCH</refname> + <refpurpose>retrieve rows from a query using a cursor</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>2003-03-11</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> 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: @@ -39,243 +34,20 @@ where <replaceable class="PARAMETER">direction</replaceable> can be empty or one BACKWARD BACKWARD <replaceable class="PARAMETER">count</replaceable> BACKWARD ALL - </synopsis> - - <refsect2 id="R2-SQL-FETCH-1"> - <refsect2info> - <date>2003-03-11</date> - </refsect2info> - <title> - Inputs - </title> - <para> - - <variablelist> - <varlistentry> - <term><replaceable class="PARAMETER">direction</replaceable></term> - <listitem> - <para> - <replaceable class="PARAMETER">direction</replaceable> - defines the fetch direction and number of rows to fetch. - It can be one of the following: - - <variablelist> - <varlistentry> - <term>NEXT</term> - <listitem> - <para> - fetch next row. This is the default - if <replaceable class="PARAMETER">direction</replaceable> is omitted. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>PRIOR</term> - <listitem> - <para> - fetch prior row. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>FIRST</term> - <listitem> - <para> - fetch first row of query (same as ABSOLUTE 1). - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>LAST</term> - <listitem> - <para> - fetch last row of query (same as ABSOLUTE -1). - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>ABSOLUTE <replaceable class="PARAMETER">count</replaceable></term> - <listitem> - <para> - fetch the <replaceable class="PARAMETER">count</replaceable>'th - row of query, or the - abs(<replaceable class="PARAMETER">count</replaceable>)'th row - from the end if - <replaceable class="PARAMETER">count</replaceable> < 0. - Position before first row or after last row - if <replaceable class="PARAMETER">count</replaceable> is out of - range; in particular, ABSOLUTE 0 positions before first row. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>RELATIVE <replaceable class="PARAMETER">count</replaceable></term> - <listitem> - <para> - fetch the <replaceable class="PARAMETER">count</replaceable>'th - succeeding row, or the - abs(<replaceable class="PARAMETER">count</replaceable>)'th prior - row if <replaceable class="PARAMETER">count</replaceable> < 0. - RELATIVE 0 re-fetches current row, if any. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable class="PARAMETER">count</replaceable></term> - <listitem> - <para> - fetch the next <replaceable class="PARAMETER">count</replaceable> - rows (same as FORWARD <replaceable class="PARAMETER">count</replaceable>). - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>ALL</term> - <listitem> - <para> - fetch all remaining rows (same as FORWARD ALL). - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>FORWARD</term> - <listitem> - <para> - fetch next row (same as NEXT). - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>FORWARD <replaceable class="PARAMETER">count</replaceable></term> - <listitem> - <para> - fetch next <replaceable class="PARAMETER">count</replaceable> - rows. FORWARD 0 re-fetches current row. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>FORWARD ALL</term> - <listitem> - <para> - fetch all remaining rows. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>BACKWARD</term> - <listitem> - <para> - fetch prior row (same as PRIOR). - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>BACKWARD <replaceable class="PARAMETER">count</replaceable></term> - <listitem> - <para> - fetch prior <replaceable class="PARAMETER">count</replaceable> - rows (scanning backwards). BACKWARD 0 re-fetches current row. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>BACKWARD ALL</term> - <listitem> - <para> - fetch all prior rows (scanning backwards). - </para> - </listitem> - </varlistentry> - - </variablelist> - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable class="PARAMETER">count</replaceable></term> - <listitem> - <para> - <replaceable class="PARAMETER">count</replaceable> - is a possibly-signed integer constant, determining the location - or number of rows to fetch. For FORWARD and BACKWARD cases, - specifying a negative <replaceable - class="PARAMETER">count</replaceable> - is equivalent to changing the sense of FORWARD and BACKWARD. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable class="PARAMETER">cursor</replaceable></term> - <listitem> - <para> - An open cursor's name. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-FETCH-2"> - <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> - <varlistentry> - <term><computeroutput> -WARNING: PerformPortalFetch: portal "<replaceable class="PARAMETER">cursor</replaceable>" not found - </computeroutput></term> - <listitem> - <para> - There is no cursor with the specified name. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-FETCH-1"> - <refsect1info> - <date>2003-03-11</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <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 + 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, or on any particular row of the result, or after the last row + 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 @@ -286,166 +58,338 @@ WARNING: PerformPortalFetch: portal "<replaceable class="PARAMETER">cursor</rep </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. + 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 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 + 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> - <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"> - <refsect2info> - <date>2003-03-11</date> - </refsect2info> - <title> - Notes - </title> - - <para> - The cursor should be declared with the SCROLL option if one intends to - use any variants of <command>FETCH</> other than <command>FETCH NEXT</> - or <command>FETCH FORWARD</> with a positive count. For simple queries - <productname>PostgreSQL</productname> will allow backwards fetch from - cursors not declared with SCROLL, but this behavior is best not - relied on. If the cursor is declared with NO SCROLL, no backward - fetches are allowed. - </para> - - <para> - ABSOLUTE fetches are not any faster than navigating to the desired row - with a relative move: the underlying implementation must traverse all - the intermediate rows anyway. Negative absolute fetches are even worse: - the query must be read to the end to find the last row, and then - traversed backward from there. However, rewinding to the start of the - query (as with FETCH ABSOLUTE 0) is fast. - </para> - - <para> - Updating data via a cursor is not supported by - <productname>PostgreSQL</productname>, because mapping cursor - 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> - <xref linkend="sql-declare" endterm="sql-declare-title"> - is used to define a cursor. - Use - <xref linkend="sql-move" endterm="sql-move-title"> - to change cursor position without retrieving data. - </para> - </refsect2> + <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> + <varlistentry> + <term><replaceable class="PARAMETER">direction</replaceable></term> + <listitem> + <para> + <replaceable class="PARAMETER">direction</replaceable> defines + the fetch direction and number of rows to fetch. It can be one + of the following: + + <variablelist> + <varlistentry> + <term><literal>NEXT</literal></term> + <listitem> + <para> + Fetch the next row. This is the default if <replaceable + class="PARAMETER">direction</replaceable> is omitted. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>PRIOR</literal></term> + <listitem> + <para> + Fetch the prior row. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>FIRST</literal></term> + <listitem> + <para> + Fetch the first row of the query (same as <literal>ABSOLUTE 1</literal>). + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>LAST</literal></term> + <listitem> + <para> + Fetch the last row of the query (same as <literal>ABSOLUTE -1</literal>). + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>ABSOLUTE <replaceable class="PARAMETER">count</replaceable></literal></term> + <listitem> + <para> + Fetch the <replaceable + class="PARAMETER">count</replaceable>'th row of the query, + or the <literal>abs(<replaceable + class="PARAMETER">count</replaceable>)</literal>'th row from + the end if <replaceable + class="PARAMETER">count</replaceable> is negative. Position + before first row or after last row if <replaceable + class="PARAMETER">count</replaceable> is out of range; in + particular, <literal>ABSOLUTE 0</literal> positions before + the first row. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>RELATIVE <replaceable class="PARAMETER">count</replaceable></literal></term> + <listitem> + <para> + Fetch the <replaceable + class="PARAMETER">count</replaceable>'th succeeding row, or + the <literal>abs(<replaceable + class="PARAMETER">count</replaceable>)</literal>'th prior + row if <replaceable class="PARAMETER">count</replaceable> is + negative. <literal>RELATIVE 0</literal> re-fetches the + current row, if any. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="PARAMETER">count</replaceable></term> + <listitem> + <para> + Fetch the next <replaceable + class="PARAMETER">count</replaceable> rows (same as + <literal>FORWARD <replaceable + class="PARAMETER">count</replaceable></literal>). + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>ALL</literal></term> + <listitem> + <para> + Fetch all remaining rows (same as <literal>FORWARD ALL</literal>). + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>FORWARD</literal></term> + <listitem> + <para> + Fetch the next row (same as <literal>NEXT</literal>). + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>FORWARD <replaceable class="PARAMETER">count</replaceable></literal></term> + <listitem> + <para> + Fetch the next <replaceable + class="PARAMETER">count</replaceable> rows. + <literal>FORWARD 0</literal> re-fetches the current row. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>FORWARD ALL</literal></term> + <listitem> + <para> + Fetch all remaining rows. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>BACKWARD</literal></term> + <listitem> + <para> + Fetch the prior row (same as <literal>PRIOR</literal>). + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>BACKWARD <replaceable class="PARAMETER">count</replaceable></literal></term> + <listitem> + <para> + Fetch the prior <replaceable + class="PARAMETER">count</replaceable> rows (scanning + backwards). <literal>BACKWARD 0</literal> re-fetches the + current row. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>BACKWARD ALL</literal></term> + <listitem> + <para> + Fetch all prior rows (scanning backwards). + </para> + </listitem> + </varlistentry> + </variablelist> + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="PARAMETER">count</replaceable></term> + <listitem> + <para> + <replaceable class="PARAMETER">count</replaceable> is a + possibly-signed integer constant, determining the location or + number of rows to fetch. For <literal>FORWARD</> and + <literal>BACKWARD</> cases, specifying a negative <replaceable + class="PARAMETER">count</replaceable> is equivalent to changing + the sense of <literal>FORWARD</> and <literal>BACKWARD</>. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="PARAMETER">cursor</replaceable></term> + <listitem> + <para> + An open cursor's name. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Diagnostics</title> + + <variablelist> + <varlistentry> + <term><computeroutput>WARNING: PerformPortalFetch: portal "<replaceable class="PARAMETER">cursor</replaceable>" not found</computeroutput></term> + <listitem> + <para> + There is no cursor with the specified name. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Notes</title> + + <para> + The cursor should be declared with the <literal>SCROLL</literal> + option if one intends to use any variants of <command>FETCH</> + other than <command>FETCH NEXT</> or <command>FETCH FORWARD</> with + a positive count. For simple queries + <productname>PostgreSQL</productname> will allow backwards fetch + from cursors not declared with <literal>SCROLL</literal>, but this + behavior is best not relied on. If the cursor is declared with + <literal>NO SCROLL</literal>, no backward fetches are allowed. + </para> + + <para> + <literal>ABSOLUTE</literal> fetches are not any faster than + navigating to the desired row with a relative move: the underlying + implementation must traverse all the intermediate rows anyway. + Negative absolute fetches are even worse: the query must be read to + the end to find the last row, and then traversed backward from + there. However, rewinding to the start of the query (as with + <literal>FETCH ABSOLUTE 0</literal>) is fast. + </para> + + <para> + Updating data via a cursor is currently not supported by + <productname>PostgreSQL</productname>. + </para> + + <para> + <xref linkend="sql-declare" endterm="sql-declare-title"> + is used to define a cursor. Use + <xref linkend="sql-move" endterm="sql-move-title"> + to change cursor position without retrieving data. + </para> </refsect1> - <refsect1 id="R1-SQL-FETCH-2"> - <title> - Usage - </title> + <refsect1> + <title>Examples</title> <para> The following example traverses a table using a cursor. <programlisting> --- Set up and use a cursor: - BEGIN WORK; + +-- Set up a cursor: DECLARE liahona SCROLL CURSOR FOR SELECT * FROM films; --- Fetch first 5 rows in the cursor liahona: -FETCH FORWARD 5 IN liahona; +-- Fetch the first 5 rows in the cursor 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 BL102 | The African Queen | 101 | 1951-08-11 | Romantic | 01:43 JL201 | Une Femme est une Femme | 102 | 1961-03-12 | Romantic | 01:25 P_301 | Vertigo | 103 | 1958-11-14 | Action | 02:08 P_302 | Becket | 103 | 1964-02-03 | Drama | 02:28 -</computeroutput> --- Fetch previous row: +-- Fetch the previous row: 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 -</computeroutput> - --- close the cursor and commit work: +-- Close the cursor and end the transaction: CLOSE liahona; COMMIT WORK; </programlisting> </para> </refsect1> - <refsect1 id="R1-SQL-FETCH-3"> - <title> - Compatibility - </title> - - <refsect2 id="R2-SQL-FETCH-4"> - <refsect2info> - <date>2003-03-11</date> - </refsect2info> - <title> - SQL92 - </title> - - <para> - <acronym>SQL92</acronym> defines <command>FETCH</command> for use - in embedded contexts only. Therefore, it describes placing the - results into explicit variables using an <literal>INTO</> clause, - for example: - - <synopsis> -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> - The <command>FETCH</command> forms involving FORWARD and BACKWARD - (including the forms FETCH <replaceable - class="PARAMETER">count</replaceable> and FETCH ALL, in which - FORWARD is implicit) are <productname>PostgreSQL</productname> - extensions. - </para> - - <para> - <acronym>SQL92</acronym> allows only <literal>FROM</> preceding the - cursor name; the option to use <literal>IN</> is an extension. - </para> - </refsect2> + <refsect1> + <title>Compatibility</title> + + <para> + The SQL standard defines <command>FETCH</command> for use in + embedded SQL only. This variant of <command>FETCH</command> + described here returns the data as if it were a + <command>SELECT</command> result rather than placing it in host + variables. Other than this point, <command>FETCH</command> is + fully upward-compatible with the SQL standard. + </para> + + <para> + The <command>FETCH</command> forms involving + <literal>FORWARD</literal> and <literal>BACKWARD</literal>, as well + as the forms <literal>FETCH <replaceable + class="PARAMETER">count</replaceable></literal> and <literal>FETCH + ALL</literal>, in which <literal>FORWARD</literal> is implicit, are + <productname>PostgreSQL</productname> extensions. + </para> + + <para> + The SQL standard allows only <literal>FROM</> preceding the cursor + name; the option to use <literal>IN</> is an extension. + </para> </refsect1> </refentry> diff --git a/doc/src/sgml/ref/move.sgml b/doc/src/sgml/ref/move.sgml index cd6d6aca0fd357ef64ff12f54d980fa31118ce13..d60ec29c3b56e1b1ce48de3bf52c81faaec2e4c6 100644 --- a/doc/src/sgml/ref/move.sgml +++ b/doc/src/sgml/ref/move.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,112 +8,74 @@ PostgreSQL documentation <refentrytitle id="SQL-MOVE-TITLE">MOVE</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - MOVE - </refname> - <refpurpose> - reposition a cursor - </refpurpose> - </refnamediv> + <refname>MOVE</refname> + <refpurpose>reposition a cursor</refpurpose> + </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>1999-07-20</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> MOVE [ <replaceable class="PARAMETER">direction</replaceable> { FROM | IN } ] <replaceable class="PARAMETER">cursor</replaceable> - </synopsis> +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-MOVE-1"> - <refsect1info> - <date>1998-09-24</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <title>Description</title> + <para> <command>MOVE</command> repositions a cursor without retrieving any data. <command>MOVE</command> works exactly like the <command>FETCH</command> command, except it only repositions the cursor and does not return rows. </para> + <para> Refer to <xref linkend="sql-fetch" endterm="sql-fetch-title"> for details on syntax and usage. </para> + </refsect1> - <refsect2 id="R2-SQL-MOVE-3"> - <refsect2info> - <date>1998-09-24</date> - </refsect2info> - <title> - Notes - </title> - - <para> - The count returned in <command>MOVE</command>'s status string is the - count of the number of rows that would have been returned by the - equivalent <command>FETCH</command> command. - </para> + <refsect1> + <title>Diagnostics</title> - <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> + <para> + The count returned in <command>MOVE</command>'s status string is + the count of the number of rows that would have been returned by + the equivalent <command>FETCH</command> command. + </para> </refsect1> - <refsect1 id="R1-SQL-MOVE-2"> - <title> - Usage - </title> - <para> - Set up and use a cursor: + <refsect1> + <title>Examples</title> <programlisting> BEGIN WORK; DECLARE liahona CURSOR FOR SELECT * FROM films; --- Skip first 5 rows: + +-- Skip the first 5 rows: MOVE FORWARD 5 IN liahona; -<computeroutput> MOVE 5 -</computeroutput> --- Fetch 6th row in the cursor liahona: -FETCH 1 IN liahona; -<computeroutput> - code | title | did | date_prod | kind | len --------+--------+-----+-----------+--------+------- - P_303 | 48 Hrs | 103 | 1982-10-22| Action | 01:37 + +-- Fetch the 6th row from the cursor liahona: +FETCH 1 FROM liahona; + code | title | did | date_prod | kind | len +-------+--------+-----+------------+--------+------- + P_303 | 48 Hrs | 103 | 1982-10-22 | Action | 01:37 (1 row) -</computeroutput> --- close the cursor liahona and commit work: + +-- Close the cursor liahona and end the transaction: CLOSE liahona; COMMIT WORK; </programlisting> - </para> </refsect1> - <refsect1 id="R1-SQL-MOVE-3"> - <title> - Compatibility - </title> + <refsect1> + <title>Compatibility</title> - <refsect2 id="R2-SQL-MOVE-4"> - <refsect2info> - <date>1998-09-01</date> - </refsect2info> - <title> - SQL92 - </title> - <para> - There is no <acronym>SQL92</acronym> <command>MOVE</command> statement. - </para> - </refsect2> + <para> + There is no <command>MOVE</command> statement in the SQL standard. + </para> </refsect1> </refentry> diff --git a/doc/src/sgml/ref/reset.sgml b/doc/src/sgml/ref/reset.sgml index bb6860657d202929b97e32814f74c55a9168a74e..87d9de309745fec8f6b20e1d0c7ccc02c3b442a4 100644 --- a/doc/src/sgml/ref/reset.sgml +++ b/doc/src/sgml/ref/reset.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,95 +8,97 @@ PostgreSQL documentation <refentrytitle id="SQL-RESET-TITLE">RESET</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> <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> + <refsynopsisdiv> - <synopsis> -RESET <replaceable class="PARAMETER">variable</replaceable> - </synopsis> - <synopsis> +<synopsis> +RESET <replaceable class="PARAMETER">parameter</replaceable> +</synopsis> +<synopsis> RESET ALL - </synopsis> - - <refsect2 id="R2-SQL-RESET-1"> - <title>Inputs</title> - <para> - <variablelist> - <varlistentry> - <term><replaceable class="PARAMETER">variable</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> - Resets all settable run-time parameters to default values. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - +</synopsis> </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> + 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> - The default value is defined as the value that the variable would + <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 postmaster's configuration file or command-line - switches, or per-database or per-user default settings. See - <xref linkend="runtime-config"> for details. + 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</> manual page for details on the transaction - behavior of <command>RESET</>. + See the <command>SET</> reference page for details on the + transaction behavior of <command>RESET</>. </para> + </refsect1> + <refsect1> + <title>Parameters</title> + + <variablelist> + <varlistentry> + <term><replaceable class="PARAMETER">parameter</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><literal>ALL</literal></term> + <listitem> + <para> + Resets all settable run-time parameters to default values. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> <refsect1> <title>Diagnostics</title> + <para> - See under the <xref linkend="sql-set" - endterm="sql-set-title"> command. + See under the <xref linkend="sql-set" endterm="sql-set-title">. </para> </refsect1> <refsect1> <title>Examples</title> - <para> - Set <varname>DateStyle</> to its default value: + <para> + Set <varname>datestyle</> to its default value: <screen> -RESET DateStyle; +RESET datestyle; </screen> </para> <para> Set <varname>geqo</> to its default value: - -<screen> -RESET GEQO; +<screen> +RESET geqo; </screen> </para> </refsect1> diff --git a/doc/src/sgml/ref/select.sgml b/doc/src/sgml/ref/select.sgml index 6362840ec03d103e165a7b6dd8f54fdf0692f6cd..f983b2a8213f916f1be22edbf2df61afb38d2c8f 100644 --- a/doc/src/sgml/ref/select.sgml +++ b/doc/src/sgml/ref/select.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,941 +8,814 @@ PostgreSQL documentation <refentrytitle id="sql-select-title">SELECT</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - SELECT - </refname> - <refpurpose> - retrieve rows from a table or view - </refpurpose></refnamediv> + <refname>SELECT</refname> + <refpurpose>retrieve rows from a table or view</refpurpose> + </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>2000-12-11</date> - </refsynopsisdivinfo> - <synopsis> -SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replaceable> [, ...] ) ] ] - * | <replaceable class="PARAMETER">expression</replaceable> [ AS <replaceable class="PARAMETER">output_name</replaceable> ] [, ...] - [ FROM <replaceable class="PARAMETER">from_item</replaceable> [, ...] ] - [ WHERE <replaceable class="PARAMETER">condition</replaceable> ] - [ GROUP BY <replaceable class="PARAMETER">expression</replaceable> [, ...] ] - [ HAVING <replaceable class="PARAMETER">condition</replaceable> [, ...] ] - [ { UNION | INTERSECT | EXCEPT } [ ALL ] <replaceable class="PARAMETER">select</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> ] - [ FOR UPDATE [ OF <replaceable class="PARAMETER">tablename</replaceable> [, ...] ] ] - -where <replaceable class="PARAMETER">from_item</replaceable> can be: - -[ ONLY ] <replaceable class="PARAMETER">table_name</replaceable> [ * ] - [ [ AS ] <replaceable class="PARAMETER">alias</replaceable> [ ( <replaceable class="PARAMETER">column_alias_list</replaceable> ) ] ] -| -( <replaceable class="PARAMETER">select</replaceable> ) - [ AS ] <replaceable class="PARAMETER">alias</replaceable> [ ( <replaceable class="PARAMETER">column_alias_list</replaceable> ) ] -| -<replaceable class="PARAMETER">table_function_name</replaceable> ( [ <replaceable class="parameter">argument</replaceable> [, ...] ] ) - [ AS ] <replaceable class="PARAMETER">alias</replaceable> [ ( <replaceable class="PARAMETER">column_alias_list</replaceable> | <replaceable class="PARAMETER">column_definition_list</replaceable> ) ] -| -<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"> - <refsect2info> - <date>2000-12-11</date> - </refsect2info> - <title> - Inputs - </title> +<synopsis> +SELECT [ ALL | DISTINCT [ ON ( <replaceable class="parameter">expression</replaceable> [, ...] ) ] ] + * | <replaceable class="parameter">expression</replaceable> [ AS <replaceable class="parameter">output_name</replaceable> ] [, ...] + [ FROM <replaceable class="parameter">from_item</replaceable> [, ...] ] + [ WHERE <replaceable class="parameter">condition</replaceable> ] + [ GROUP BY <replaceable class="parameter">expression</replaceable> [, ...] ] + [ HAVING <replaceable class="parameter">condition</replaceable> [, ...] ] + [ { UNION | INTERSECT | EXCEPT } [ ALL ] <replaceable class="parameter">select</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> ] + [ FOR UPDATE [ OF <replaceable class="parameter">table_name</replaceable> [, ...] ] ] + +where <replaceable class="parameter">from_item</replaceable> can be one of: + + [ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ] [ [ AS ] <replaceable class="parameter">alias</replaceable> [ ( <replaceable class="parameter">column_alias</replaceable> [, ...] ) ] ] + ( <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> [, ...] ) ] + <replaceable class="parameter">function_name</replaceable> ( [ <replaceable class="parameter">argument</replaceable> [, ...] ] ) AS ( <replaceable class="parameter">column_definition</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> + +<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 +... is mandatory, not optional). What's the best way to fix +this?</comment> + + </refsynopsisdiv> + + <refsect1> + <title>Description</title> + + <para> + <command>SELECT</command> retrieves rows from one or more tables. + The general processing of <command>SELECT</command> is as follows: + + <orderedlist> + <listitem> + <para> + 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> + </listitem> + + <listitem> + <para> + If the <literal>WHERE</literal> clause is specified, all rows + that do not satisfy the condition are eliminated from the + output. (See <xref linkend="sql-where" + endterm="sql-where-title"> below.) + </para> + </listitem> + + <listitem> + <para> + 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> + </listitem> + + <listitem> + <para> + Using the operators <literal>UNION</literal>, + <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> + </listitem> + + <listitem> + <para> + The actual output rows are computed the + <command>SELECT</command> output expressions for each selected + row. (See + <xref linkend="sql-select-list" endterm="sql-select-list-title"> + below.) + </para> + </listitem> + + <listitem> + <para> + If the <literal>ORDER BY</literal> clause is specified, the + returned rows are sorted in the specified order. If + <literal>ORDER BY</literal> is not given, the rows are returned + in whatever order the system finds fastest to produce. (See + <xref linkend="sql-orderby" endterm="sql-orderby-title"> below.) + </para> + </listitem> + + <listitem> + <para> + If the <literal>LIMIT</literal> or <literal>OFFSET</literal> + clause is specified, the <command>SELECT</command> statement + only returns a subset of the result rows. (See <xref + linkend="sql-limit" endterm="sql-limit-title"> below.) + </para> + </listitem> + + <listitem> + <para> + <literal>DISTINCT</literal> eliminates duplicate rows from the + result. <literal>DISTINCT ON</literal> eliminates rows that + match on all the specified expressions. <literal>ALL</literal> + (the default) will return all candidate rows, including + duplicates. (See <xref linkend="sql-distinct" + endterm="sql-distinct-title"> below.) + </para> + </listitem> + + <listitem> + <para> + The <literal>FOR UPDATE</literal> clause causes the + <command>SELECT</command> statement to lock the selected rows + against concurrent updates. (See <xref linkend="sql-for-update" + endterm="sql-for-update-title"> below.) + </para> + </listitem> + </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> - <term><replaceable class="PARAMETER">expression</replaceable></term> + <term><replaceable class="parameter">table_name</replaceable></term> <listitem> <para> - The name of a table's column or an expression. + The name (optionally schema-qualified) of an existing table or + view. If <literal>ONLY</> is specified, only that table is + scanned. If <literal>ONLY</> is not specified, the table and + all its descendant tables (if any) are scanned. <literal>*</> + can be appended to the table name to indicate that descendant + tables are to be scanned, but 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 + <varname>sql_interitance</varname> configuration option. </para> </listitem> </varlistentry> <varlistentry> - <term><replaceable class="PARAMETER">output_name</replaceable></term> + <term><replaceable class="parameter">alias</replaceable></term> <listitem> <para> - Specifies another name for an output column using - the AS clause. This name is primarily used to label the column - for display. It can also be used to refer to the column's value in - ORDER BY and GROUP BY clauses. But the - <replaceable class="PARAMETER">output_name</replaceable> - cannot be used in the WHERE or HAVING clauses; write out the - expression instead. + A substitute name for the <literal>FROM</> item containing the + alias. An alias is used for brevity or to eliminate ambiguity + 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> </listitem> </varlistentry> <varlistentry> - <term><replaceable class="PARAMETER">from_item</replaceable></term> + <term><replaceable class="parameter">select</replaceable></term> <listitem> <para> - A table reference, sub-SELECT, table function, or JOIN clause. See below for details. + A sub-<command>SELECT</command> can appear in the + <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> </listitem> </varlistentry> - + <varlistentry> - <term><replaceable class="PARAMETER">condition</replaceable></term> + <term><replaceable class="parameter">function_name</replaceable></term> <listitem> <para> - A Boolean expression giving a result of true or false. - See the WHERE and HAVING clause descriptions below. + 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> </listitem> </varlistentry> <varlistentry> - <term><replaceable class="PARAMETER">select</replaceable></term> + <term><replaceable class="parameter">join_type</replaceable></term> <listitem> <para> - A select statement with all features except the ORDER BY, - LIMIT/OFFSET, and FOR UPDATE clauses (even those can be used when the - select is parenthesized). + One of + <itemizedlist> + <listitem> + <para><literal>[ INNER ] JOIN</literal></para> + </listitem> + <listitem> + <para><literal>LEFT [ OUTER ] JOIN</literal></para> + </listitem> + <listitem> + <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> + + For the <literal>INNER</> and <literal>OUTER</> join types, a + join condition must be specified, namely exactly one of + <literal>NATURAL</>, <literal>ON <replaceable + class="parameter">join_condition</replaceable></literal>, or + <literal>USING (<replaceable + class="parameter">join_column</replaceable> [, ...])</literal>. + See below for the meaning. For <literal>CROSS JOIN</literal>, + none of these clauses may appear. </para> - </listitem> - </varlistentry> - - </variablelist> - </para> - <para> - FROM items can contain: - <variablelist> - - <varlistentry> - <term><replaceable class="PARAMETER">table_name</replaceable></term> - <listitem> <para> - The name (optionally schema-qualified) of an existing table or view. - If <literal>ONLY</> is specified, only that table is scanned. If - <literal>ONLY</> is not specified, the table and all its descendant - tables (if any) are scanned. <literal>*</> can be appended to the - table name to indicate that descendant tables are to be scanned, but - 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. + A <literal>JOIN</literal> clause, combines two + <literal>FROM</> items. (Use parentheses if necessary to + determine the order of nesting.) </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable class="PARAMETER">alias</replaceable></term> - <listitem> + <para> - A substitute name for the FROM item containing the alias. - An alias is used for brevity or to eliminate ambiguity 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 - 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. + <literal>CROSS JOIN</> and <literal>INNER JOIN</literal> + 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> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable class="PARAMETER">select</replaceable></term> - <listitem> + <para> - A sub-SELECT can appear in the FROM clause. This acts as though - its output were created as a temporary table for the duration of - this single SELECT command. Note that the sub-SELECT must be - surrounded by parentheses, and an alias <emphasis>must</emphasis> - be provided for it. + <literal>LEFT OUTER JOIN</> returns all rows in the qualified + Cartesian product (i.e., all combined rows that pass its join + condition), plus one copy of each row in the left-hand table + for which there was no right-hand row that passed the join + condition. This left-hand row is extended to the full width + of the joined table by inserting null values for the + right-hand columns. Note that only the <literal>JOIN</> + clauses own condition is considered while deciding which rows + have matches. Outer conditions are applied afterwards. </para> - </listitem> - </varlistentry> - <varlistentry> - <term><replaceable class="PARAMETER">table function</replaceable></term> - <listitem> <para> - A table function can appear in the FROM clause. This acts as though - its output were created as a temporary table for the duration of - this single SELECT 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 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. + Conversely, <literal>RIGHT OUTER JOIN</> returns all the + joined rows, plus one row for each unmatched right-hand row + (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> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable class="PARAMETER">join_type</replaceable></term> - <listitem> + <para> - One of - <command>[ INNER ] JOIN</command>, - <command>LEFT [ OUTER ] JOIN</command>, - <command>RIGHT [ OUTER ] JOIN</command>, - <command>FULL [ OUTER ] JOIN</command>, or - <command>CROSS JOIN</command>. - For INNER and OUTER join types, exactly one of NATURAL, - ON <replaceable class="PARAMETER">join_condition</replaceable>, or - USING ( <replaceable class="PARAMETER">join_column_list</replaceable> ) - must appear. For CROSS JOIN, none of these items may appear. + <literal>FULL OUTER JOIN</> returns all the joined rows, plus + one row for each unmatched left-hand row (extended with nulls + on the right), plus one row for each unmatched right-hand row + (extended with nulls on the left). </para> </listitem> </varlistentry> <varlistentry> - <term><replaceable class="PARAMETER">join_condition</replaceable></term> + <term><literal>ON <replaceable class="parameter">join_condition</replaceable></literal></term> <listitem> <para> - A qualification condition. This is similar to the WHERE condition - except that it only applies to the two from_items being joined in - this JOIN clause. + <replaceable class="parameter">join_condition</replaceable> is + an expression resulting in a value of type + <type>boolean</type> (similar to a <literal>WHERE</literal> + clause) that specifies which rows in a join are considered to + match. </para> </listitem> </varlistentry> <varlistentry> - <term><replaceable class="PARAMETER">join_column_list</replaceable></term> + <term><literal>USING (<replaceable class="parameter">join_column</replaceable> [, ...])</literal></term> <listitem> <para> - A USING column list ( a, b, ... ) is shorthand for the ON condition - left_table.a = right_table.a AND left_table.b = right_table.b ... + A clause of the form <literal>USING ( a, b, ... )</literal> is + shorthand for <literal>ON left_table.a = right_table.a AND + 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> </listitem> </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2 id="R2-SQL-SELECT-2"> - <refsect2info> - <date>1998-09-24</date> - </refsect2info> - <title> - Outputs - </title> - <para> - - <variablelist> <varlistentry> - <term>Rows</term> + <term><literal>NATURAL</literal></term> <listitem> <para> - The complete set of rows resulting from the query specification. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - <returnvalue><replaceable>count</replaceable></returnvalue> - </term> - <listitem> - <para> - The count of rows returned by the query. + <literal>NATURAL</literal> is shorthand for a + <literal>USING</> list that mentions all columns in the two + tables that have the same names. </para> </listitem> </varlistentry> </variablelist> </para> </refsect2> - </refsynopsisdiv> - - <refsect1 id="R1-SQL-SELECT-1"> - <refsect1info> - <date>2000-12-11</date> - </refsect1info> - <title> - Description - </title> - <para> - <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> - Actually, the returned rows are not directly the rows produced by the - FROM/WHERE/GROUP BY/HAVING clauses; rather, the output rows are formed - by computing the SELECT output expressions for each selected row. - <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> - DISTINCT will eliminate duplicate rows from the result. ALL (the - default) will return all candidate rows, including duplicates. - </para> - - <para> - DISTINCT ON eliminates rows that match on all the - specified expressions, keeping only the first row of each set of - duplicates. The DISTINCT ON expressions are interpreted using the - same rules as for ORDER BY items; see below. - Note that the <quote>first row</quote> of each set is unpredictable - unless ORDER BY is used to ensure that the desired - row appears first. For example, - <programlisting> - SELECT DISTINCT ON (location) location, time, report - 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> - The GROUP BY clause allows a user to divide a table - into groups of rows that match on one or more values. - (See <xref linkend="sql-groupby" endterm="sql-groupby-title">.) - </para> - - <para> - The HAVING clause allows selection of only those groups of rows - meeting the specified condition. - (See <xref linkend="sql-having" endterm="sql-having-title">.) - </para> - - <para> - The ORDER BY clause causes the returned rows to be sorted in a specified - order. If ORDER BY is not given, the rows are returned in whatever order - the system finds cheapest to produce. - (See <xref linkend="sql-orderby" endterm="sql-orderby-title">.) - </para> - - <para> - <command>SELECT</command> queries can be combined using UNION, - INTERSECT, and EXCEPT operators. Use parentheses if necessary to - determine the ordering of these operators. - </para> - - <para> - The UNION operator computes the collection of rows - returned by the queries involved. - Duplicate rows are eliminated unless ALL is specified. - (See <xref linkend="sql-union" endterm="sql-union-title">.) - </para> - - <para> - The INTERSECT operator computes the rows that are common to both queries. - Duplicate rows are eliminated unless ALL is specified. - (See <xref linkend="sql-intersect" endterm="sql-intersect-title">.) - </para> - <para> - The EXCEPT operator computes the rows returned by the first query but - not the second query. - Duplicate rows are eliminated unless ALL is specified. - (See <xref linkend="sql-except" endterm="sql-except-title">.) - </para> - - <para> - The LIMIT clause allows a subset of the rows produced by the query - to be returned to the user. - (See <xref linkend="sql-limit" endterm="sql-limit-title">.) - </para> - - <para> - The FOR UPDATE clause causes the <command>SELECT</command> - statement to lock the selected rows against concurrent updates. - </para> - - <para> - You must have SELECT privilege to a table to read its values - (See the <command>GRANT</command>/<command>REVOKE</command> statements). - Use of FOR UPDATE requires UPDATE privilege as well. - </para> - - <refsect2 id="SQL-FROM"> - <refsect2info> - <date>2000-12-11</date> - </refsect2info> - <title id="sql-from-title"> - FROM Clause - </title> + <refsect2 id="SQL-WHERE"> + <title id="sql-where-title"><literal>WHERE</literal> Clause</title> <para> - The FROM clause specifies one or more source tables for the - <command>SELECT</command>. If multiple sources are specified, the - result is conceptually the Cartesian product of all the rows in - all the sources --- but usually qualification conditions are added - to restrict the returned rows to a small subset of the Cartesian - product. + The optional <literal>WHERE</literal> clause has the general form +<synopsis> +WHERE <replaceable class="parameter">condition</replaceable> +</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> + </refsect2> + + <refsect2 id="SQL-GROUPBY"> + <title id="sql-groupby-title"><literal>GROUP BY</literal> Clause</title> <para> - When a FROM item is a simple table name, it implicitly includes rows - from sub-tables (inheritance children) of the table. - <command>ONLY</command> will - suppress rows from sub-tables of the table. Before - <Productname>PostgreSQL</Productname> 7.1, - this was the default result, and adding sub-tables was done - by appending <command>*</command> to the table name. - This old behavior is available via the command - <command>SET SQL_Inheritance TO OFF</command>. + The optional <literal>GROUP BY</literal> clause has the general form +<synopsis> +GROUP BY <replaceable class="parameter">expression</replaceable> [, ...] +</synopsis> </para> <para> - A FROM item can also be a parenthesized - sub-<command>SELECT</command> (note that an alias clause is - required for a sub-<command>SELECT</command>!). This is an - extremely useful feature since it's the only way to get multiple - levels of grouping, aggregation, or sorting in a single query. + <literal>GROUP BY</literal> will condense into a single row all + 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> - A FROM item can be a table function (typically, a function that returns - multiple rows and/or columns, though actually any function can be used). - The function is invoked with the given argument value(s), and then its - output is scanned as though it were a table. + Aggregate functions, if any are used, are computed across all rows + making up each group, producing a separate value for each group + (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> + </refsect2> - <para> - In some cases it is useful to define table functions that can return - different column sets depending on how they are invoked. To support this, - the table function can be declared as returning the pseudo-type - <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> + <refsect2 id="SQL-HAVING"> + <title id="sql-having-title"><literal>HAVING</literal> Clause</title> <para> - Finally, a FROM item can be a JOIN clause, which combines two simpler - FROM items. (Use parentheses if necessary to determine the order - of nesting.) + The optional <literal>HAVING</literal> clause has the general form +<synopsis> +HAVING <replaceable class="parameter">condition</replaceable> +</synopsis> + where <replaceable class="parameter">condition</replaceable> is + the same as specified for the <literal>WHERE</literal> clause. </para> - + <para> - A CROSS JOIN or INNER JOIN is a simple Cartesian product, - the same as you get from listing the two items at the top level of FROM. - 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. + <literal>HAVING</literal> eliminates group rows that do not + satisfy the condition. <literal>HAVING</literal> is different + from <literal>WHERE</literal>: <literal>WHERE</literal> filters + individual rows before the application of <literal>GROUP + BY</literal>, while <literal>HAVING</literal> filters group rows + created by <literal>GROUP BY</literal>. Each column referenced in + <replaceable class="parameter">condition</replaceable> must + unambiguously reference a grouping column, unless the reference + appears within an aggregate function. </para> + </refsect2> + + <refsect2 id="SQL-UNION"> + <title id="sql-union-title"><literal>UNION</literal> Clause</title> <para> - LEFT OUTER JOIN returns all rows in the qualified Cartesian product - (i.e., all combined rows that pass its ON condition), plus one copy of each - row in the left-hand table for which there was no right-hand row that - passed the ON condition. This left-hand row is extended to the full - width of the joined table by inserting null values for the right-hand columns. - Note that only the <literal>JOIN</>'s own ON or USING condition is considered while - deciding which rows have matches. Outer ON or WHERE conditions are - applied afterwards. + The <literal>UNION</literal> clause has this general form: +<synopsis> +<replaceable class="parameter">select_statement</replaceable> UNION [ ALL ] <replaceable class="parameter">select_statement</replaceable> +</synopsis> + <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> - Conversely, RIGHT OUTER JOIN returns all the joined rows, plus one row - for each unmatched right-hand row (extended with nulls on the left). - This is just a notational - convenience, since you could convert it to a LEFT OUTER JOIN by switching - the left and right inputs. + The <literal>UNION</literal> operator computes the set union of + the rows returned by the involved <command>SELECT</command> + statements. A row is in the set union of two result sets if it + 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> - FULL OUTER JOIN returns all the joined rows, plus one row for each - unmatched left-hand row (extended with nulls on the right), plus one row - for each unmatched right-hand row (extended with nulls on the left). + The result of <literal>UNION</> does not contain any duplicate + rows unless the <literal>ALL</> option is specified. + <literal>ALL</> prevents elimination of duplicates. </para> - + <para> - For all the JOIN types except CROSS JOIN, you must write exactly one of - ON <replaceable class="PARAMETER">join_condition</replaceable>, - USING ( <replaceable class="PARAMETER">join_column_list</replaceable> ), - or NATURAL. ON is the most general case: you can write any qualification - expression involving the two tables to be joined. - A USING column list ( a, b, ... ) is shorthand for the ON condition - left_table.a = right_table.a AND left_table.b = right_table.b ... - 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. + Multiple <literal>UNION</> operators in the same + <command>SELECT</command> statement are evaluated left to right, + unless otherwise indicated by parentheses. </para> - </refsect2> - - <refsect2 id="SQL-WHERE"> - <refsect2info> - <date>2000-03-15</date> - </refsect2info> - <title id="sql-where-title"> - WHERE Clause - </title> - - <para> - The optional WHERE condition has the general form: - - <synopsis> -WHERE <replaceable class="PARAMETER">boolean_expr</replaceable> - </synopsis> - <replaceable class="PARAMETER">boolean_expr</replaceable> - 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: =, <, <=, >, >= or <>, - 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> - </refsect2> - - <refsect2 id="SQL-GROUPBY"> - <refsect2info> - <date>2000-03-15</date> - </refsect2info> - <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> + Currently, <literal>FOR UPDATE</> may not be specified either for + a <literal>UNION</> result or for the inputs of <literal>UNION</>. </para> + </refsect2> - <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> + <refsect2 id="SQL-INTERSECT"> + <title id="sql-intersect-title"><literal>INTERSECT</literal> Clause</title> <para> - A GROUP BY item can be an input column name, or the name or - ordinal number of an output column (<command>SELECT</command> - expression), or it can be an arbitrary expression formed from - input-column values. In case of ambiguity, a GROUP BY name will - be interpreted as an input-column name rather than an output - column name. + The <literal>INTERSECT</literal> clause has this general form: +<synopsis> +<replaceable class="parameter">select_statement</replaceable> INTERSECT [ ALL ] <replaceable class="parameter">select_statement</replaceable> +</synopsis> + <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. </para> - </refsect2> - <refsect2 id="SQL-HAVING"> - <refsect2info> - <date>2000-03-15</date> - </refsect2info> - <title id="sql-having-title"> - HAVING Clause - </title> <para> - The optional HAVING condition has the general form: - - <synopsis> -HAVING <replaceable class="PARAMETER">boolean_expr</replaceable> - </synopsis> - - where <replaceable class="PARAMETER">boolean_expr</replaceable> is the same - as specified for the WHERE clause. + The <literal>INTERSECT</literal> operator computes the set + intersection of the rows returned by the involved + <command>SELECT</command> statements. A row is in the + intersection of two result sets if it appears in both result sets. </para> <para> - HAVING specifies a grouped table derived by the elimination - of group rows that do not satisfy the - <replaceable class="PARAMETER">boolean_expr</replaceable>. - HAVING is different from WHERE: - WHERE filters individual rows before application of GROUP BY, - while HAVING filters group rows created by GROUP BY. + The result of <literal>INTERSECT</literal> does not contain any + duplicate rows unless the <literal>ALL</> option is specified. + 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> - Each column referenced in - <replaceable class="PARAMETER">boolean_expr</replaceable> shall unambiguously - reference a grouping column, unless the reference appears within an - aggregate function. + Multiple <literal>INTERSECT</literal> operators in the same + <command>SELECT</command> statement are evaluated left to right, + unless parentheses dictate otherwise. + <literal>INTERSECT</literal> binds more tightly than + <literal>UNION</literal>. That is, <literal>A UNION B INTERSECT + C</literal> will be read as <literal>A UNION (B INTERSECT + C)</literal>. </para> </refsect2> - - <refsect2 id="SQL-ORDERBY"> - <refsect2info> - <date>2000-03-15</date> - </refsect2info> - <title id="sql-orderby-title"> - ORDER BY Clause - </title> - <para> - <synopsis> -ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] - </synopsis></para> - + + <refsect2 id="SQL-EXCEPT"> + <title id="sql-except-title"><literal>EXCEPT</literal> Clause</title> + <para> - An ORDER BY item can be the name or ordinal number of an output - column (<command>SELECT</command> expression), or it can be an - arbitrary expression formed from input-column values. In case of - ambiguity, an ORDER BY name will be interpreted as an - output-column name. + The <literal>EXCEPT</literal> clause has this general form: +<synopsis> +<replaceable class="parameter">select_statement</replaceable> EXCEPT [ ALL ] <replaceable class="parameter">select_statement</replaceable> +</synopsis> + <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. </para> + <para> - The ordinal number refers to the ordinal (left-to-right) position - of the result column. This feature makes it possible to define an ordering - on the basis of a column that does not have a unique name. - This is never absolutely necessary because it is always possible - to assign a name to a result column using the AS clause, e.g.: - <programlisting> -SELECT title, date_prod + 1 AS newlen FROM films ORDER BY newlen; - </programlisting></para> + The <literal>EXCEPT</literal> operator computes the set of rows + that are in the result of the left <command>SELECT</command> + statement but not in the result of the right one. + </para> <para> - It is also possible to ORDER BY - arbitrary expressions (an extension to SQL92), - including fields that do not appear in the - SELECT result list. - Thus the following statement is legal: - <programlisting> -SELECT name FROM distributors ORDER BY code; - </programlisting> - A limitation of this feature is that an ORDER BY clause applying to the - result of a UNION, INTERSECT, or EXCEPT query may only specify an output - column name or number, not an expression. + The result of <literal>EXCEPT</literal> does not contain any + duplicate rows unless the <literal>ALL</> option is specified. + With <literal>ALL</>, a row that has m duplicates in the left + table and n duplicates in the right table will appear max(m-n,0) + times in the result set. </para> <para> - Note that if an ORDER BY item is a simple name that matches both - a result column name and an input column name, ORDER BY will interpret - it as the result column name. This is the opposite of the choice that - GROUP BY will make in the same situation. This inconsistency is - mandated by the SQL92 standard. + Multiple <literal>EXCEPT</literal> operators in the same + <command>SELECT</command> statement are evaluated left to right, + unless parentheses dictate otherwise. <literal>EXCEPT</> binds at + the same level as <literal>UNION</>. </para> - + </refsect2> + + <refsect2 id="sql-select-list"> + <title id="sql-select-list-title"><command>SELECT</command> List</title> + <para> - Optionally one may add the key word <literal>DESC</> (descending) - or <literal>ASC</> (ascending) after each column name in the - <literal>ORDER BY</> clause. If not specified, <literal>ASC</> is - assumed by default. Alternatively, a specific ordering operator - name may be specified. <literal>ASC</> is equivalent to - <literal>USING <</> and <literal>DESC</> is equivalent to - <literal>USING ></>. + The <command>SELECT</command> list (between the key words + <literal>SELECT</> and <literal>FROM</>) specifies expressions + 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> - The null value sorts higher than any other value in a domain. In other - words, with ascending sort order nulls sort at the end and with - descending sort order nulls sort at the beginning. + Instead of an expression, <literal>*</literal> can be written in + the output list as a shorthand for all the columns of the selected + rows. Also, one can write <literal><replaceable + class="parameter">table_name</replaceable>.*</literal> as a + shorthand for the columns coming from just that table. </para> + </refsect2> + + <refsect2 id="SQL-ORDERBY"> + <title id="sql-orderby-title"><literal>ORDER BY</literal> Clause</title> <para> - Data of character types is sorted according to the locale-specific - collation order that was established when the database cluster - was initialized. + The optional <literal>ORDER BY</literal> clause has this general form: +<synopsis> +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> - </refsect2> - - <refsect2 id="SQL-UNION"> - <refsect2info> - <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.) + The <literal>ORDER BY</literal> clause causes the result rows to + be sorted according to the specified expressions. If two rows are + equal according to the leftmost expression, the are compared + according to the next expression and so on. If they are equal + according to all specified expressions, they are returned in + random order. </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. + The ordinal number refers to the ordinal (left-to-right) position + of the result column. This feature makes it possible to define an + ordering on the basis of a column that does not have a unique + name. This is never absolutely necessary because it is always + possible to assign a name to a result column using the + <literal>AS</> clause. </para> <para> - The result of UNION does not contain any duplicate rows - unless the ALL option is specified. ALL prevents elimination of - duplicates. + It is also possible to use arbitrary expressions in the + <literal>ORDER BY</literal> clause, including columns that do not + appear in the <command>SELECT</command> result list. Thus the + following statement is valid: +<programlisting> +SELECT name FROM distributors ORDER BY code; +</programlisting> + A limitation of this feature is that an <literal>ORDER BY</> + clause applying to the result of a <literal>UNION</>, + <literal>INTERSECT</>, or <literal>EXCEPT</> clause may only + specify an output column name or number, not an expression. </para> <para> - Multiple UNION operators in the same <command>SELECT</command> - statement are evaluated left to right, unless otherwise indicated - by parentheses. + If an <literal>ORDER BY</> expression is a simple name that + matches both a result column name and an input column name, + <literal>ORDER BY</> will interpret it as the result column name. + This is the opposite of the choice that <literal>GROUP BY</> will + make in the same situation. This inconsistency is made to be + compatible with the SQL standard. </para> <para> - Currently, FOR UPDATE may not be specified either for a UNION result - or for the inputs of a UNION. + Optionally one may add the key word <literal>ASC</> (ascending) or + <literal>DESC</> (descending) after each expression in the + <literal>ORDER BY</> clause. If not specified, <literal>ASC</> is + assumed by default. Alternatively, a specific ordering operator + name may be specified in the <literal>USING</> clause. + <literal>ASC</> is equivalent to <literal>USING <</> and + <literal>DESC</> is equivalent to <literal>USING ></>. </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. + The null value sorts higher than any other value. In other words, + with ascending sort order, null values sort at the end, and with + descending sort order, null values sort at the beginning. </para> <para> - INTERSECT is similar to UNION, except that it produces only rows that - appear in both query outputs, rather than rows that appear in either. - </para> - - <para> - The result of INTERSECT does not contain any duplicate rows - unless the ALL option is specified. With ALL, a row that has - m duplicates in L and n duplicates in R will appear min(m,n) times. - </para> - - <para> - Multiple INTERSECT operators in the same SELECT statement are - evaluated left to right, unless parentheses dictate otherwise. - INTERSECT binds more tightly than UNION --- that is, - A UNION B INTERSECT C will be read as - A UNION (B INTERSECT C) unless otherwise specified by parentheses. + Data of character types is sorted according to the locale-specific + collation order that was established when the database cluster + was initialized. </para> </refsect2> + + <refsect2 id="SQL-LIMIT"> + <title id="sql-limit-title"><literal>LIMIT</literal> Clause</title> - <refsect2 id="SQL-EXCEPT"> - <refsect2info> - <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. + The <literal>LIMIT</literal> clause consists of two independent + 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> - EXCEPT is similar to UNION, except that it produces only rows that - appear in the left query's output but not in the right query's output. - </para> - - <para> - The result of EXCEPT does not contain any duplicate rows - unless the ALL option is specified. With ALL, a row that has - m duplicates in L and n duplicates in R will appear max(m-n,0) times. - </para> - - <para> - Multiple EXCEPT operators in the same SELECT statement are - evaluated left to right, unless parentheses dictate otherwise. - EXCEPT binds at the same level as UNION. + When using <literal>LIMIT</>, it is a good idea to use an + <literal>ORDER BY</> clause that constrains the result rows into a + 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> - </refsect2> - <refsect2 id="SQL-LIMIT"> - <refsect2info> - <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. + The query planner takes <literal>LIMIT</> into account when + generating a query plan, so you are very likely to get different + plans (yielding different row orders) depending on what you use + for <literal>LIMIT</> and <literal>OFFSET</>. Thus, using + 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> + </refsect2> - <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> + <refsect2 id="sql-distinct"> + <title id="sql-distinct-title"><literal>DISTINCT</literal> Clause</title> <para> - When using LIMIT, it is a good idea to use an ORDER BY clause that - constrains the result rows into a 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 ORDER BY. + If <literal>DISTINCT</> is specified, all duplicate rows are + 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> - As of <productname>PostgreSQL</productname> 7.0, the - query optimizer takes LIMIT into account when generating a query plan, - so you are very likely to get different plans (yielding different row - orders) depending on what you use for LIMIT and OFFSET. Thus, using - different LIMIT/OFFSET values to select different subsets of a query - result <emphasis>will give inconsistent results</emphasis> unless - you enforce a predictable result ordering with 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 ORDER BY is used to constrain the order. + <literal>DISTINCT ON ( <replaceable + class="parameter">expression</replaceable> [, ...] )</literal> + keeps only the first row of each set of rows where the given + expressions evaluate to equal. The <literal>DISTINCT ON</literal> + expressions are interpreted using the same rules as for + <literal>ORDER BY</> (see above). Note that the <quote>first + row</quote> of each set is unpredictable unless <literal>ORDER + BY</> is used to ensure that the desired row appears first. For + 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> </refsect2> <refsect2 id="SQL-FOR-UPDATE"> - <refsect2info> - <date>2002-08-28</date> - </refsect2info> - <title id="sql-for-update-title"> - FOR UPDATE Clause - </title> + <title id="sql-for-update-title"><literal>FOR UPDATE</literal> Clause</title> + <para> - <synopsis> - FOR UPDATE [ OF <replaceable class="PARAMETER">tablename</replaceable> [, ...] ] - </synopsis> + The <literal>FOR UPDATE</literal> clause has this form: +<synopsis> +FOR UPDATE [ OF <replaceable class="parameter">table_name</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 + <literal>FOR UPDATE</literal> causes the rows retrieved by the + <command>SELECT</command> statement 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, 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> - If specific tables are named in FOR UPDATE, then only rows coming - from those tables are locked; any other tables used in the - <command>SELECT</command> are simply read as usual. + If specific tables are named in <literal>FOR UPDATE</literal>, + then only rows coming from those tables are locked; any other + tables used in the <command>SELECT</command> are simply read as + usual. </para> <para> - FOR UPDATE cannot be used in contexts where returned rows can't be clearly - identified with individual table rows; for example it can't be used with - aggregation. + <literal>FOR UPDATE</literal> cannot be used in contexts where + returned rows can't be clearly identified with individual table + rows; for example it can't be used with aggregation. </para> <para> - FOR UPDATE may appear before LIMIT for compatibility with - pre-7.3 applications. However, it effectively executes after LIMIT, - and so that is the recommended place to write it. + <literal>FOR UPDATE</literal> may appear before + <literal>LIMIT</literal> for compatibility with PostgreSQL + versions before 7.3. It effectively executes after + <literal>LIMIT</literal>, however, and so that is the recommended + place to write it. </para> </refsect2> - </refsect1> - <refsect1 id="R1-SQL-SELECT-2"> - <title> - Usage - </title> + <refsect1> + <title>Examples</title> <para> To join the table <literal>films</literal> with the table <literal>distributors</literal>: - <programlisting> +<programlisting> SELECT f.title, f.did, d.name, f.date_prod, f.kind FROM distributors d, films f WHERE f.did = d.did - title | did | name | date_prod | kind ----------------------------+-----+------------------+------------+---------- - The Third Man | 101 | British Lion | 1949-12-23 | Drama - 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) + title | did | name | date_prod | kind +-------------------+-----+--------------+------------+---------- + The Third Man | 101 | British Lion | 1949-12-23 | Drama + The African Queen | 101 | British Lion | 1951-08-11 | Romantic + ... </programlisting> </para> @@ -951,7 +824,7 @@ SELECT f.title, f.did, d.name, f.date_prod, f.kind the results by <literal>kind</literal>: <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 ----------+------- @@ -960,7 +833,6 @@ SELECT kind, SUM(len) AS total FROM films GROUP BY kind; Drama | 14:28 Musical | 06:42 Romantic | 04:38 -(5 rows) </programlisting> </para> @@ -970,16 +842,15 @@ SELECT kind, SUM(len) AS total FROM films GROUP BY kind; that are less than 5 hours: <programlisting> -SELECT kind, SUM(len) AS total +SELECT kind, sum(len) AS total FROM films GROUP BY kind - HAVING SUM(len) < INTERVAL '5 hour'; + HAVING sum(len) < interval '5 hours'; - kind | total + kind | total ----------+------- Comedy | 02:58 Romantic | 04:38 -(2 rows) </programlisting> </para> @@ -988,7 +859,7 @@ SELECT kind, SUM(len) AS total results according to the contents of the second column (<literal>name</literal>): - <programlisting> +<programlisting> SELECT * FROM distributors ORDER BY name; SELECT * FROM distributors ORDER BY 2; @@ -1007,7 +878,6 @@ SELECT * FROM distributors ORDER BY 2; 111 | Walt Disney 112 | Warner Bros. 108 | Westward -(13 rows) </programlisting> </para> @@ -1016,7 +886,7 @@ SELECT * FROM distributors ORDER BY 2; <literal>distributors</literal> and <literal>actors</literal>, restricting the results to those that begin 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> distributors: actors: @@ -1028,12 +898,12 @@ distributors: actors: ... ... SELECT distributors.name - FROM distributors - WHERE distributors.name LIKE 'W%' + FROM distributors + WHERE distributors.name LIKE 'W%' UNION SELECT actors.name - FROM actors - WHERE actors.name LIKE 'W%'; + FROM actors + WHERE actors.name LIKE 'W%'; name ---------------- @@ -1047,173 +917,135 @@ SELECT actors.name </para> <para> - This example shows how to use a table function, both with and without - a column definition list. + This example shows how to use a function in the <literal>FROM</> + clause, both with and without a column definition list. <programlisting> -distributors: - did | name ------+-------------- - 108 | Westward - 111 | Walt Disney - 112 | Warner Bros. - ... - -CREATE FUNCTION distributors(int) - RETURNS SETOF distributors AS ' - SELECT * FROM distributors WHERE did = $1; - ' LANGUAGE SQL; +CREATE FUNCTION distributors(int) RETURNS SETOF distributors AS ' + SELECT * FROM distributors WHERE did = $1; +' LANGUAGE SQL; SELECT * FROM distributors(111); did | name -----+------------- 111 | Walt Disney -(1 row) -CREATE FUNCTION distributors_2(int) - RETURNS SETOF RECORD AS ' - SELECT * FROM distributors WHERE did = $1; - ' LANGUAGE SQL; +CREATE FUNCTION distributors_2(int) RETURNS SETOF record AS ' + SELECT * FROM distributors WHERE did = $1; +' LANGUAGE SQL; SELECT * FROM distributors_2(111) AS (f1 int, f2 text); f1 | f2 -----+------------- 111 | Walt Disney -(1 row) </programlisting> </para> </refsect1> - <refsect1 id="R1-SQL-SELECT-3"> - <title> - Compatibility - </title> + <refsect1> + <title>Compatibility</title> + + <para> + Of course, the <command>SELECT</command> statement is compatible + with the SQL standard. But there are some extensions and some + missing features. + </para> - <refsect2 id="R2-SQL-SELECT-4"> - <refsect2info> - <date>1998-09-24</date> - </refsect2info> - <title>Extensions</title> + <refsect2> + <title>Omitted <literal>FROM</literal> Clauses</title> <para> -<productname>PostgreSQL</productname> allows one to omit -the <command>FROM</command> clause from a query. This feature -was retained from the original PostQUEL query language. It has -a straightforward use to compute the results of simple expressions: - - <programlisting> + <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; ?column? ---------- 4 - </programlisting> - -Some other <acronym>SQL</acronym> databases cannot do this except by -introducing a dummy one-row table to do the select from. A less -obvious use is to abbreviate a normal select from one or more tables: +</programlisting> + Some other <acronym>SQL</acronym> databases cannot do this except + by introducing a dummy one-row table from which to do the + <command>SELECT</command>. + </para> - <programlisting> + <para> + A less obvious use is to abbreviate a normal + <command>SELECT</command> from tables: +<programlisting> SELECT distributors.* WHERE distributors.name = 'Westward'; - did | name + did | name -----+---------- 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 -referenced in the query but not mentioned in FROM. While this is a convenient -shorthand, it's easy to misuse. For example, the query - <programlisting> + <para> + While this is a convenient shorthand, it's easy to misuse. For + example, the command +<programlisting> SELECT distributors.* FROM distributors d; - </programlisting> -is probably a mistake; most likely the user meant - <programlisting> +</programlisting> + is probably a mistake; most likely the user meant +<programlisting> SELECT d.* FROM distributors d; - </programlisting> -rather than the unconstrained join - <programlisting> +</programlisting> + rather than the unconstrained join +<programlisting> SELECT distributors.* FROM distributors d, distributors distributors; - </programlisting> -that he will actually get. To help detect this sort of mistake, -<Productname>PostgreSQL</Productname> 7.1 -and later will warn if the implicit-FROM feature is used in a query that also -contains an explicit FROM clause. +</programlisting> + that he will actually get. To help detect this sort of mistake, + PostgreSQL will warn if the implicit-<literal>FROM</literal> + feature is used in a <command>SELECT</command> statement that also + contains an explicit <literal>FROM</literal> clause. + </para> + </refsect2> + + <refsect2> + <title>The <literal>AS</literal> Key Word</title> + <para> + In the SQL standard, the optional key word <literal>AS</> is just + 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> + </refsect2> + + <refsect2> + <title>Namespace Available to <literal>GROUP BY</literal> and <literal>ORDER BY</literal></title> <para> - The table-function feature is a <productname>PostgreSQL</productname> - extension. + In the SQL standard, an <literal>ORDER BY</literal> clause may + only use result column names or numbers, while a <literal>GROUP + BY</literal> clause may only use expressions based on input column + names. <productname>PostgreSQL</productname> extends each of + these clauses to allow the other choice as well (but it uses the + standard's interpretation if there is ambiguity). + <productname>PostgreSQL</productname> also allows both clauses to + specify arbitrary expressions. Note that names appearing in an + expression will always be taken as input-column names, not as + result-column names. </para> </refsect2> - <refsect2 id="R2-SQL-SELECT-5"> - <refsect2info> - <date>1998-09-24</date> - </refsect2info> - <title> - <acronym>SQL92</acronym> - </title> + <refsect2> + <title>Nonstandard Clauses</title> + <para> + The clauses <literal>DISTINCT ON</literal>, + <literal>LIMIT</literal>, and <literal>OFFSET</literal> are not + defined in the SQL standard. </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> - The DISTINCT ON phrase is not part of <acronym>SQL92</acronym>. - Nor are LIMIT and OFFSET. - </para> - - <para> - In <acronym>SQL92</acronym>, an ORDER BY clause may only use result - column names or numbers, while a GROUP BY clause may only use input - column names. - <productname>PostgreSQL</productname> extends each of these clauses to - allow the other choice as well (but it uses the standard's interpretation - if there is ambiguity). - <productname>PostgreSQL</productname> also allows both clauses to specify - arbitrary expressions. Note that names appearing in an expression will - always be taken as input-column names, not as result-column names. - </para> - </refsect3> - - <refsect3 id="R3-SQL-UNION-1"> - <refsect3info> - <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> - The CORRESPONDING BY clause is not supported by - <productname>PostgreSQL</productname>. - </para> - </refsect3> - </refsect2> </refsect1> </refentry> diff --git a/doc/src/sgml/ref/select_into.sgml b/doc/src/sgml/ref/select_into.sgml index c14911638bea432a739f8c546f14dd3c729df0a3..131bb6e1a2f7eed7c75f500345e63e294cf00f41 100644 --- a/doc/src/sgml/ref/select_into.sgml +++ b/doc/src/sgml/ref/select_into.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,18 +8,14 @@ PostgreSQL documentation <refentrytitle id="SQL-SELECTINTO-TITLE">SELECT INTO</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> - <refname> - SELECT INTO - </refname> - <refpurpose> - create a new table from the results of a query - </refpurpose></refnamediv> + <refname>SELECT INTO</refname> + <refpurpose>create a new table from the results of a query</refpurpose> + </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>2000-12-11</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replaceable> [, ...] ) ] ] * | <replaceable class="PARAMETER">expression</replaceable> [ AS <replaceable class="PARAMETER">output_name</replaceable> ] [, ...] INTO [ TEMPORARY | TEMP ] [ TABLE ] <replaceable class="PARAMETER">new_table</replaceable> @@ -32,71 +28,11 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replac [ LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL } ] [ OFFSET <replaceable class="PARAMETER">start</replaceable> ] [ FOR UPDATE [ OF <replaceable class="PARAMETER">tablename</replaceable> [, ...] ] ] - </synopsis> - - <refsect2 id="R2-SQL-SELECTINTO-1"> - <refsect2info> - <date>2001-03-20</date> - </refsect2info> - <title> - Inputs - </title> - - <para> - <variablelist> - <varlistentry> - <term>TEMPORARY</term> - <term>TEMP</term> - <listitem> - <para> - If specified, the table is created as a temporary table. - Refer to <xref linkend="sql-createtable" endterm="sql-createtable-title"> for details. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable class="PARAMETER">new_table</replaceable></term> - <listitem> - <para> - The name (optionally schema-qualified) of the table to be created. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - - <para> - All other inputs are described in detail for - <xref linkend="sql-select" endterm="sql-select-title">. - </para> - </refsect2> - - <refsect2 id="R2-SQL-SELECTINTO-2"> - <refsect2info> - <date>2001-03-20</date> - </refsect2info> - <title> - Outputs - </title> - - <para> - Refer to - <xref linkend="sql-createtable" endterm="sql-createtable-title"> - and - <xref linkend="sql-select" endterm="sql-select-title"> - for a summary of possible output messages. - </para> - </refsect2> +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-SELECTINTO-1"> - <refsect1info> - <date>2001-03-20</date> - </refsect1info> - <title> - Description - </title> + <refsect1> + <title>Description</title> <para> <command>SELECT INTO</command> creates a new table and fills it @@ -104,35 +40,81 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replac 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> - <note> + <variablelist> + <varlistentry> + <term><literal>TEMPORARY</literal> or <literal>TEMP</literal></term> + <listitem> <para> - <xref linkend="sql-createtableas" endterm="sql-createtableas-title"> - is functionally equivalent to <command>SELECT INTO</command>. - <command>CREATE TABLE AS</command> is the recommended syntax, since - <command>SELECT INTO</command> is not standard. In fact, this form of - <command>SELECT INTO</command> is not available in <application>PL/pgSQL</application> or <xref linkend="app-ecpg">, - because they interpret the INTO clause differently. + If specified, the table is created as a temporary table. Refer + to <xref linkend="sql-createtable" + endterm="sql-createtable-title"> for details. </para> - </note> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="PARAMETER">new_table</replaceable></term> + <listitem> + <para> + The name (optionally schema-qualified) of the table to be created. + </para> + </listitem> + </varlistentry> + </variablelist> + + <para> + All other parameters are described in detail under <xref + linkend="sql-select" endterm="sql-select-title">. </para> </refsect1> - <refsect1 id="R1-SQL-SELECTINTO-2"> - <title> - Compatibility - </title> + <refsect1> + <title>Diagnostics</title> - <para> - SQL92 uses <command>SELECT ... INTO</command> to represent selecting - values into scalar variables of a host program, rather than creating - a new table. This indeed is the usage found in <application>PL/pgSQL</application> and <xref linkend="app-ecpg">. - The <productname>PostgreSQL</productname> usage of <command>SELECT - INTO</command> to represent table creation is historical. It's best - to use <command>CREATE TABLE AS</command> for this purpose in new code. - (<command>CREATE TABLE AS</command> isn't standard either, but it's - less likely to cause confusion.) - </para> + <para> + Refer to + <xref linkend="sql-createtable" endterm="sql-createtable-title"> + and + <xref linkend="sql-select" endterm="sql-select-title"> + for a summary of possible output messages. + </para> + </refsect1> + + <refsect1> + <title>Notes</title> + + <para> + <xref linkend="sql-createtableas" endterm="sql-createtableas-title"> + is functionally equivalent to <command>SELECT INTO</command>. + <command>CREATE TABLE AS</command> is the recommended syntax, since + this form of <command>SELECT INTO</command> is not available in + <application>ECPG</application> or + <application>PL/pgSQL</application>, because they interpret the + <literal>INTO</literal> clause differently. + </para> + </refsect1> + + <refsect1> + <title>Compatibility</title> + + <para> + The SQL standard uses <command>SELECT ... INTO</command> to + represent selecting values into scalar variables of a host program, + 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 + INTO</command> to represent table creation is historical. It's + best to use <command>CREATE TABLE AS</command> for this purpose in + new code. (<command>CREATE TABLE AS</command> isn't standard + either, but it's less likely to cause confusion.) + </para> </refsect1> </refentry> diff --git a/doc/src/sgml/ref/set.sgml b/doc/src/sgml/ref/set.sgml index 75dc366c3f945085637d44a56576571ab984c9ec..eba67d0577570f35b09e92678c9dd8baefc096cb 100644 --- a/doc/src/sgml/ref/set.sgml +++ b/doc/src/sgml/ref/set.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,73 +8,20 @@ PostgreSQL documentation <refentrytitle id="SQL-SET-TITLE">SET</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> <refname>SET</refname> <refpurpose>change a run-time parameter</refpurpose> </refnamediv> + <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 ] TIME ZONE { <replaceable class="PARAMETER">timezone</replaceable> | LOCAL | DEFAULT } - </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> - +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-SET-1"> + <refsect1> <title>Description</title> <para> @@ -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 <command>SET</command>. (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 session. </para> @@ -114,236 +61,153 @@ SET [ SESSION | LOCAL ] TIME ZONE { <replaceable class="PARAMETER">timezone</rep does not start a new transaction block. See the <varname>autocommit</> section in <xref linkend="runtime-config"> for details. </para> + </refsect1> + + <refsect1> + <title>Parameters</title> + + <variablelist> + <varlistentry> + <term><literal>SESSION</></term> + <listitem> + <para> + Specifies that the command takes effect for the current session. + (This is the default if neither <literal>SESSION</> nor + <literal>LOCAL</> appears.) + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>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 is + 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. Available parameters are + documented in <xref linkend="runtime-config"> and below. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="PARAMETER">value</replaceable></term> + <listitem> + <para> + 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> + </listitem> + </varlistentry> + </variablelist> <para> - Here are additional details about a few of the parameters that can be set: + Besides the configuration parameters documented in <xref + linkend="runtime-config">, there are a few that can only be + adjusted using the <command>SET</command> command or that have a + special syntax: <variablelist> <varlistentry> - <term><varname>DATESTYLE</></term> + <term><literal>NAMES</literal></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> - <varlistentry> - <term><literal>ISO</></term> - <listitem> - <para> - Use ISO 8601-style dates and times (<literal>YYYY-MM-DD - HH:MM:SS</literal>). This is the default. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><literal>SQL</></term> - <listitem> - <para> - Use Oracle/Ingres-style dates and times. Note that this - style has nothing to do with SQL (which mandates ISO 8601 - style); the naming of this option is a historical accident. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><literal>PostgreSQL</></term> - <listitem> - <para> - Use traditional <productname>PostgreSQL</productname> format. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><literal>German</></term> - <listitem> - <para> - Use <literal>dd.mm.yyyy</literal> for numeric date representations. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - - <para> - The following two options determine both a substyle of the - <quote>SQL</quote> and <quote>PostgreSQL</quote> output formats - and the preferred interpretation of ambiguous date input. - - <variablelist> - <varlistentry> - <term><literal>European</></term> - <listitem> - <para> - Use <literal>dd/mm/yyyy</literal> for numeric date representations. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><literal>NonEuropean</></term> - <term><literal>US</></term> - <listitem> - <para> - Use <literal>mm/dd/yyyy</literal> for numeric date representations. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - - <para> - A value for <command>SET DATESTYLE</command> can be one from - the first list (output styles), or one from the second list - (substyles), or one from each separated by a comma. - </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. + <literal>>SET NAMES <replaceable>value</></> is an alias for + <literal>SET client_encoding TO <replaceable>value</></>. </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> + <term><literal>SEED</literal></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> + Sets the internal seed for the random number generator (the + function <function>random</function>). Allowed values are + floating-point numbers between 0 and 1, which are then + multiplied by 2<superscript>31</>-1. </para> <para> - The seed can also be set by invoking the - <function>setseed</function> SQL function: - - <programlisting> + The seed can also be set by invoking the function + <function>setseed</function>: +<programlisting> SELECT setseed(<replaceable>value</replaceable>); - </programlisting> +</programlisting> </para> </listitem> </varlistentry> <varlistentry> - <term>TIME ZONE</term> - <term>TIMEZONE</term> + <term><literal>TIME ZONE</literal></term> <listitem> <para> - Sets the default time zone for your session. Arguments can be - an SQL time interval constant, an integer or double precision - constant, or a string representing a time zone name recognized - by the host operating system. - </para> - - <para> - Here are some typical values for time zone settings: + <literal>>SET TIME ZONE <replaceable>value</></> is an alias + for <literal>SET timezone TO <replaceable>value</></>. The + syntax <literal>>SET TIME ZONE</literal> allows special syntax + for the time zone specification. Here are examples of valid + values: <variablelist> <varlistentry> - <term>'PST8PDT'</term> + <term><literal>'PST8PDT'</literal></term> <listitem> <para> - Set the time zone for Berkeley, California. + The time zone for Berkeley, California. </para> </listitem> </varlistentry> <varlistentry> - <term>'Portugal'</term> + <term><literal>'Portugal'</literal></term> <listitem> <para> - Set the time zone for Portugal. + The time zone for Portugal. </para> </listitem> </varlistentry> <varlistentry> - <term>'Europe/Rome'</term> + <term><literal>'Europe/Rome'</literal></term> <listitem> <para> - Set the time zone for Italy. + The time zone for Italy. </para> </listitem> </varlistentry> <varlistentry> - <term>7</term> + <term><literal>7</literal></term> <listitem> <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). </para> </listitem> </varlistentry> <varlistentry> - <term>INTERVAL '08:00' HOUR TO MINUTE</term> + <term><literal>INTERVAL '08:00' HOUR TO MINUTE</literal></term> <listitem> <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). </para> </listitem> </varlistentry> <varlistentry> - <term>LOCAL</term> - <term>DEFAULT</term> + <term><literal>LOCAL</literal></term> + <term><literal>DEFAULT</literal></term> <listitem> <para> Set the time zone to your local time zone (the one that @@ -352,43 +216,19 @@ SELECT setseed(<replaceable>value</replaceable>); </listitem> </varlistentry> </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> - If an invalid time zone is specified, the time zone - 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. + See <xref linkend="datatype-datetime"> for more information + about time zones. </para> </listitem> </varlistentry> </variablelist> </para> - - <para> - Use <xref linkend="SQL-SHOW" endterm="SQL-SHOW-title"> to show the - current setting of a parameter. - </para> - </refsect1> <refsect1> <title>Diagnostics</title> - <para> - + <variablelist> <varlistentry> <term><computeroutput>SET</computeroutput></term> @@ -400,8 +240,7 @@ SELECT setseed(<replaceable>value</replaceable>); </varlistentry> <varlistentry> - <term><computeroutput>ERROR: '<replaceable>name</replaceable>' is not a - valid option name</computeroutput></term> + <term><computeroutput>ERROR: '<replaceable>name</replaceable>' is not a valid option name</computeroutput></term> <listitem> <para> The parameter you tried to set does not exist. @@ -410,8 +249,7 @@ SELECT setseed(<replaceable>value</replaceable>); </varlistentry> <varlistentry> - <term><computeroutput>ERROR: '<replaceable>name</replaceable>': - permission denied</computeroutput></term> + <term><computeroutput>ERROR: '<replaceable>name</replaceable>': permission denied</computeroutput></term> <listitem> <para> You must be a superuser to alter certain settings. @@ -420,17 +258,14 @@ SELECT setseed(<replaceable>value</replaceable>); </varlistentry> <varlistentry> - <term><computeroutput>ERROR: '<replaceable>name</replaceable>' cannot - be changed after server start</computeroutput></term> + <term><computeroutput>ERROR: '<replaceable>name</replaceable>' cannot be changed after server start</computeroutput></term> <listitem> <para> Some parameters are fixed once the server is started. </para> </listitem> </varlistentry> - </variablelist> - </para> </refsect1> <refsect1> @@ -438,81 +273,61 @@ SELECT setseed(<replaceable>value</replaceable>); <para> The function <function>set_config</function> provides equivalent - capability. See <xref linkend="functions-misc">. + functionality. See <xref linkend="functions-misc">. </para> </refsect1> <refsect1> <title>Examples</title> + <para> - Set the style of date to traditional - <productname>PostgreSQL</productname> with European conventions: - <screen> -SET DATESTYLE TO PostgreSQL,European; - </screen> + Set the schema search path: +<programlisting> +SET search_path TO my_schema, public; +</programlisting> </para> <para> - Set the time zone for Berkeley, California, using quotes to - preserve the uppercase spelling of the time zone name (note - that the date style is <literal>PostgreSQL</literal> for this - example): - - <screen> -SET TIME ZONE 'PST8PDT'; -SELECT CURRENT_TIMESTAMP AS today; - today ------------------------------------- - Tue Feb 26 07:32:21.42834 2002 PST - </screen> + Set the style of date to traditional + <productname>POSTGRES</productname> with European conventions: +<screen> +SET datestyle TO postgres,european; +</screen> </para> <para> - Set the time zone for Italy (note the required single quotes to handle - the special characters): - - <screen> -SET TIME ZONE 'Europe/Rome'; -SELECT CURRENT_TIMESTAMP AS today; + Set the time zone for Berkeley, California, using quotes to + preserve the uppercase spelling of the time zone name: +<screen> +SET TIME ZONE 'PST8PDT'; +SELECT current_timestamp AS today; - today + today ------------------------------- - 2002-10-08 05:39:35.008271+02 - </screen> + 2003-04-29 15:02:01.218622-07 +</screen> </para> </refsect1> - <refsect1 id="R1-SQL-SET-3"> + <refsect1> <title>Compatibility</title> - <refsect2 id="R2-SQL-SET-4"> - <title> - SQL92 - </title> - - <para> - <literal>SET TIME ZONE</literal> - extends syntax defined in - <acronym>SQL9x</acronym>. <acronym>SQL9x</acronym> allows - only numeric time zone offsets while - <productname>PostgreSQL</productname> allows full time zone - specifier strings as well. All other <literal>SET</literal> - features are - <productname>PostgreSQL</productname> extensions. - </para> - </refsect2> + <para> + <literal>SET TIME ZONE</literal> extends syntax defined in the SQL + standard. The standard allows only numeric time zone offsets while + <productname>PostgreSQL</productname> allows more flexible + time-zone specifications. All other <literal>SET</literal> + features are <productname>PostgreSQL</productname> extensions. + </para> </refsect1> <refsect1> <title>See Also</title> - <simpara> - <xref linkend="SQL-SHOW" endterm="SQL-SHOW-title">, - <xref linkend="SQL-RESET" endterm="SQL-RESET-title">, - <xref linkend="sql-set-constraints" endterm="sql-set-constraints-title">, - <xref linkend="sql-set-session-authorization" endterm="sql-set-session-authorization-title">, - <xref linkend="sql-set-transaction" endterm="sql-set-transaction-title"> - </simpara> + <simplelist type="inline"> + <member><xref linkend="SQL-RESET" endterm="SQL-RESET-title"></member> + <member><xref linkend="SQL-SHOW" endterm="SQL-SHOW-title"></member> + </simplelist> </refsect1> </refentry> diff --git a/doc/src/sgml/ref/set_constraints.sgml b/doc/src/sgml/ref/set_constraints.sgml index 32abdee89f3f02bb66f4f9a6261bc460e4821a2d..3d5b58bee2ec336a2e81cededa531397b1a5d847 100644 --- a/doc/src/sgml/ref/set_constraints.sgml +++ b/doc/src/sgml/ref/set_constraints.sgml @@ -1,20 +1,19 @@ -<!-- $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"> <refmeta> <refentrytitle id="SQL-SET-CONSTRAINTS-title">SET CONSTRAINTS</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> <refname>SET CONSTRAINTS</refname> <refpurpose>set the constraint mode of the current transaction</refpurpose> </refnamediv> + <refsynopsisdiv> - <refsynopsisdivinfo> - <date>2000-06-01</date> - </refsynopsisdivinfo> - <synopsis> +<synopsis> SET CONSTRAINTS { ALL | <replaceable class="parameter">constraint</replaceable> [, ...] } { DEFERRED | IMMEDIATE } - </synopsis> +</synopsis> </refsynopsisdiv> <refsect1> @@ -22,39 +21,26 @@ SET CONSTRAINTS { ALL | <replaceable class="parameter">constraint</replaceable> <para> <command>SET CONSTRAINTS</command> sets the behavior of constraint - evaluation in the current transaction. In <option>IMMEDIATE - </option> mode, constraints are checked at the end of each - statement. In <option>DEFERRED</option> mode, constraints are not - checked until transaction commit. + evaluation in the current transaction. In + <literal>IMMEDIATE</literal> mode, constraints are checked at the + end of each statement. In <literal>DEFERRED</literal> mode, + 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> - </note> - <para> - When you change the mode of a constraint to be <option>IMMEDIATE - </option>, the new constraint mode takes effect retroactively: - any outstanding data modifications that would have been checked - at the end of the transaction (when using - <option>DEFERRED</option>) are instead checked during the + When you change the mode of a constraint to be + <literal>IMMEDIATE</literal>, the new constraint mode takes effect + retroactively: any outstanding data modifications that would have + been checked at the end of the transaction (when using + <literal>DEFERRED</literal>) are instead checked during the execution of the <command>SET CONSTRAINTS</command> command. </para> <para> Upon creation, a constraint is always give one of three - characteristics: <option>INITIALLY DEFERRED</option>, - <option>INITIALLY IMMEDIATE DEFERRABLE</option>, or - <option>INITIALLY IMMEDIATE NOT DEFERRABLE</option>. The third + characteristics: <literal>INITIALLY DEFERRED</literal>, + <literal>INITIALLY IMMEDIATE DEFERRABLE</literal>, or + <literal>INITIALLY IMMEDIATE NOT DEFERRABLE</literal>. The third class is not affected by the <command>SET CONSTRAINTS</command> command. </para> @@ -66,21 +52,30 @@ SET CONSTRAINTS { ALL | <replaceable class="parameter">constraint</replaceable> </para> </refsect1> - <refsect1 id="R1-SQL-SET-CONSTRAINT-3"> - <title>Compatibility</title> + <refsect1> + <title>Notes</title> - <refsect2 id="R2-SQL-SET-CONSTRAINT-4"> - <title>SQL92, SQL99</title> + <para> + 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> - <command>SET CONSTRAINTS</command> is defined in - <acronym>SQL92</acronym> and <acronym>SQL99</acronym>. The - implementation in <productname>PostgreSQL</productname> complies - 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> - </refsect2> + <para> + This command complies with the behavior defined in the SQL + standard, except for the limitation that, in PostgreSQL, it only + applies to foreign-key constraints. + </para> </refsect1> </refentry> diff --git a/doc/src/sgml/ref/set_session_auth.sgml b/doc/src/sgml/ref/set_session_auth.sgml index 88d5578498c9a309e5e8b8dfbe349f2500376e00..f8c0297adad5bc4cfd3e3c87f775bdc7ea6260a2 100644 --- a/doc/src/sgml/ref/set_session_auth.sgml +++ b/doc/src/sgml/ref/set_session_auth.sgml @@ -1,9 +1,5 @@ -<!-- $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"> - <docinfo> - <date>2001-04-21</date> - </docinfo> - <refmeta> <refentrytitle id="sql-set-session-authorization-title">SET SESSION AUTHORIZATION</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> @@ -16,7 +12,7 @@ <refsynopsisdiv> <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 RESET SESSION AUTHORIZATION </synopsis> @@ -28,11 +24,10 @@ RESET SESSION AUTHORIZATION <para> This command sets the session user identifier and the current user identifier of the current SQL-session context to be <replaceable - class="PARAMETER">username</replaceable>. The user name may be - written as either an identifier or a string literal. The session - user identifier is valid for the duration of a connection; for - example, it is possible to temporarily become an unprivileged user - and later switch back to become a superuser. + class="parameter">username</replaceable>. The user name may be + written as either an identifier or a string literal. Using this + command, it is possible, for example, to temporarily become an + unprivileged user and later switch back to become a superuser. </para> <para> @@ -52,7 +47,7 @@ RESET SESSION AUTHORIZATION </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"> command. </para> @@ -60,9 +55,8 @@ RESET SESSION AUTHORIZATION <para> The <literal>DEFAULT</> and <literal>RESET</> forms reset the session 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> - </refsect1> <refsect1> @@ -88,18 +82,16 @@ SELECT SESSION_USER, CURRENT_USER; <refsect1> <title>Compatibility</title> - <simpara>SQL99</simpara> - <para> - SQL99 allows some other expressions to appear in place of the - literal <parameter>username</parameter> which are not important in - practice. <application>PostgreSQL</application> allows identifier - syntax (<literal>"username"</literal>), which SQL does not. SQL - does not allow this command during a transaction; - <application>PostgreSQL</application> does not make - this restriction because there is no reason to. The - privileges necessary to execute this command are left - implementation-defined by the standard. + The SQL standard allows some other expressions to appear in place + of the literal <replaceable>username</replaceable> which are not + important in practice. <application>PostgreSQL</application> + allows identifier syntax (<literal>"username"</literal>), which SQL + does not. SQL does not allow this command during a transaction; + <application>PostgreSQL</application> does not make this + restriction because there is no reason to. The privileges + necessary to execute this command are left implementation-defined + by the standard. </para> </refsect1> </refentry> diff --git a/doc/src/sgml/ref/set_transaction.sgml b/doc/src/sgml/ref/set_transaction.sgml index f43802d2e01a141ab88ac5aa9b2e286a3d80583a..2ff29bc3d5f6d41666c7c0cbbb3e6d024bdb532d 100644 --- a/doc/src/sgml/ref/set_transaction.sgml +++ b/doc/src/sgml/ref/set_transaction.sgml @@ -1,9 +1,5 @@ -<!-- $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"> - <docinfo> - <date>2000-11-24</date> - </docinfo> - <refmeta> <refentrytitle id="SQL-SET-TRANSACTION-TITLE">SET TRANSACTION</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> @@ -15,12 +11,12 @@ </refnamediv> <refsynopsisdiv> - <synopsis> +<synopsis> SET TRANSACTION [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ] SET SESSION CHARACTERISTICS AS TRANSACTION [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ] - </synopsis> +</synopsis> </refsynopsisdiv> <refsect1> @@ -28,8 +24,8 @@ SET SESSION CHARACTERISTICS AS TRANSACTION <para> The <command>SET TRANSACTION</command> command sets the transaction - characteristics of the current SQL-transaction. It has no effect on - any subsequent transactions. <command>SET SESSION + characteristics of the current transaction. It has no effect on any + subsequent transactions. <command>SET SESSION CHARACTERISTICS</command> sets the default transaction characteristics for each transaction of a session. <command>SET TRANSACTION</command> can override it for an individual @@ -80,7 +76,9 @@ SET SESSION CHARACTERISTICS AS TRANSACTION or data-modification statement (<command>SELECT</command>, <command>INSERT</command>, <command>DELETE</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> @@ -117,25 +115,23 @@ SET default_transaction_isolation = '<replaceable>value</replaceable>' <refsect1 id="R1-SQL-SET-TRANSACTION-3"> <title>Compatibility</title> - <refsect2 id="R2-SQL-SET-TRANSACTION-4"> - <title>SQL92, SQL99</title> - - <para> - <option>SERIALIZABLE</option> is the default transaction isolation level in - <acronym>SQL</acronym>. <productname>PostgreSQL</productname> does - not provide the isolation levels <option>READ UNCOMMITTED</option> - and <option>REPEATABLE READ</option>. Because of multiversion - concurrency control, the <option>SERIALIZABLE</option> level is not - truly serializable. See <xref linkend="mvcc"> for details. - </para> - - <para> - In <acronym>SQL</acronym> there is one other transaction - characteristic that can be set with these commands: the size of - the diagnostics area. This concept is not supported in - <productname>PostgreSQL</productname>. - </para> - </refsect2> + <para> + Both commands are defined in the SQL standard. + <literal>SERIALIZABLE</literal> is the default transaction + isolation level in <acronym>SQL</acronym>; in PostgreSQL it is + <literal>READ COMMITED</literal>, but you can change it as + described above. <productname>PostgreSQL</productname> does not + 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> + In the SQL standard, there is one other transaction characteristic + that can be set with these commands: the size of the diagnostics + area. This concept is only for use in embedded SQL. + </para> </refsect1> </refentry> diff --git a/doc/src/sgml/ref/show.sgml b/doc/src/sgml/ref/show.sgml index 0fec5fcce557cefc003d236d62a450ca0dabe198..dd8e9cf04125d608572046d860363a97a6d349b4 100644 --- a/doc/src/sgml/ref/show.sgml +++ b/doc/src/sgml/ref/show.sgml @@ -1,5 +1,5 @@ <!-- -$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 --> @@ -8,58 +8,34 @@ PostgreSQL documentation <refentrytitle id="SQL-SHOW-TITLE">SHOW</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> + <refnamediv> <refname>SHOW</refname> <refpurpose>show the value of a run-time parameter</refpurpose> </refnamediv> + <refsynopsisdiv> - <synopsis> +<synopsis> SHOW <replaceable class="PARAMETER">name</replaceable> - </synopsis> - <synopsis> +</synopsis> +<synopsis> SHOW ALL - </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> - +</synopsis> </refsynopsisdiv> - <refsect1 id="R1-SQL-SHOW-1"> + <refsect1> <title>Description</title> + <para> <command>SHOW</command> will display the current setting of run-time parameters. These variables can be set using the <command>SET</command> statement, by editing the - <filename>postgresql.conf</filename> configuration file, through the - <envar>PGOPTIONS</envar> environmental variable (when using libpq - or a libpq-based application), or through - command-line flags when starting the - <application>postmaster</application>. + <filename>postgresql.conf</filename> configuration file, through + the <envar>PGOPTIONS</envar> environmental variable (when using + <application>libpq</> or a <application>libpq</>-based + application), or through command-line flags when starting the + <command>postmaster</command>. See <xref + linkend="runtime-config"> for details. </para> <para> @@ -67,83 +43,96 @@ SHOW ALL does not start a new transaction block. See the <varname>autocommit</> section in <xref linkend="runtime-config"> for details. </para> + </refsect1> - <para> - 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> - <term>SERVER_VERSION</term> - <listitem> - <para> - Shows the server's version number. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>SERVER_ENCODING</term> - <listitem> - <para> - Shows the server-side multibyte encoding. At present, this - parameter can be shown but not set, because the encoding is - determined at database creation time. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>LC_COLLATE</term> - <listitem> - <para> - Shows the database's locale setting for collation (text ordering). - At present, this parameter can be shown but not set, because the - setting is determined at <application>initdb</> time. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>LC_CTYPE</term> - <listitem> - <para> - Shows the database's locale setting for character set considerations. - At present, this parameter can be shown but not set, because the - setting is determined at <application>initdb</> time. - </para> - </listitem> - </varlistentry> - - </variablelist> - </para> - - <para> - Use <xref linkend="SQL-SET" endterm="SQL-SET-title"> to set the value - of settable parameters. - </para> + <refsect1> + <title>Parameters</title> + + <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> + <term><literal>SERVER_VERSION</literal></term> + <listitem> + <para> + Shows the server's version number. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>SERVER_ENCODING</literal></term> + <listitem> + <para> + Shows the server-side character set encoding. At present, + this parameter can be shown but not set, because the + encoding is determined at database creation time. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>LC_COLLATE</literal></term> + <listitem> + <para> + Shows the database's locale setting for collation (text + ordering). At present, this parameter can be shown but not + set, because the setting is determined at + <command>initdb</> time. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>LC_CTYPE</literal></term> + <listitem> + <para> + Shows the database's locale setting for character + classification. At present, this parameter can be shown but + not set, because the setting is determined at + <command>initdb</> time. + </para> + </listitem> + </varlistentry> + </variablelist> + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>ALL</literal></term> + <listitem> + <para> + Show the values of all configurations parameters. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> <refsect1> <title>Diagnostics</title> - <para> - <variablelist> - <varlistentry> - <term><computeroutput>ERROR: Option '<replaceable>name</replaceable>' - is not recognized</computeroutput></term> - <listitem> - <para> - Message returned if <replaceable>name</replaceable> does - not stand for a known parameter. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> + <variablelist> + <varlistentry> + <term><computeroutput>ERROR: Option '<replaceable>name</replaceable>' is not recognized</computeroutput></term> + <listitem> + <para> + Message returned if <replaceable>name</replaceable> does not + stand for a known parameter. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> <refsect1> @@ -155,10 +144,11 @@ SHOW ALL </para> </refsect1> - <refsect1 id="R1-SQL-SHOW-2"> + <refsect1> <title>Examples</title> + <para> - Show the current <varname>DateStyle</varname> setting: + Show the current setting of the parameter <varname>DateStyle</varname>: <programlisting> SHOW DateStyle; @@ -170,10 +160,9 @@ SHOW DateStyle; </para> <para> - Show whether the genetic query optimizer is enabled by displaying - the <varname>geqo</varname> setting: + Show the current setting of the parameter <varname>geqo</varname>: <programlisting> -SHOW GEQO; +SHOW geqo; geqo ------ on @@ -198,10 +187,9 @@ SHOW ALL; (94 rows) </programlisting> </para> - </refsect1> - <refsect1 id="R1-SQL-SHOW-3"> + <refsect1> <title>Compatibility</title> <para> @@ -209,6 +197,15 @@ SHOW ALL; <productname>PostgreSQL</productname> extension. </para> </refsect1> + + <refsect1> + <title>See Also</title> + + <simplelist type="inline"> + <member><xref linkend="SQL-SET" endterm="SQL-SET-title"></member> + </simplelist> + </refsect1> + </refentry> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index 9311aabfda350e44df25ef20678017f53c38c2eb..c525ea4f15d277bef68bf24c1ae2de0bc956e414 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1,5 +1,5 @@ <!-- -$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"> @@ -1384,9 +1384,10 @@ SET ENABLE_SEQSCAN TO OFF; <indexterm><primary>date style</></> <listitem> <para> - Sets the display format for date and time values, as well as the rules for - interpreting ambiguous date input values. - The default is <literal>ISO, US</>. + Sets the display format for date and time values, as well as + the rules for interpreting ambiguous date input values. See + <xref linkend="datatype-datetime"> for more information. The + default is <literal>ISO, US</>. </para> </listitem> </varlistentry> @@ -1556,7 +1557,7 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' <para> This parameter adjusts the number of digits displayed for 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</> as appropriate). The value can be set as high as 2, to include 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' <indexterm><primary>preload_libraries</></> <listitem> <para> - This variable specifies one or more shared libraries that are to be - preloaded at Postmaster start. An initialization function can also be - optionally specified by adding a colon followed by the name of the - initialization function after the library name. For example - <literal>'$libdir/mylib:init_mylib'</literal> would cause <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. + This variable specifies one or more shared libraries that are + to be preloaded at server start. An initialization function + can also be optionally specified by adding a colon followed by + the name of the initialization function after the library + name. For example + <literal>'$libdir/mylib:init_mylib'</literal> would cause + <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> - If <literal>mylib</> is not found, the postmaster will fail to start. - However, if <literal>init_mylib</> is not found, <literal>mylib</> will - still be preloaded without executing the initialization function. + If <literal>mylib</> is not found, the server will fail to + start. However, if <literal>init_mylib</> is not found, + <literal>mylib</> will still be preloaded without executing + the initialization function. </para> <para> - By preloading a shared library (and initializing it if applicable), - the library startup time is avoided when the library is used later in a - specific backend. However there is a cost in terms of memory duplication - as every backend is forked, whether or not the library is used. + By preloading a shared library (and initializing it if + applicable), the library startup time is avoided when the + library is first used. </para> </listitem> </varlistentry> @@ -2057,9 +2060,10 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' <indexterm><primary>time zone</></> <listitem> <para> - Sets the time zone for displaying and interpreting time stamps. - The default is to use whatever the system environment - specifies as the time zone. + Sets the time zone for displaying and interpreting time + stamps. The default is to use whatever the system environment + specifies as the time zone. See <xref + linkend="datatype-datetime"> for more information. </para> </listitem> </varlistentry>