1
0
mirror of https://github.com/postgres/postgres.git synced 2025-10-13 18:28:01 +03:00

Backend support for autocommit removed, per recent discussions. The

only remnant of this failed experiment is that the server will take
SET AUTOCOMMIT TO ON.  Still TODO: provide some client-side autocommit
logic in libpq.
This commit is contained in:
Tom Lane
2003-05-14 03:26:03 +00:00
parent d9b679c13a
commit f85f43dfb5
99 changed files with 277 additions and 536 deletions

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.343 2003/05/12 16:48:17 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.344 2003/05/14 03:26:01 tgl Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
@@ -85,8 +85,6 @@ sigjmp_buf Warn_restart;
bool Warn_restart_ready = false;
bool InError = false;
extern bool autocommit;
/*
* Flags for expensive function optimization -- JMH 3/9/92
*/
@@ -148,7 +146,7 @@ static int InteractiveBackend(StringInfo inBuf);
static int SocketBackend(StringInfo inBuf);
static int ReadCommand(StringInfo inBuf);
static void start_xact_command(void);
static void finish_xact_command(bool forceCommit);
static void finish_xact_command(void);
static void SigHupHandler(SIGNAL_ARGS);
static void FloatExceptionHandler(SIGNAL_ARGS);
@@ -861,20 +859,15 @@ exec_simple_query(const char *query_string)
PortalDrop(portal, false);
if (IsA(parsetree, TransactionStmt) ||
IsA(parsetree, VariableSetStmt) ||
IsA(parsetree, VariableShowStmt) ||
IsA(parsetree, VariableResetStmt))
if (IsA(parsetree, TransactionStmt))
{
/*
* If this was a transaction control statement or a variable
* set/show/reset statement, commit it. We will start a
* new xact command for the next command (if any).
* If this was a transaction control statement, commit it.
* We will start a new xact command for the next command (if any).
*/
finish_xact_command(true);
finish_xact_command();
}
else if (lnext(parsetree_item) == NIL || !autocommit)
else if (lnext(parsetree_item) == NIL)
{
/*
* If this is the last parsetree of the query string, close down
@@ -886,7 +879,7 @@ exec_simple_query(const char *query_string)
* historical Postgres behavior, we do not force a transaction
* boundary between queries appearing in a single query string.
*/
finish_xact_command(false);
finish_xact_command();
}
else
{
@@ -907,6 +900,11 @@ exec_simple_query(const char *query_string)
EndCommand(completionTag, dest);
} /* end loop over parsetrees */
/*
* Close down transaction statement, if one is open.
*/
finish_xact_command();
/*
* If there were no parsetrees, return EmptyQueryResponse message.
*/
@@ -915,11 +913,6 @@ exec_simple_query(const char *query_string)
QueryContext = NULL;
/*
* Close down transaction statement, if one is open.
*/
finish_xact_command(false);
/*
* Finish up monitoring.
*/
@@ -1531,7 +1524,7 @@ exec_execute_message(const char *portal_name, long max_rows)
* If this was a transaction control statement, commit it. We will
* start a new xact command for the next command (if any).
*/
finish_xact_command(true);
finish_xact_command();
}
else
{
@@ -1657,7 +1650,7 @@ start_xact_command(void)
if (!xact_started)
{
elog(DEBUG2, "StartTransactionCommand");
StartTransactionCommand(false);
StartTransactionCommand();
/* Set statement timeout running, if any */
if (StatementTimeout > 0)
@@ -1668,7 +1661,7 @@ start_xact_command(void)
}
static void
finish_xact_command(bool forceCommit)
finish_xact_command(void)
{
if (xact_started)
{
@@ -1681,7 +1674,7 @@ finish_xact_command(bool forceCommit)
/* Now commit the command */
elog(DEBUG2, "CommitTransactionCommand");
CommitTransactionCommand(forceCommit);
CommitTransactionCommand();
#ifdef SHOW_MEMORY_STATS
/* Print mem stats at each commit for leak tracking */
@@ -2532,7 +2525,7 @@ PostgresMain(int argc, char *argv[], const char *username)
if (!IsUnderPostmaster)
{
puts("\nPOSTGRES backend interactive interface ");
puts("$Revision: 1.343 $ $Date: 2003/05/12 16:48:17 $\n");
puts("$Revision: 1.344 $ $Date: 2003/05/14 03:26:01 $\n");
}
/*
@@ -2810,7 +2803,7 @@ PostgresMain(int argc, char *argv[], const char *username)
}
/* commit the function-invocation transaction */
finish_xact_command(false);
finish_xact_command();
send_rfq = true;
break;
@@ -2894,7 +2887,7 @@ PostgresMain(int argc, char *argv[], const char *username)
case 'S': /* sync */
pq_getmsgend(input_message);
finish_xact_command(false);
finish_xact_command();
send_rfq = true;
break;