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
Hide 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
-->
...
...
@@ -66,6 +66,12 @@ SET <replaceable class="parameter">variable</replaceable> TO DEFAULT
switches, or per-database or per-user default settings. See the
<citetitle>Administrator's Guide</citetitle> for details.
</para>
<para>
See the <command>SHOW</> manual page for details on the transaction
behavior of <command>RESET</>.
</para>
</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
-->
...
...
@@ -108,6 +108,12 @@ SET [ SESSION | LOCAL ] TIME ZONE { <replaceable class="PARAMETER">timezone</rep
is committed) the <command>SET</command> value will take effect.
</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>
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">
...
...
@@ -1235,16 +1235,32 @@ env PGOPTIONS='-c geqo=off' psql
that is not inside an explicit transaction block (that is, unless a
<command>BEGIN</> with no matching <command>COMMIT</> has been
given).
If set to false, <productname>PostgreSQL</productname> will commit
the effects of commands only on receiving an explicit
<command>COMMIT</> command. This mode can also be thought of as
implicitly issuing <command>BEGIN</> whenever a command is received
and <productname>PostgreSQL</productname> is not already inside
a transaction block.
The default is true, for compatibility with historical
<productname>PostgreSQL</productname> behavior. But for maximum
compatibility with the SQL specification, set it to false.
</para>
If set to false, <productname>PostgreSQL</productname> will
commit the commands only when receiving an explicit
<command>COMMIT</> command. This mode can also be thought of as
implicitly issuing <command>BEGIN</> whenever a command is
received that is not already inside a transaction block. The
default is true, for compatibility with historical
<productname>PostgreSQL</productname> behavior. However, for
maximum compatibility with the SQL specification, set it to
false.
</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>
</varlistentry>
...
...
src/backend/tcop/postgres.c
View file @
d015dcbe
...
...
@@ -8,7 +8,7 @@
*
*
* 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
* this is the "main" module of the postgres backend and
...
...
@@ -76,6 +76,7 @@ char *debug_query_string; /* for pgmonitor and
CommandDest
whereToSendOutput
=
Debug
;
extern
int
StatementTimeout
;
extern
bool
autocommit
;
static
bool
dontExecute
=
false
;
...
...
@@ -122,7 +123,7 @@ static int ReadCommand(StringInfo inBuf);
static
List
*
pg_parse_query
(
StringInfo
query_string
,
Oid
*
typev
,
int
nargs
);
static
List
*
pg_analyze_and_rewrite
(
Node
*
parsetree
);
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
FloatExceptionHandler
(
SIGNAL_ARGS
);
static
const
char
*
CreateCommandTag
(
Node
*
parsetree
);
...
...
@@ -825,7 +826,7 @@ pg_exec_query_string(StringInfo query_string, /* string to execute */
*/
if
(
isTransactionStmt
)
{
finish_xact_command
();
finish_xact_command
(
false
);
xact_started
=
false
;
}
}
/* end loop over queries generated from a
...
...
@@ -843,7 +844,19 @@ pg_exec_query_string(StringInfo query_string, /* string to execute */
*/
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
;
}
...
...
@@ -878,7 +891,7 @@ pg_exec_query_string(StringInfo query_string, /* string to execute */
* will only happen if the querystring was empty.)
*/
if
(
xact_started
)
finish_xact_command
();
finish_xact_command
(
false
);
if
(
save_Log_duration
)
{
...
...
@@ -907,7 +920,7 @@ start_xact_command(void)
}
static
void
finish_xact_command
(
void
)
finish_xact_command
(
bool
forceCommit
)
{
/* Invoke IMMEDIATE constraint triggers */
DeferredTriggerEndQuery
();
...
...
@@ -915,7 +928,7 @@ finish_xact_command(void)
/* Now commit the command */
elog
(
DEBUG1
,
"CommitTransactionCommand"
);
CommitTransactionCommand
(
f
alse
);
CommitTransactionCommand
(
f
orceCommit
);
#ifdef SHOW_MEMORY_STATS
/* Print mem stats at each commit for leak tracking */
...
...
@@ -1720,7 +1733,7 @@ PostgresMain(int argc, char *argv[], const char *username)
if
(
!
IsUnderPostmaster
)
{
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)
}
/* commit the function-invocation transaction */
finish_xact_command
();
finish_xact_command
(
false
);
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