MySQL 5.6.14 Source Code Document
|
#include <log_event.h>
Public Member Functions | |
uint | get_query_buffer_length () |
void | print_query (bool need_db, const char *cs, char *buf, char **end, char **fn_start, char **fn_end) |
void | set_fname_outside_temp_buf (const char *afname, uint alen) |
int | check_fname_outside_temp_buf () |
void | print (FILE *file, PRINT_EVENT_INFO *print_event_info) |
void | print (FILE *file, PRINT_EVENT_INFO *print_event_info, bool commented) |
Load_log_event (const char *buf, uint event_len, const Format_description_log_event *description_event) | |
Log_event_type | get_type_code () |
bool | is_valid () const |
int | get_data_size () |
Public Member Functions inherited from Log_event | |
Log_event (enum_event_cache_type cache_type_arg=EVENT_INVALID_CACHE, enum_event_logging_type logging_type_arg=EVENT_INVALID_LOGGING) | |
void | print_timestamp (IO_CACHE *file, time_t *ts) |
void | print_header (IO_CACHE *file, PRINT_EVENT_INFO *print_event_info, bool is_more) |
void | print_base64 (IO_CACHE *file, PRINT_EVENT_INFO *print_event_info, bool is_more) |
bool | wrapper_my_b_safe_write (IO_CACHE *file, const uchar *buf, ulong data_length) |
void | set_artificial_event () |
void | set_relay_log_event () |
bool | is_artificial_event () const |
bool | is_relay_log_event () const |
bool | is_ignorable_event () const |
bool | is_no_filter_event () const |
bool | is_using_trans_cache () const |
bool | is_using_stmt_cache () const |
bool | is_using_immediate_logging () const |
Log_event (const char *buf, const Format_description_log_event *description_event) | |
void | register_temp_buf (char *buf) |
void | free_temp_buf () |
const char * | get_type_str () |
Public Attributes | |
ulong | thread_id |
ulong | slave_proxy_id |
uint32 | table_name_len |
uint32 | db_len |
uint32 | fname_len |
uint32 | num_fields |
const char * | fields |
const uchar * | field_lens |
uint32 | field_block_len |
const char * | table_name |
const char * | db |
const char * | fname |
uint32 | skip_lines |
sql_ex_info | sql_ex |
bool | local_fname |
bool | is_concurrent |
Public Attributes inherited from Log_event | |
my_off_t | log_pos |
char * | temp_buf |
struct timeval | when |
ulong | exec_time |
ulong | data_written |
uint32 | server_id |
uint32 | unmasked_server_id |
uint16 | flags |
ulong | slave_exec_mode |
enum_event_cache_type | event_cache_type |
enum_event_logging_type | event_logging_type |
ha_checksum | crc |
ulong | mts_group_idx |
Relay_log_info * | worker |
ulonglong | future_event_relay_log_pos |
uint8 | checksum_alg |
Protected Member Functions | |
int | copy_log_event (const char *buf, ulong event_len, int body_offset, const Format_description_log_event *description_event) |
Additional Inherited Members | |
Public Types inherited from Log_event | |
enum | enum_skip_reason { EVENT_SKIP_NOT, EVENT_SKIP_IGNORE, EVENT_SKIP_COUNT } |
typedef unsigned char | Byte |
Static Public Member Functions inherited from Log_event | |
static Log_event * | read_log_event (IO_CACHE *file, const Format_description_log_event *description_event, my_bool crc_check) |
static void * | operator new (size_t size) |
static void | operator delete (void *ptr, size_t) |
static void * | operator new (size_t, void *ptr) |
static void | operator delete (void *, void *) |
static Log_event * | read_log_event (const char *buf, uint event_len, const char **error, const Format_description_log_event *description_event, my_bool crc_check) |
static const char * | get_type_str (Log_event_type type) |
Protected Types inherited from Log_event | |
enum | enum_event_cache_type { EVENT_INVALID_CACHE = 0, EVENT_STMT_CACHE, EVENT_TRANSACTIONAL_CACHE, EVENT_NO_CACHE, EVENT_CACHE_COUNT } |
enum | enum_event_logging_type { EVENT_INVALID_LOGGING = 0, EVENT_NORMAL_LOGGING, EVENT_IMMEDIATE_LOGGING, EVENT_CACHE_LOGGING_COUNT } |
This log event corresponds to a "LOAD DATA INFILE" SQL query on the following form:
(1) USE db; (2) LOAD DATA [CONCURRENT] [LOCAL] INFILE 'file_name' (3) [REPLACE | IGNORE] (4) INTO TABLE 'table_name' (5) [FIELDS (6) [TERMINATED BY 'field_term'] (7) [[OPTIONALLY] ENCLOSED BY 'enclosed'] (8) [ESCAPED BY 'escaped'] (9) ] (10) [LINES (11) [TERMINATED BY 'line_term'] (12) [LINES STARTING BY 'line_start'] (13) ] (14) [IGNORE skip_lines LINES] (15) (field_1, field_2, ..., field_n)
The Post-Header consists of the following six components.
Name | Format | Description |
---|---|---|
slave_proxy_id | 4 byte unsigned integer | An integer identifying the client thread that issued the query. The id is unique per server. (Note, however, that two threads on different servers may have the same slave_proxy_id.) This is used when a client thread creates a temporary table local to the client. The slave_proxy_id is used to distinguish temporary tables that belong to different clients. |
exec_time | 4 byte unsigned integer | The time from when the query started to when it was logged in the binlog, in seconds. |
skip_lines | 4 byte unsigned integer | The number on line (14) above, if present, or 0 if line (14) is left out. |
table_name_len | 1 byte unsigned integer | The length of 'table_name' on line (4) above. |
db_len | 1 byte unsigned integer | The length of 'db' on line (1) above. |
num_fields | 4 byte unsigned integer | The number n of fields on line (15) above. |
The Body contains the following components.
Name | Format | Description |
---|---|---|
sql_ex | variable length | Describes the part of the query on lines (3) and (5)–(13) above. More precisely, it stores the five strings (on lines) field_term (6), enclosed (7), escaped (8), line_term (11), and line_start (12); as well as a bitfield indicating the presence of the keywords REPLACE (3), IGNORE (3), and OPTIONALLY (7). The data is stored in one of two formats, called "old" and "new". The type field of Common-Header determines which of these two formats is used: type LOAD_EVENT means that the old format is used, and type NEW_LOAD_EVENT means that the new format is used. When MySQL writes a Load_log_event, it uses the new format if at least one of the five strings is two or more bytes long. Otherwise (i.e., if all strings are 0 or 1 bytes long), the old format is used. The new and old format differ in the way the five strings are stored.
Thus, the size of the new format is 6 bytes + the sum of the sizes of the five strings. The size of the old format is always 7 bytes. |
field_lens | num_fields 1 byte unsigned integers | An array of num_fields integers representing the length of each field in the query. (num_fields is from the Post-Header). |
fields | num_fields null-terminated strings | An array of num_fields null-terminated strings, each representing a field in the query. (The trailing zero is redundant, since the length are stored in the num_fields array.) The total length of all strings equals to the sum of all field_lens, plus num_fields bytes for all the trailing zeros. |
table_name | null-terminated string of length table_len+1 bytes | The 'table_name' from the query, as a null-terminated string. (The trailing zero is actually redundant since the table_len is known from Post-Header.) |
db | null-terminated string of length db_len+1 bytes | The 'db' from the query, as a null-terminated string. (The trailing zero is actually redundant since the db_len is known from Post-Header.) |
file_name | variable length string without trailing zero, extending to the end of the event (determined by the length field of the Common-Header) | The 'file_name' from the query. |
This event type is understood by current versions, but only generated by MySQL 3.23 and earlier.
Definition at line 2428 of file log_event.h.
Load_log_event::Load_log_event | ( | const char * | buf, |
uint | event_len, | ||
const Format_description_log_event * | description_event | ||
) |
Definition at line 5979 of file log_event.cc.
bool Load_log_event::is_concurrent |
Indicates that this event corresponds to LOAD DATA CONCURRENT,
Definition at line 2471 of file log_event.h.