mirror of https://github.com/citusdata/citus.git
64 lines
1.3 KiB
C
64 lines
1.3 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* begin.c
|
|
* Processing of the BEGIN command.
|
|
*
|
|
* Copyright (c) Citus Data, Inc.
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
|
|
#include "postgres.h"
|
|
|
|
#include "c.h"
|
|
|
|
#include "nodes/parsenodes.h"
|
|
|
|
#include "distributed/commands.h"
|
|
#include "distributed/listutils.h"
|
|
#include "distributed/transaction_management.h"
|
|
|
|
|
|
/*
|
|
* SaveBeginCommandProperties stores the transaction properties passed
|
|
* via BEGIN.
|
|
*/
|
|
void
|
|
SaveBeginCommandProperties(TransactionStmt *transactionStmt)
|
|
{
|
|
DefElem *item = NULL;
|
|
|
|
/*
|
|
* This loop is similar to the one in standard_ProcessUtility.
|
|
*
|
|
* While BEGIN can be quite frequent it will rarely have options set.
|
|
*/
|
|
foreach_declared_ptr(item, transactionStmt->options)
|
|
{
|
|
A_Const *constant = (A_Const *) item->arg;
|
|
|
|
if (strcmp(item->defname, "transaction_read_only") == 0)
|
|
{
|
|
if (intVal(&constant->val) == 1)
|
|
{
|
|
BeginXactReadOnly = BeginXactReadOnly_Enabled;
|
|
}
|
|
else
|
|
{
|
|
BeginXactReadOnly = BeginXactReadOnly_Disabled;
|
|
}
|
|
}
|
|
else if (strcmp(item->defname, "transaction_deferrable") == 0)
|
|
{
|
|
if (intVal(&constant->val) == 1)
|
|
{
|
|
BeginXactDeferrable = BeginXactDeferrable_Enabled;
|
|
}
|
|
else
|
|
{
|
|
BeginXactDeferrable = BeginXactDeferrable_Disabled;
|
|
}
|
|
}
|
|
}
|
|
}
|