Make SET SESSION CHARACTERISTICS compliant with SQL 99. Remove redundant,
non-standard clauses. Allow CHARACTERISTICS as unquoted identifier. Merge related reference pages.
This commit is contained in:
parent
f1ddc19b10
commit
5b00ea9e50
|
@ -1,5 +1,5 @@
|
|||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/allfiles.sgml,v 1.25 2000/11/24 17:44:22 petere Exp $
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/allfiles.sgml,v 1.26 2000/11/24 20:16:38 petere Exp $
|
||||
Postgres documentation
|
||||
Complete list of usable sgml source files in this directory.
|
||||
-->
|
||||
|
@ -95,7 +95,6 @@ Complete list of usable sgml source files in this directory.
|
|||
<!entity select system "select.sgml">
|
||||
<!entity selectInto system "select_into.sgml">
|
||||
<!entity set system "set.sgml">
|
||||
<!entity setSession system "set_session.sgml">
|
||||
<!entity setConstraints system "set_constraints.sgml">
|
||||
<!entity setTransaction system "set_transaction.sgml">
|
||||
<!entity show system "show.sgml">
|
||||
|
|
|
@ -1,91 +0,0 @@
|
|||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/Attic/set_session.sgml,v 1.1 2000/07/14 15:27:14 thomas Exp $
|
||||
Postgres documentation
|
||||
-->
|
||||
|
||||
<refentry id="SQL-SET-SESSION">
|
||||
<refmeta>
|
||||
<refentrytitle id="SQL-SET-SESSION-TITLE">SET</refentrytitle>
|
||||
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
||||
</refmeta>
|
||||
<refnamediv>
|
||||
<refname>SET SESSION CHARACTERISTICS</refname>
|
||||
<refpurpose>Set per-session run-time parameters</refpurpose>
|
||||
</refnamediv>
|
||||
<refsynopsisdiv>
|
||||
<synopsis>
|
||||
SET SESSION CHARACTERISTICS TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
|
||||
SET SESSION CHARACTERISTICS TIME ZONE { '<replaceable class="PARAMETER">timezone</replaceable>' | LOCAL | DEFAULT }
|
||||
</synopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1 id="R1-SQL-SET-SESSION-1">
|
||||
<title>Description</title>
|
||||
<para>
|
||||
<command>SET SESSION CHARACTERISTICS</command> changes the run-time
|
||||
environment for the entire <acronym>SQL</acronym>
|
||||
session. Currently, transaction isolation level and time zone can
|
||||
be specified by this command.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Use <xref linkend="SQL-SHOW" endterm="SQL-SHOW-title"> to show the
|
||||
current setting of a parameters.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Refer to <xref linkend="SQL-SET-TRANSACTION" endterm="SQL-SET-TRANSACTION-TITLE">
|
||||
and to <xref linkend="SQL-SET" endterm="SQL-SET-TITLE"> for more
|
||||
information on allowed parameters.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Examples</title>
|
||||
|
||||
<para>
|
||||
Set the timezone for Berkeley, California, using double quotes to
|
||||
preserve the uppercase attributes of the time zone specifier (note
|
||||
that the date/time format is ISO here):
|
||||
|
||||
<screen>
|
||||
SET SESSION CHARACTERISTICS TIME ZONE "PST8PDT";
|
||||
SELECT CURRENT_TIMESTAMP AS today;
|
||||
|
||||
today
|
||||
------------------------
|
||||
1998-07-14 07:41:21-07
|
||||
</screen>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 id="R1-SQL-SET-SESSION-3">
|
||||
<title>Compatibility</title>
|
||||
|
||||
<refsect2 id="R2-SQL-SET-SESSION-4">
|
||||
<title>SQL99</title>
|
||||
|
||||
<para>
|
||||
<command>SET SESSION</command> is defined in
|
||||
<acronym>SQL99</acronym>.
|
||||
</para>
|
||||
</refsect2>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode:sgml
|
||||
sgml-omittag:nil
|
||||
sgml-shorttag:t
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-indent-step:1
|
||||
sgml-indent-data:t
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"../reference.ced"
|
||||
sgml-exposed-tags:nil
|
||||
sgml-local-catalogs:("/usr/lib/sgml/catalog")
|
||||
sgml-local-ecat-files:nil
|
||||
End:
|
||||
-->
|
|
@ -1,19 +1,23 @@
|
|||
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/set_transaction.sgml,v 1.2 2000/07/14 15:27:14 thomas Exp $ -->
|
||||
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/set_transaction.sgml,v 1.3 2000/11/24 20:16:38 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>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>SET TRANSACTION</refname>
|
||||
<refpurpose>Set the characteristics of the current SQL-transaction</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<refsynopsisdivinfo>
|
||||
<date>2000-06-01</date>
|
||||
</refsynopsisdivinfo>
|
||||
<synopsis>
|
||||
SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
|
||||
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
|
||||
</synopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
|
@ -21,13 +25,17 @@ SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
|
|||
<title>Description</title>
|
||||
|
||||
<para>
|
||||
The <command>SET TRANSACTION</command> command sets the
|
||||
characteristics for the current SQL-transaction. It has no effect
|
||||
on any subsequent transactions. This command cannot be used after
|
||||
the first DML 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.
|
||||
This command sets the transaction isolation level. The
|
||||
<command>SET TRANSACTION</command> command sets the characteristics
|
||||
for the current SQL-transaction. It has no effect on any subsequent
|
||||
transactions. This command cannot be used after the first DML
|
||||
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>SET SESSION CHARACTERISTICS</command>
|
||||
sets the default transaction isolation level for each transaction
|
||||
for a session. <command>SET TRANSACTION</command> can override it
|
||||
for an individual transaction.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
|
@ -83,7 +91,7 @@ SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
|
|||
|
||||
<para>
|
||||
In <acronym>SQL</acronym> there are two other transaction
|
||||
characteristics that can be set with this command: whether the
|
||||
characteristics that can be set with these commands: whether the
|
||||
transaction is read-only and the size of the diagnostics area.
|
||||
Neither of these concepts are supported in Postgres.
|
||||
</para>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.132 2000/11/14 18:37:42 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.133 2000/11/24 20:16:39 petere Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -2513,16 +2513,6 @@ _copyReindexStmt(ReindexStmt *from)
|
|||
return newnode;
|
||||
}
|
||||
|
||||
static SetSessionStmt *
|
||||
_copySetSessionStmt(SetSessionStmt *from)
|
||||
{
|
||||
SetSessionStmt *newnode = makeNode(SetSessionStmt);
|
||||
|
||||
Node_Copy(from, newnode, args);
|
||||
|
||||
return newnode;
|
||||
}
|
||||
|
||||
|
||||
/* ****************************************************************
|
||||
* pg_list.h copy functions
|
||||
|
@ -2922,9 +2912,6 @@ copyObject(void *from)
|
|||
case T_ReindexStmt:
|
||||
retval = _copyReindexStmt(from);
|
||||
break;
|
||||
case T_SetSessionStmt:
|
||||
retval = _copySetSessionStmt(from);
|
||||
break;
|
||||
case T_CheckPointStmt:
|
||||
retval = (void*)makeNode(CheckPointStmt);
|
||||
break;
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.82 2000/11/14 18:37:42 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.83 2000/11/24 20:16:39 petere Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -1363,15 +1363,6 @@ _equalReindexStmt(ReindexStmt *a, ReindexStmt *b)
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool
|
||||
_equalSetSessionStmt(SetSessionStmt *a, SetSessionStmt *b)
|
||||
{
|
||||
if (!equal(a->args, b->args))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool
|
||||
_equalAExpr(A_Expr *a, A_Expr *b)
|
||||
{
|
||||
|
@ -2037,9 +2028,6 @@ equal(void *a, void *b)
|
|||
case T_ReindexStmt:
|
||||
retval = _equalReindexStmt(a, b);
|
||||
break;
|
||||
case T_SetSessionStmt:
|
||||
retval = _equalSetSessionStmt(a, b);
|
||||
break;
|
||||
case T_CheckPointStmt:
|
||||
retval = true;
|
||||
break;
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: analyze.c,v 1.167 2000/11/18 16:17:20 petere Exp $
|
||||
* $Id: analyze.c,v 1.168 2000/11/24 20:16:39 petere Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -208,38 +208,6 @@ transformStmt(ParseState *pstate, Node *parseTree)
|
|||
result = transformAlterTableStmt(pstate, (AlterTableStmt *) parseTree);
|
||||
break;
|
||||
|
||||
case T_SetSessionStmt:
|
||||
{
|
||||
List *l;
|
||||
/* Session is a list of SetVariable nodes
|
||||
* so just run through the list.
|
||||
*/
|
||||
SetSessionStmt *stmt = (SetSessionStmt *) parseTree;
|
||||
|
||||
l = stmt->args;
|
||||
/* First check for duplicate keywords (disallowed by SQL99) */
|
||||
while (l != NULL)
|
||||
{
|
||||
VariableSetStmt *v = (VariableSetStmt *) lfirst(l);
|
||||
List *ll = lnext(l);
|
||||
while (ll != NULL)
|
||||
{
|
||||
VariableSetStmt *vv = (VariableSetStmt *) lfirst(ll);
|
||||
if (strcmp(v->name, vv->name) == 0)
|
||||
elog(ERROR, "SET SESSION CHARACTERISTICS duplicated entry not allowed");
|
||||
ll = lnext(ll);
|
||||
}
|
||||
l = lnext(l);
|
||||
}
|
||||
|
||||
l = stmt->args;
|
||||
result = transformStmt(pstate, lfirst(l));
|
||||
l = lnext(l);
|
||||
if (l != NULL)
|
||||
extras_after = lappend(extras_after, lfirst(l));
|
||||
}
|
||||
break;
|
||||
|
||||
/*------------------------
|
||||
* Optimizable statements
|
||||
*------------------------
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.209 2000/11/14 18:37:49 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.210 2000/11/24 20:16:39 petere Exp $
|
||||
*
|
||||
* HISTORY
|
||||
* AUTHOR DATE MAJOR EVENT
|
||||
|
@ -134,15 +134,12 @@ static void doNegateFloat(Value *v);
|
|||
NotifyStmt, OptimizableStmt, ProcedureStmt, ReindexStmt,
|
||||
RemoveAggrStmt, RemoveFuncStmt, RemoveOperStmt,
|
||||
RenameStmt, RevokeStmt, RuleActionStmt, RuleActionStmtOrEmpty,
|
||||
RuleStmt, SelectStmt, SetSessionStmt, TransactionStmt, TruncateStmt,
|
||||
RuleStmt, SelectStmt, TransactionStmt, TruncateStmt,
|
||||
UnlistenStmt, UpdateStmt, VacuumStmt, VariableResetStmt,
|
||||
VariableSetStmt, VariableShowStmt, ViewStmt, CheckPointStmt
|
||||
|
||||
%type <node> select_no_parens, select_clause, simple_select
|
||||
|
||||
%type <list> SessionList
|
||||
%type <node> SessionClause
|
||||
|
||||
%type <node> alter_column_action
|
||||
%type <ival> drop_behavior
|
||||
|
||||
|
@ -459,7 +456,6 @@ stmt : AlterSchemaStmt
|
|||
| RevokeStmt
|
||||
| OptimizableStmt
|
||||
| RuleStmt
|
||||
| SetSessionStmt
|
||||
| TransactionStmt
|
||||
| ViewStmt
|
||||
| LoadStmt
|
||||
|
@ -706,55 +702,6 @@ DropSchemaStmt: DROP SCHEMA UserId
|
|||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* Manipulate a postgresql session
|
||||
*
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
SetSessionStmt: SET SESSION CHARACTERISTICS AS SessionList
|
||||
{
|
||||
SetSessionStmt *n = makeNode(SetSessionStmt);
|
||||
n->args = $5;
|
||||
$$ = (Node*)n;
|
||||
}
|
||||
;
|
||||
|
||||
SessionList: SessionList ',' SessionClause
|
||||
{
|
||||
$$ = lappend($1, $3);
|
||||
}
|
||||
| SessionClause
|
||||
{
|
||||
$$ = makeList1($1);
|
||||
}
|
||||
;
|
||||
|
||||
SessionClause: TRANSACTION COMMIT opt_boolean
|
||||
{
|
||||
VariableSetStmt *n = makeNode(VariableSetStmt);
|
||||
n->name = "autocommit";
|
||||
n->value = $3;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| TIME ZONE zone_value
|
||||
{
|
||||
VariableSetStmt *n = makeNode(VariableSetStmt);
|
||||
n->name = "timezone";
|
||||
n->value = $3;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| TRANSACTION ISOLATION LEVEL opt_level
|
||||
{
|
||||
VariableSetStmt *n = makeNode(VariableSetStmt);
|
||||
n->name = "DefaultXactIsoLevel";
|
||||
n->value = $4;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
;
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* Set PG internal variable
|
||||
|
@ -792,6 +739,13 @@ VariableSetStmt: SET ColId TO var_value
|
|||
n->value = $5;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL opt_level
|
||||
{
|
||||
VariableSetStmt *n = makeNode(VariableSetStmt);
|
||||
n->name = "DefaultXactIsoLevel";
|
||||
n->value = $8;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| SET NAMES opt_encoding
|
||||
{
|
||||
VariableSetStmt *n = makeNode(VariableSetStmt);
|
||||
|
@ -5444,6 +5398,7 @@ TokenId: ABSOLUTE { $$ = "absolute"; }
|
|||
| CACHE { $$ = "cache"; }
|
||||
| CASCADE { $$ = "cascade"; }
|
||||
| CHAIN { $$ = "chain"; }
|
||||
| CHARACTERISTICS { $$ = "characteristics"; }
|
||||
| CHECKPOINT { $$ = "checkpoint"; }
|
||||
| CLOSE { $$ = "close"; }
|
||||
| COMMENT { $$ = "comment"; }
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: nodes.h,v 1.83 2000/11/12 00:37:01 tgl Exp $
|
||||
* $Id: nodes.h,v 1.84 2000/11/24 20:16:40 petere Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -202,7 +202,6 @@ typedef enum NodeTag
|
|||
T_AlterGroupStmt,
|
||||
T_DropGroupStmt,
|
||||
T_ReindexStmt,
|
||||
T_SetSessionStmt,
|
||||
T_CheckPointStmt,
|
||||
|
||||
T_A_Expr = 700,
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: parsenodes.h,v 1.121 2000/11/14 18:37:48 tgl Exp $
|
||||
* $Id: parsenodes.h,v 1.122 2000/11/24 20:16:40 petere Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -697,15 +697,9 @@ typedef struct ExplainStmt
|
|||
} ExplainStmt;
|
||||
|
||||
/* ----------------------
|
||||
* Set Session Statement
|
||||
* Checkpoint Statement
|
||||
* ----------------------
|
||||
*/
|
||||
typedef struct SetSessionStmt
|
||||
{
|
||||
NodeTag type;
|
||||
List *args;
|
||||
} SetSessionStmt;
|
||||
|
||||
typedef struct CheckPointStmt
|
||||
{
|
||||
NodeTag type;
|
||||
|
|
Loading…
Reference in New Issue