~drizzle-trunk/drizzle/development

1502.1.19 by Brian Aker
Adds concept of table owned TableShare.
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 *
4
 *  Copyright (C) 2010 Brian Aker
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
21
/* Structs that defines the Table */
22
2234 by Brian Aker
Mass removal of ifdef/endif in favor of pragma once.
23
#pragma once
1502.1.19 by Brian Aker
Adds concept of table owned TableShare.
24
2241.3.6 by Olaf van der Spek
Refactor
25
namespace drizzled {
26
namespace table {
1843.8.4 by Brian Aker
Committing refactor of table out (this is part of the concurrency work).
27
2069.4.2 by Brian Aker
Clear up naming convention for table type.
28
class Singular : public Table
1502.1.19 by Brian Aker
Adds concept of table owned TableShare.
29
{
1827.2.3 by Brian Aker
Switches table_share_instance to be a member of table, not table_share
30
  TableShare _share;
1835.1.3 by Brian Aker
Fix variable such that we no longer pass share to varstring on creation.
31
  bool _has_variable_width;
1532.1.1 by Brian Aker
Merge of change to flip table instance to be share instance
32
1502.1.19 by Brian Aker
Adds concept of table owned TableShare.
33
public:
2069.4.2 by Brian Aker
Clear up naming convention for table type.
34
  Singular() :
1843.8.5 by Brian Aker
Added concurrent type.
35
    _share(message::Table::INTERNAL),
1835.1.3 by Brian Aker
Fix variable such that we no longer pass share to varstring on creation.
36
    _has_variable_width(false)
1532.1.1 by Brian Aker
Merge of change to flip table instance to be share instance
37
  {
38
  }
39
2241.3.6 by Olaf van der Spek
Refactor
40
  Singular(Session *session, std::list<CreateField>&);
1878.5.1 by Brian Aker
Update instance for handling construction of virtual_tmp
41
2241.3.6 by Olaf van der Spek
Refactor
42
  TableShare *getMutableShare()
1827.2.3 by Brian Aker
Switches table_share_instance to be a member of table, not table_share
43
  {
44
    return &_share;
45
  }
46
1843.8.7 by Brian Aker
Add assert to setShare() for instance tables (we should never change out a
47
  void setShare(TableShare *)
48
  {
49
    assert(0);
50
  }
51
2241.3.6 by Olaf van der Spek
Refactor
52
  const TableShare *getShare() const
1827.2.3 by Brian Aker
Switches table_share_instance to be a member of table, not table_share
53
  {
54
    return &_share;
1532.1.1 by Brian Aker
Merge of change to flip table instance to be share instance
55
  }
56
1859.2.10 by Brian Aker
Move all of the table bits out so that Table is an abstract class.
57
  bool hasShare() const { return true; }
58
1903.1.1 by Brian Aker
Merge of partial set of patches for locks.
59
  void release() {};
60
1835.1.3 by Brian Aker
Fix variable such that we no longer pass share to varstring on creation.
61
  bool hasVariableWidth() const
62
  {
63
    return _has_variable_width;
64
  }
65
1843.8.3 by Brian Aker
Break out table types (first pass).
66
  bool create_myisam_tmp_table(KeyInfo *keyinfo,
67
                               MI_COLUMNDEF *start_recinfo,
68
                               MI_COLUMNDEF **recinfo,
69
                               uint64_t options);
70
  void setup_tmp_table_column_bitmaps();
71
  bool open_tmp_table();
72
1835.1.3 by Brian Aker
Fix variable such that we no longer pass share to varstring on creation.
73
  void setVariableWidth()
74
  {
75
    _has_variable_width= true;
76
  }
77
2069.4.2 by Brian Aker
Clear up naming convention for table type.
78
  ~Singular();
1502.1.19 by Brian Aker
Adds concept of table owned TableShare.
79
};
80
1843.8.4 by Brian Aker
Committing refactor of table out (this is part of the concurrency work).
81
} /* namespace table */
1502.1.19 by Brian Aker
Adds concept of table owned TableShare.
82
} /* namespace drizzled */
83