1328
1328
static bool set_option_autocommit(Session *session, set_var *var)
1330
1331
/* The test is negative as the flag we use is NOT autocommit */
1332
1333
uint64_t org_options= session->options;
1334
uint64_t new_options= session->options;
1334
1336
if (var->getInteger() != 0)
1335
session->options&= ~((sys_var_session_bit*) var->var)->bit_flag;
1337
new_options&= ~((sys_var_session_bit*) var->var)->bit_flag;
1337
session->options|= ((sys_var_session_bit*) var->var)->bit_flag;
1339
new_options|= ((sys_var_session_bit*) var->var)->bit_flag;
1339
if ((org_options ^ session->options) & OPTION_NOT_AUTOCOMMIT)
1341
if ((org_options ^ new_options) & OPTION_NOT_AUTOCOMMIT)
1341
1343
if ((org_options & OPTION_NOT_AUTOCOMMIT))
1345
success= session->endActiveTransaction();
1343
1346
/* We changed to auto_commit mode */
1344
1347
session->options&= ~(uint64_t) (OPTION_BEGIN);
1345
1348
session->server_status|= SERVER_STATUS_AUTOCOMMIT;
1346
TransactionServices &transaction_services= TransactionServices::singleton();
1347
if (transaction_services.commitTransaction(session, true))
1352
1352
session->server_status&= ~SERVER_STATUS_AUTOCOMMIT;
1356
if (var->getInteger() != 0)
1357
session->options&= ~((sys_var_session_bit*) var->var)->bit_flag;
1359
session->options|= ((sys_var_session_bit*) var->var)->bit_flag;