~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/log_event.h

  • Committer: Brian Aker
  • Date: 2008-11-25 02:31:14 UTC
  • Revision ID: brian@tangent.org-20081125023114-2f7sx8fye2jytgyw
Removed dead event structure pieces from replication.

Show diffs side-by-side

added added

removed removed

Lines of Context:
124
124
#define LINE_START_EMPTY        0x8
125
125
#define ESCAPED_EMPTY           0x10
126
126
 
127
 
/*****************************************************************************
128
 
 
129
 
  old_sql_ex struct
130
 
 
131
 
 ****************************************************************************/
132
 
struct old_sql_ex
133
 
{
134
 
  char field_term;
135
 
  char enclosed;
136
 
  char line_term;
137
 
  char line_start;
138
 
  char escaped;
139
 
  char opt_flags;
140
 
  char empty_flags;
141
 
};
142
 
 
143
127
#define NUM_LOAD_DELIM_STRS 5
144
128
 
145
129
/*****************************************************************************
482
466
  TABLE_MAP_EVENT = 19,
483
467
 
484
468
  /*
485
 
    These event numbers were used for 5.1.0 to 5.1.15 and are
486
 
    therefore obsolete.
487
 
   */
488
 
  PRE_GA_WRITE_ROWS_EVENT = 20,
489
 
  PRE_GA_UPDATE_ROWS_EVENT = 21,
490
 
  PRE_GA_DELETE_ROWS_EVENT = 22,
491
 
 
492
 
  /*
493
469
    These event numbers are used from 5.1.16 and forward
494
470
   */
495
471
  WRITE_ROWS_EVENT = 23,
1976
1952
  virtual enum_skip_reason do_shall_skip(Relay_log_info *rli);
1977
1953
};
1978
1954
 
1979
 
 
1980
 
/**
1981
 
  @class Intvar_log_event
1982
 
 
1983
 
  An Intvar_log_event will be created just before a Query_log_event,
1984
 
  if the query uses one of the variables LAST_INSERT_ID or INSERT_ID.
1985
 
  Each Intvar_log_event holds the value of one of these variables.
1986
 
 
1987
 
  @section Intvar_log_event_binary_format Binary Format
1988
 
 
1989
 
  The Post-Header has two components:
1990
 
 
1991
 
  <table>
1992
 
  <caption>Post-Header for Intvar_log_event</caption>
1993
 
 
1994
 
  <tr>
1995
 
    <th>Name</th>
1996
 
    <th>Format</th>
1997
 
    <th>Description</th>
1998
 
  </tr>
1999
 
 
2000
 
  <tr>
2001
 
    <td>type</td>
2002
 
    <td>1 byte enumeration</td>
2003
 
    <td>One byte identifying the type of variable stored.  Currently,
2004
 
    two identifiers are supported:  LAST_INSERT_ID_EVENT==1 and
2005
 
    INSERT_ID_EVENT==2.
2006
 
    </td>
2007
 
  </tr>
2008
 
 
2009
 
  <tr>
2010
 
    <td>value</td>
2011
 
    <td>8 byte unsigned integer</td>
2012
 
    <td>The value of the variable.</td>
2013
 
  </tr>
2014
 
 
2015
 
  </table>
2016
 
*/
2017
 
class Intvar_log_event: public Log_event
2018
 
{
2019
 
public:
2020
 
  uint64_t val;
2021
 
  unsigned char type;
2022
 
 
2023
 
  Intvar_log_event(Session* session_arg,unsigned char type_arg, uint64_t val_arg)
2024
 
    :Log_event(session_arg,0,0),val(val_arg),type(type_arg)
2025
 
  {}
2026
 
  void pack_info(Protocol* protocol);
2027
 
 
2028
 
  Intvar_log_event(const char* buf,
2029
 
                   const Format_description_log_event *description_event);
2030
 
  ~Intvar_log_event() {}
2031
 
  Log_event_type get_type_code() { return INTVAR_EVENT;}
2032
 
  const char* get_var_type_name();
2033
 
  int get_data_size() { return  9; /* sizeof(type) + sizeof(val) */;}
2034
 
  bool write(IO_CACHE* file);
2035
 
  bool is_valid() const { return 1; }
2036
 
 
2037
 
private:
2038
 
  virtual int do_apply_event(Relay_log_info const *rli);
2039
 
  virtual int do_update_pos(Relay_log_info *rli);
2040
 
  virtual enum_skip_reason do_shall_skip(Relay_log_info *rli);
2041
 
};
2042
 
 
2043
 
 
2044
 
