summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <sasha@mysql.sashanet.com>2001-07-23 14:35:25 -0600
committerunknown <sasha@mysql.sashanet.com>2001-07-23 14:35:25 -0600
commit6092c21371b9a6e0e122ee6e3810821d06465243 (patch)
treedefe006cb0af08eefc892030821d324407d7a8a0
parentb282f4290578f0e8e387fcebcd1641337d2601eb (diff)
downloadmariadb-git-6092c21371b9a6e0e122ee6e3810821d06465243.tar.gz
clean-up, more work on LOAD DATA INFILE
sql/log_event.h: more work on LOAD DATA INFILE
-rw-r--r--sql/log_event.cc66
-rw-r--r--sql/log_event.h4
2 files changed, 63 insertions, 7 deletions
diff --git a/sql/log_event.cc b/sql/log_event.cc
index ba7e121847e..1a3469d57bb 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -89,7 +89,9 @@ void Log_event::pack_info(String* packet)
void Query_log_event::pack_info(String* packet)
{
- String tmp;
+ char buf[256];
+ String tmp(buf, sizeof(buf));
+ tmp.length(0);
if(db && db_len)
{
tmp.append("use ");
@@ -104,7 +106,9 @@ void Query_log_event::pack_info(String* packet)
void Start_log_event::pack_info(String* packet)
{
- String tmp;
+ char buf1[256];
+ String tmp(buf1, sizeof(buf1));
+ tmp.length(0);
char buf[22];
tmp.append("Server ver: ");
@@ -116,7 +120,9 @@ void Start_log_event::pack_info(String* packet)
void Load_log_event::pack_info(String* packet)
{
- String tmp;
+ char buf[256];
+ String tmp(buf, sizeof(buf));
+ tmp.length(0);
if(db && db_len)
{
tmp.append("use ");
@@ -190,7 +196,9 @@ void Load_log_event::pack_info(String* packet)
void Rotate_log_event::pack_info(String* packet)
{
- String tmp;
+ char buf1[256];
+ String tmp(buf1, sizeof(buf1));
+ tmp.length(0);
char buf[22];
tmp.append(new_log_ident, ident_len);
tmp.append(";pos=");
@@ -202,7 +210,9 @@ void Rotate_log_event::pack_info(String* packet)
void Intvar_log_event::pack_info(String* packet)
{
- String tmp;
+ char buf1[256];
+ String tmp(buf1, sizeof(buf1));
+ tmp.length(0);
char buf[22];
tmp.append(get_var_type_name());
tmp.append('=');
@@ -212,7 +222,9 @@ void Intvar_log_event::pack_info(String* packet)
void Slave_log_event::pack_info(String* packet)
{
- String tmp;
+ char buf1[256];
+ String tmp(buf1, sizeof(buf1));
+ tmp.length(0);
char buf[22];
tmp.append("host=");
tmp.append(master_host);
@@ -967,19 +979,59 @@ Create_file_log_event::Create_file_log_event(THD* thd, TABLE_LIST * table,
int Create_file_log_event::write_data(IO_CACHE* file)
{
- return 0;
+ char buf[CREATE_FILE_HEADER_LEN];
+ buf[CF_DB_LEN_OFFSET] = (uchar)db_len;
+ buf[CF_TBL_LEN_OFFSET] = (uchar)tbl_name_len;
+ int4store(buf + CF_FILE_ID_OFFSET, file_id);
+ return my_b_write(file, buf, CREATE_FILE_HEADER_LEN) ||
+ my_b_write(file, db, db_len) ||
+ my_b_write(file, tbl_name, tbl_name_len) ||
+ my_b_write(file, block, block_len);
}
+Create_file_log_event::Create_file_log_event(const char* buf, int len):
+ Log_event(buf),db(0)
+{
+ db_len = (uint)buf[LOG_EVENT_HEADER_LEN + CF_DB_LEN_OFFSET];
+ tbl_name_len = (uint)buf[CF_TBL_LEN_OFFSET + LOG_EVENT_HEADER_LEN];
+ if ((uint)len < db_len + tbl_name_len + CREATE_FILE_EVENT_OVERHEAD)
+ return;
+
+ file_id = uint4korr(buf + LOG_EVENT_HEADER_LEN + CF_FILE_ID_OFFSET);
+ db = (char*)buf + CREATE_FILE_EVENT_OVERHEAD;
+ tbl_name = db + db_len;
+ block = tbl_name + tbl_name_len;
+ block_len = len - (db_len + tbl_name_len + CREATE_FILE_EVENT_OVERHEAD);
+}
#ifdef MYSQL_CLIENT
void Create_file_log_event::print(FILE* file, bool short_form = 0,
char* last_db = 0)
{
+ if (short_form)
+ return;
+ print_header(file);
+ fputc('\n', file);
+ fprintf(file, "Create_file: db='%-*s' table='%-*s' file_id=%d,\
+ block_len=%d\n", db_len, db, tbl_name_len, tbl_name, file_id,
+ block_len);
}
#endif
#ifndef MYSQL_CLIENT
void Create_file_log_event::pack_info(String* packet)
{
+ char buf1[256];
+ String tmp(buf1, sizeof(buf1));
+ tmp.length(0);
+ char buf[22];
+ tmp.append("db=");
+ tmp.append(db, db_len);
+ tmp.append(";table=");
+ tmp.append(tbl_name, tbl_name_len);
+ tmp.append(";file_id=");
+ tmp.append(llstr(file_id,buf));
+ tmp.append(";block_len=");
+ tmp.append(llstr(block_len,buf));
}
#endif
diff --git a/sql/log_event.h b/sql/log_event.h
index 9c110128ff4..1b92ff7ff83 100644
--- a/sql/log_event.h
+++ b/sql/log_event.h
@@ -105,6 +105,10 @@
#define R_POS_OFFSET 0
#define R_IDENT_OFFSET 8
+#define CF_DB_LEN_OFFSET 0
+#define CF_TBL_LEN_OFFSET 1
+#define CF_FILE_ID_OFFSET 2
+
#define QUERY_EVENT_OVERHEAD (LOG_EVENT_HEADER_LEN+QUERY_HEADER_LEN)
#define QUERY_DATA_OFFSET (LOG_EVENT_HEADER_LEN+QUERY_HEADER_LEN)
#define ROTATE_EVENT_OVERHEAD (LOG_EVENT_HEADER_LEN+ROTATE_HEADER_LEN)