~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/cursor.h

  • Committer: Brian Aker
  • Date: 2011-02-22 06:12:02 UTC
  • mfrom: (2190.1.6 drizzle-build)
  • Revision ID: brian@tangent.org-20110222061202-k03czxykqy4x9hjs
List update, header fixes, multiple symbols, and David deletes some code.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
#ifndef DRIZZLED_CURSOR_H
21
21
#define DRIZZLED_CURSOR_H
22
22
 
23
 
#include <drizzled/xid.h>
 
23
#include <drizzled/atomics.h>
 
24
#include <drizzled/definitions.h>
24
25
#include <drizzled/discrete_interval.h>
 
26
#include <drizzled/error_t.h>
 
27
#include <drizzled/ha_statistics.h>
 
28
#include <drizzled/handler_structs.h>
25
29
#include <drizzled/identifier.h>
26
 
#include <drizzled/definitions.h>
27
30
#include <drizzled/key_map.h>
28
 
 
29
 
/* Definitions for parameters to do with Cursor-routines */
30
 
 
 
31
#include <drizzled/message/table.h>
 
32
#include <drizzled/sql_list.h>
31
33
#include <drizzled/thr_lock.h>
32
 
#include <drizzled/sql_string.h>
33
 
#include <drizzled/sql_list.h>
34
 
#include <drizzled/plugin/storage_engine.h>
35
 
#include <drizzled/handler_structs.h>
36
 
#include <drizzled/ha_statistics.h>
37
 
#include <drizzled/atomics.h>
38
 
 
39
 
#include <drizzled/message/table.pb.h>
 
34
#include <drizzled/xid.h>
40
35
 
41
36
#include <bitset>
42
37
#include <algorithm>
43
38
 
 
39
#include <drizzled/visibility.h>
 
40
 
44
41
namespace drizzled
45
42
{
46
43
 
48
45
 
49
46
typedef std::bitset<HA_MAX_ALTER_FLAGS> HA_ALTER_FLAGS;
50
47
 
51
 
extern uint64_t refresh_version;  /* Increments on each reload */
52
 
 
53
 
class Table;
54
 
class TableList;
55
 
class TableShare;
56
 
class Select_Lex_Unit;
 
48
class AlterInfo;
 
49
class CreateField;
57
50
class ForeignKeyInfo;
58
 
struct Order;
59
 
 
60
51
class Item;
61
 
 
 
52
class Item_ident;
62
53
class LEX;
63
54
class Select_Lex;
64
 
class AlterInfo;
 
55
class Select_Lex_Unit;
 
56
class String;
 
57
class Table;
 
58
class TableList;
 
59
class TableShare;
65
60
class select_result;
66
 
class CreateField;
67
61
class sys_var_str;
68
 
class Item_ident;
 
62
struct Order;
69
63
 
70
64
typedef List<Item> List_item;
71
65
extern KEY_CREATE_INFO default_key_create_info;
75
69
 
76
70
typedef struct system_status_var system_status_var;
77
71
 
78
 
namespace optimizer
79
 
{
80
 
  class CostVector;
81
 
}
 
72
namespace optimizer { class CostVector; }
 
73
namespace plugin { class StorageEngine; }
82
74
 
83
75
/*
84
76
  bitmap with first N+1 bits set
143
135
  If a blob column has NULL value, then its length and blob data pointer
144
136
  must be set to 0.
145
137
*/
146
 
class Cursor
 
138
class DRIZZLED_API Cursor
147
139
{
148
140
  friend class SEAPITesterCursor;
149
141
  Table &table;               /* The current open table */
213
205
  }
214
206
 
215
207
  /**
 
208
    Used by SHOW TABLE STATUS to get the current auto_inc from the engine
 
209
  */
 
210
  uint64_t getAutoIncrement()
 
211
  {
 
212
    return stats.auto_increment_value;
 
213
  }
 
214
 
 
215
  /**
216
216
    insert id for the current row (*autogenerated*; if not
217
217
    autogenerated, it's 0).
218
218
    At first successful insertion, this variable is stored into
231
231
 
232
232
  /* ha_ methods: pubilc wrappers for private virtual API */
233
233
 
234
 
  int ha_open(const TableIdentifier &identifier, int mode, int test_if_locked);
 
234
  int ha_open(const identifier::Table &identifier, int mode, int test_if_locked);
235
235
  int startIndexScan(uint32_t idx, bool sorted) __attribute__ ((warn_unused_result));
236
236
  int endIndexScan();
237
237
  int startTableScan(bool scan) __attribute__ ((warn_unused_result));
272
272
 
273
273
  /* Estimates calculation */
274
274
  virtual double scan_time(void)
275
 
  { return uint64_t2double(stats.data_file_length) / IO_SIZE + 2; }
 
275
  { return static_cast<double>(stats.data_file_length) / IO_SIZE + 2; }
276
276
  virtual double read_time(uint32_t, uint32_t ranges, ha_rows rows)
277
 
  { return rows2double(ranges+rows); }
 
277
  { return ranges + rows; }
278
278
 
279
279
  virtual double index_only_read_time(uint32_t keynr, double records);
280
280
 
524
524
  */
525
525
 
526
526
  virtual int open(const char *, int , uint32_t ) { assert(0); return -1; }
527
 
  virtual int doOpen(const TableIdentifier &identifier, int mode, uint32_t test_if_locked);
 
527
  virtual int doOpen(const identifier::Table &identifier, int mode, uint32_t test_if_locked);
528
528
  virtual int doStartIndexScan(uint32_t idx, bool)
529
529
  { active_index= idx; return 0; }
530
530
  virtual int doEndIndexScan() { active_index= MAX_KEY; return 0; }
665
665
                         int *timestamps, int *timestamps_with_niladic);
