Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
d015dcbe
Commit
d015dcbe
authored
Oct 09, 2002
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Have SET not start transaction when autocommit off, with doc updates.
parent
eb949720
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
63 additions
and
22 deletions
+63
-22
doc/src/sgml/ref/reset.sgml
doc/src/sgml/ref/reset.sgml
+7
-1
doc/src/sgml/ref/set.sgml
doc/src/sgml/ref/set.sgml
+7
-1
doc/src/sgml/runtime.sgml
doc/src/sgml/runtime.sgml
+27
-11
src/backend/tcop/postgres.c
src/backend/tcop/postgres.c
+22
-9
No files found.
doc/src/sgml/ref/reset.sgml
View file @
d015dcbe
<!--
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/reset.sgml,v 1.1
5 2002/09/21 18:32:54 petere
Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/ref/reset.sgml,v 1.1
6 2002/10/09 04:59:38 momjian
Exp $
PostgreSQL documentation
PostgreSQL documentation
-->
-->
...
@@ -66,6 +66,12 @@ SET <replaceable class="parameter">variable</replaceable> TO DEFAULT
...
@@ -66,6 +66,12 @@ SET <replaceable class="parameter">variable</replaceable> TO DEFAULT
switches, or per-database or per-user default settings. See the
switches, or per-database or per-user default settings. See the
<citetitle>Administrator's Guide</citetitle> for details.
<citetitle>Administrator's Guide</citetitle> for details.
</para>
</para>
<para>
See the <command>SHOW</> manual page for details on the transaction
behavior of <command>RESET</>.
</para>
</refsect1>
</refsect1>
<refsect1>
<refsect1>
...
...
doc/src/sgml/ref/set.sgml
View file @
d015dcbe
<!--
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/set.sgml,v 1.6
5 2002/09/21 18:32:54 petere
Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/ref/set.sgml,v 1.6
6 2002/10/09 04:59:38 momjian
Exp $
PostgreSQL documentation
PostgreSQL documentation
-->
-->
...
@@ -108,6 +108,12 @@ SET [ SESSION | LOCAL ] TIME ZONE { <replaceable class="PARAMETER">timezone</rep
...
@@ -108,6 +108,12 @@ SET [ SESSION | LOCAL ] TIME ZONE { <replaceable class="PARAMETER">timezone</rep
is committed) the <command>SET</command> value will take effect.
is committed) the <command>SET</command> value will take effect.
</para>
</para>
<para>
With <literal>autocommit</> set to <literal>off</>, <command>SET</>
does not start a new transaction block. See the
<literal>autocommit</> section of the documentation for details.
</para>
<para>
<para>
Here are additional details about a few of the parameters that can be set:
Here are additional details about a few of the parameters that can be set:
...
...
doc/src/sgml/runtime.sgml
View file @
d015dcbe
<!--
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.14
3 2002/10/03 02:26:49
momjian Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.14
4 2002/10/09 04:59:38
momjian Exp $
-->
-->
<Chapter Id="runtime">
<Chapter Id="runtime">
...
@@ -1235,16 +1235,32 @@ env PGOPTIONS='-c geqo=off' psql
...
@@ -1235,16 +1235,32 @@ env PGOPTIONS='-c geqo=off' psql
that is not inside an explicit transaction block (that is, unless a
that is not inside an explicit transaction block (that is, unless a
<command>BEGIN</> with no matching <command>COMMIT</> has been
<command>BEGIN</> with no matching <command>COMMIT</> has been
given).
given).
If set to false, <productname>PostgreSQL</productname> will
commit
If set to false, <productname>PostgreSQL</productname> will
the effects of commands only o
n receiving an explicit
commit the commands only whe
n receiving an explicit
<command>COMMIT</> command. This mode can also be thought of as
<command>COMMIT</> command. This mode can also be thought of as
implicitly issuing <command>BEGIN</> whenever a command is
received
implicitly issuing <command>BEGIN</> whenever a command is
and <productname>PostgreSQL</productname> is not already insid
e
received that is not already inside a transaction block. Th
e
a transaction block.
default is true, for compatibility with historical
The default is true, for compatibility with historical
<productname>PostgreSQL</productname> behavior. However, for
<productname>PostgreSQL</productname> behavior. But for maximum
maximum compatibility with the SQL specification, set it to
compatibility with the SQL specification, set it to
false.
false.
</para>
</para>
<note>
<para>
With <varname>autocommit</> set to false, <command>SET</>,
<command>SHOW</>, and <command>RESET</> do not start new
transaction blocks. They are run in their own transactions.
Once another command is issued, multi-statement transaction
behavior begins and any <command>SET</>, <command>SHOW</>, or
<command>RESET</> commands are considered to be part of the
transaction, i.e. they are committed or rolled back depending
on the completion status of the transaction. To have
<command>SET</>, <command>SHOW</>, and <command>RESET</>
commands at the start of a transaction, use <command>BEGIN</>
first.
</para>
</note>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
...
...
src/backend/tcop/postgres.c
View file @
d015dcbe
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
*
*
*
*
* IDENTIFICATION
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.
299 2002/10/08 17:17:19 tgl
Exp $
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.
300 2002/10/09 04:59:38 momjian
Exp $
*
*
* NOTES
* NOTES
* this is the "main" module of the postgres backend and
* this is the "main" module of the postgres backend and
...
@@ -76,6 +76,7 @@ char *debug_query_string; /* for pgmonitor and
...
@@ -76,6 +76,7 @@ char *debug_query_string; /* for pgmonitor and
CommandDest
whereToSendOutput
=
Debug
;
CommandDest
whereToSendOutput
=
Debug
;
extern
int
StatementTimeout
;
extern
int
StatementTimeout
;
extern
bool
autocommit
;
static
bool
dontExecute
=
false
;
static
bool
dontExecute
=
false
;
...
@@ -122,7 +123,7 @@ static int ReadCommand(StringInfo inBuf);
...
@@ -122,7 +123,7 @@ static int ReadCommand(StringInfo inBuf);
static
List
*
pg_parse_query
(
StringInfo
query_string
,
Oid
*
typev
,
int
nargs
);
static
List
*
pg_parse_query
(
StringInfo
query_string
,
Oid
*
typev
,
int
nargs
);
static
List
*
pg_analyze_and_rewrite
(
Node
*
parsetree
);
static
List
*
pg_analyze_and_rewrite
(
Node
*
parsetree
);
static
void
start_xact_command
(
void
);
static
void
start_xact_command
(
void
);
static
void
finish_xact_command
(
void
);
static
void
finish_xact_command
(
bool
forceCommit
);
static
void
SigHupHandler
(
SIGNAL_ARGS
);
static
void
SigHupHandler
(
SIGNAL_ARGS
);
static
void
FloatExceptionHandler
(
SIGNAL_ARGS
);
static
void
FloatExceptionHandler
(
SIGNAL_ARGS
);
static
const
char
*
CreateCommandTag
(
Node
*
parsetree
);
static
const
char
*
CreateCommandTag
(
Node
*
parsetree
);
...
@@ -825,7 +826,7 @@ pg_exec_query_string(StringInfo query_string, /* string to execute */
...
@@ -825,7 +826,7 @@ pg_exec_query_string(StringInfo query_string, /* string to execute */
*/
*/
if
(
isTransactionStmt
)
if
(
isTransactionStmt
)
{
{
finish_xact_command
();
finish_xact_command
(
false
);
xact_started
=
false
;
xact_started
=
false
;
}
}
}
/* end loop over queries generated from a
}
/* end loop over queries generated from a
...
@@ -843,7 +844,19 @@ pg_exec_query_string(StringInfo query_string, /* string to execute */
...
@@ -843,7 +844,19 @@ pg_exec_query_string(StringInfo query_string, /* string to execute */
*/
*/
if
(
lnext
(
parsetree_item
)
==
NIL
&&
xact_started
)
if
(
lnext
(
parsetree_item
)
==
NIL
&&
xact_started
)
{
{
finish_xact_command
();
/*
* Don't allow SET/SHOW/RESET to start a new transaction
* with autocommit off. We do this by forcing a COMMIT
* when these commands start a transaction.
*/
if
(
autocommit
||
IsTransactionState
()
||
(
strcmp
(
commandTag
,
"SET"
)
!=
0
&&
strcmp
(
commandTag
,
"SHOW"
)
!=
0
&&
strcmp
(
commandTag
,
"RESET"
)
!=
0
))
finish_xact_command
(
false
);
else
finish_xact_command
(
true
);
xact_started
=
false
;
xact_started
=
false
;
}
}
...
@@ -878,7 +891,7 @@ pg_exec_query_string(StringInfo query_string, /* string to execute */
...
@@ -878,7 +891,7 @@ pg_exec_query_string(StringInfo query_string, /* string to execute */
* will only happen if the querystring was empty.)
* will only happen if the querystring was empty.)
*/
*/
if
(
xact_started
)
if
(
xact_started
)
finish_xact_command
();
finish_xact_command
(
false
);
if
(
save_Log_duration
)
if
(
save_Log_duration
)
{
{
...
@@ -907,7 +920,7 @@ start_xact_command(void)
...
@@ -907,7 +920,7 @@ start_xact_command(void)
}
}
static
void
static
void
finish_xact_command
(
void
)
finish_xact_command
(
bool
forceCommit
)
{
{
/* Invoke IMMEDIATE constraint triggers */
/* Invoke IMMEDIATE constraint triggers */
DeferredTriggerEndQuery
();
DeferredTriggerEndQuery
();
...
@@ -915,7 +928,7 @@ finish_xact_command(void)
...
@@ -915,7 +928,7 @@ finish_xact_command(void)
/* Now commit the command */
/* Now commit the command */
elog
(
DEBUG1
,
"CommitTransactionCommand"
);
elog
(
DEBUG1
,
"CommitTransactionCommand"
);
CommitTransactionCommand
(
f
alse
);
CommitTransactionCommand
(
f
orceCommit
);
#ifdef SHOW_MEMORY_STATS
#ifdef SHOW_MEMORY_STATS
/* Print mem stats at each commit for leak tracking */
/* Print mem stats at each commit for leak tracking */
...
@@ -1720,7 +1733,7 @@ PostgresMain(int argc, char *argv[], const char *username)
...
@@ -1720,7 +1733,7 @@ PostgresMain(int argc, char *argv[], const char *username)
if
(
!
IsUnderPostmaster
)
if
(
!
IsUnderPostmaster
)
{
{
puts
(
"
\n
POSTGRES backend interactive interface "
);
puts
(
"
\n
POSTGRES backend interactive interface "
);
puts
(
"$Revision: 1.
299 $ $Date: 2002/10/08 17:17:19
$
\n
"
);
puts
(
"$Revision: 1.
300 $ $Date: 2002/10/09 04:59:38
$
\n
"
);
}
}
/*
/*
...
@@ -1923,7 +1936,7 @@ PostgresMain(int argc, char *argv[], const char *username)
...
@@ -1923,7 +1936,7 @@ PostgresMain(int argc, char *argv[], const char *username)
}
}
/* commit the function-invocation transaction */
/* commit the function-invocation transaction */
finish_xact_command
();
finish_xact_command
(
false
);
break
;
break
;
/*
/*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment