~drizzle-trunk/drizzle/development

1100.3.55 by Padraig O'Sullivan
Extracted the BEGIN command into its own class and implementation files.
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 *
1999.6.1 by kalebral at gmail
update Copyright strings to a more common format to help with creating the master debian copyright file
4
 *  Copyright (C) 2009 Sun Microsystems, Inc.
1100.3.55 by Padraig O'Sullivan
Extracted the BEGIN command into its own class and implementation files.
5
 *
6
 *  This program is free software; you can redistribute it and/or modify
7
 *  it under the terms of the GNU General Public License as published by
8
 *  the Free Software Foundation; either version 2 of the License, or
9
 *  (at your option) any later version.
10
 *
11
 *  This program is distributed in the hope that it will be useful,
12
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 *  GNU General Public License for more details.
15
 *
16
 *  You should have received a copy of the GNU General Public License
17
 *  along with this program; if not, write to the Free Software
18
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
 */
20
2173.2.1 by Monty Taylor
Fixes incorrect usage of include
21
#include <config.h>
1100.3.55 by Padraig O'Sullivan
Extracted the BEGIN command into its own class and implementation files.
22
#include <drizzled/show.h>
23
#include <drizzled/session.h>
1100.3.60 by Padraig O'Sullivan
Changed the command Begin to StartTransaction based on code review comments
24
#include <drizzled/statement/start_transaction.h>
2241.3.4 by Olaf van der Spek
Refactor Session::transaction
25
#include <drizzled/session/transactions.h>
1100.3.55 by Padraig O'Sullivan
Extracted the BEGIN command into its own class and implementation files.
26
2241.3.4 by Olaf van der Spek
Refactor Session::transaction
27
namespace drizzled {
1100.3.55 by Padraig O'Sullivan
Extracted the BEGIN command into its own class and implementation files.
28
1100.3.60 by Padraig O'Sullivan
Changed the command Begin to StartTransaction based on code review comments
29
bool statement::StartTransaction::execute()
1100.3.55 by Padraig O'Sullivan
Extracted the BEGIN command into its own class and implementation files.
30
{
2227.4.1 by Olaf van der Spek
Statement::session()
31
  if (session().inTransaction())
2131.9.1 by Stewart Smith
on START TRANSACTION being called during a transaction, output a warning that a transaction is already in progress. This is the same behaviour as PostgreSQL. We used to do an implicit commit. This is totally not the right thing to do.
32
  {
2227.4.2 by Olaf van der Spek
Statement::session()
33
    push_warning_printf(&session(), DRIZZLE_ERROR::WARN_LEVEL_WARN,
2131.9.1 by Stewart Smith
on START TRANSACTION being called during a transaction, output a warning that a transaction is already in progress. This is the same behaviour as PostgreSQL. We used to do an implicit commit. This is totally not the right thing to do.
34
                        ER_TRANSACTION_ALREADY_STARTED,
35
                        ER(ER_TRANSACTION_ALREADY_STARTED));
36
    return false;
37
  }
38
2224.2.2 by Olaf van der Spek
Refactor
39
  if (transaction().xid_state.xa_state != XA_NOTR)
1100.3.55 by Padraig O'Sullivan
Extracted the BEGIN command into its own class and implementation files.
40
  {
41
    my_error(ER_XAER_RMFAIL, MYF(0),
2224.2.2 by Olaf van der Spek
Refactor
42
        xa_state_names[transaction().xid_state.xa_state]);
1100.3.55 by Padraig O'Sullivan
Extracted the BEGIN command into its own class and implementation files.
43
    return false;
44
  }
45
  /*
46
     Breakpoints for backup testing.
47
   */
2227.4.1 by Olaf van der Spek
Statement::session()
48
  if (! session().startTransaction(start_transaction_opt))
1100.3.55 by Padraig O'Sullivan
Extracted the BEGIN command into its own class and implementation files.
49
  {
50
    return true;
51
  }
2227.4.1 by Olaf van der Spek
Statement::session()
52
  session().my_ok();
1100.3.55 by Padraig O'Sullivan
Extracted the BEGIN command into its own class and implementation files.
53
  return false;
54
}
1130.3.12 by Monty Taylor
using namespace drizzled; to namespace drizzled { in statement/
55
56
}