666
666
 
667
667
bool create_table(Session *session,
668
 
                        const TableIdentifier &identifier,
669
 
                        HA_CREATE_INFO *create_info,
670
 
                        message::Table &table_proto,
671
 
                        AlterInfo *alter_info,
672
 
                        bool tmp_table, uint32_t select_field_count,
673
 
                        bool is_if_not_exists);
 
668
                  const identifier::Table &identifier,
 
669
                  HA_CREATE_INFO *create_info,
 
670
                  message::Table &table_proto,
 
671
                  AlterInfo *alter_info,
 
672
                  bool tmp_table, uint32_t select_field_count,
 
673
                  bool is_if_not_exists);
674
674
 
675
675
bool create_table_no_lock(Session *session,
676
 
                                const TableIdentifier &identifier,
677
 
                                HA_CREATE_INFO *create_info,
678
 
                                message::Table &table_proto,
679
 
                                AlterInfo *alter_info,
680
 
                                bool tmp_table, uint32_t select_field_count,
681
 
                                bool is_if_not_exists);
 
676
                          const identifier::Table &identifier,
 
677
                          HA_CREATE_INFO *create_info,
 
678
                          message::Table &table_proto,
 
679
                          AlterInfo *alter_info,
 
680
                          bool tmp_table, uint32_t select_field_count,
 
681
                          bool is_if_not_exists);
682
682
 
683
683
bool create_like_table(Session* session,
684
 
                             const TableIdentifier &destination_identifier,
685
 
                             TableList* table, TableList* src_table,
686
 
                             message::Table &create_table_proto,
687
 
                             bool is_if_not_exists,
688
 
                             bool is_engine_set);
 
684
                       identifier::Table::const_reference destination_identifier,
 
685
                       identifier::Table::const_reference source_identifier,
 
686
                       message::Table &create_table_proto,
 
687
                       bool is_if_not_exists,
 
688
                       bool is_engine_set);
689
689
 
690
690
bool rename_table(Session &session,
691
691
                        plugin::StorageEngine *base,
692
 
                        const TableIdentifier &old_identifier,
693
 
                        const TableIdentifier &new_identifier);
 
692
                        const identifier::Table &old_identifier,
 
693
                        const identifier::Table &new_identifier);
694
694
 
695
695
bool prepare_update(Session *session, TableList *table_list,
696
696
                          Item **conds, uint32_t order_num, Order *order);
723
723
void close_handle_and_leave_table_as_lock(Table *table);
724
724
bool wait_for_tables(Session *session);
725
725
bool table_is_used(Table *table, bool wait_for_name_lock);
726
 
Table *drop_locked_tables(Session *session, const drizzled::TableIdentifier &identifier);
727
 
void abort_locked_tables(Session *session, const drizzled::TableIdentifier &identifier);
 
726
Table *drop_locked_tables(Session *session, const drizzled::identifier::Table &identifier);
 
727
void abort_locked_tables(Session *session, const drizzled::identifier::Table &identifier);
728
728
extern Field *not_found_field;
729
729
extern Field *view_ref_found;
730
730