/**
2045
 
  @class Rand_log_event
2046
 
 
2047
 
  Logs random seed used by the next RAND(), and by PASSWORD() in 4.1.0.
2048
 
  4.1.1 does not need it (it's repeatable again) so this event needn't be
2049
 
  written in 4.1.1 for PASSWORD() (but the fact that it is written is just a
2050
 
  waste, it does not cause bugs).
2051
 
 
2052
 
  The state of the random number generation consists of 128 bits,
2053
 
  which are stored internally as two 64-bit numbers.
2054
 
 
2055
 
  @section Rand_log_event_binary_format Binary Format  
2056
 
  This event type has no Post-Header. The Body of this event type has
2057
 
  two components:
2058
 
 
2059
 
  <table>
2060
 
  <caption>Post-Header for Intvar_log_event</caption>
2061
 
 
2062
 
  <tr>
2063
 
    <th>Name</th>
2064
 
    <th>Format</th>
2065
 
    <th>Description</th>
2066
 
  </tr>
2067
 
 
2068
 
  <tr>
2069
 
    <td>seed1</td>
2070
 
    <td>8 byte unsigned integer</td>
2071
 
    <td>64 bit random seed1.</td>
2072
 
  </tr>
2073
 
 
2074
 
  <tr>
2075
 
    <td>seed2</td>
2076
 
    <td>8 byte unsigned integer</td>
2077
 
    <td>64 bit random seed2.</td>
2078
 
  </tr>
2079
 
  </table>
2080
 
*/
2081
 
 
2082
 
class Rand_log_event: public Log_event
2083
 
{
2084
 
 public:
2085
 
  uint64_t seed1;
2086
 
  uint64_t seed2;
2087
 
 
2088
 
  Rand_log_event(Session* session_arg, uint64_t seed1_arg, uint64_t seed2_arg)
2089
 
    :Log_event(session_arg,0,0),seed1(seed1_arg),seed2(seed2_arg)
2090
 
  {}
2091
 
  void pack_info(Protocol* protocol);
2092
 
 
2093
 
  Rand_log_event(const char* buf,
2094
 
                 const Format_description_log_event *description_event);
2095
 
  ~Rand_log_event() {}
2096
 
  Log_event_type get_type_code() { return RAND_EVENT;}
2097
 
  int get_data_size() { return 16; /* sizeof(uint64_t) * 2*/ }
2098
 
  bool write(IO_CACHE* file);
2099
 
  bool is_valid() const { return 1; }
2100
 
 
2101
 
private:
2102
 
  virtual int do_apply_event(Relay_log_info const *rli);
2103
 
  virtual int do_update_pos(Relay_log_info *rli);
2104
 
  virtual enum_skip_reason do_shall_skip(Relay_log_info *rli);
2105
 
};
2106
 
 
2107
1955
/**
2108
1956
  @class Xid_log_event
2109
1957
 
2133
1981
  enum_skip_reason do_shall_skip(Relay_log_info *rli);
2134
1982
};
2135
1983
 
2136
 
/**
2137
 
  @class User_var_log_event
2138
 
 
2139
 
  Every time a query uses the value of a user variable, a User_var_log_event is
2140
 
  written before the Query_log_event, to set the user variable.
2141
 
 
2142
 
  @section User_var_log_event_binary_format Binary Format  
2143
 
*/
2144
 
 
2145
 
class User_var_log_event: public Log_event
2146
 
{
2147
 
public:
2148
 
  char *name;
2149
 
  uint32_t name_len;
2150
 
  char *val;
2151
 
  ulong val_len;
2152
 
  Item_result type;
2153
 
  uint32_t charset_number;
2154
 
  bool is_null;
2155
 
  User_var_log_event(Session*,
2156
 
                     char *name_arg, uint32_t name_len_arg,
2157
 
                     char *val_arg, ulong val_len_arg, Item_result type_arg,
2158
 
                     uint32_t charset_number_arg)
2159
 
    :Log_event(), name(name_arg), name_len(name_len_arg), val(val_arg),
2160
 
    val_len(val_len_arg), type(type_arg), charset_number(charset_number_arg)
2161
 
    { is_null= !val; }
2162
 
  void pack_info(Protocol* protocol);
2163
 
 
2164
 
  User_var_log_event(const char* buf,
2165
 
                     const Format_description_log_event *description_event);
2166
 
  ~User_var_log_event() {}
2167
 
  Log_event_type get_type_code() { return USER_VAR_EVENT;}
2168
 
  bool write(IO_CACHE* file);
2169
 
  bool is_valid() const { return 1; }
2170
 
 
2171
 
private:
2172
 
  virtual int do_apply_event(Relay_log_info const *rli);
2173
 
  virtual int do_update_pos(Relay_log_info *rli);
2174
 
  virtual enum_skip_reason do_shall_skip(Relay_log_info *rli);
2175
 
};
2176
 
 
2177
1984
 
2178
1985
/**
2179
1986
  @class Stop_log_event