Below is the list of changes that have just been committed into a local
5.1 repository of mats. When mats does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet
1.1825 05/04/28 14:27:35 mats@stripped +16 -0
WL#2325: Committing minor changes to be able to merge.
sql/sql_class.cc
1.183 05/04/28 14:27:29 mats@stripped +84 -8
Minor optimization. Added debug output.
sql/rpl_tblmap.h
1.3 05/04/28 14:27:29 mats@stripped +10 -5
Minor changes.
sql/rpl_tblmap.cc
1.3 05/04/28 14:27:29 mats@stripped +1 -1
Minor changes.
sql/log_event.cc
1.182 05/04/28 14:27:29 mats@stripped +15 -0
Added debug outputs.
sql/handler.cc
1.164 05/04/28 14:27:29 mats@stripped +11 -7
Added debug outputs.
mysql-test/r/rpl_row_basic_3innodb.result
1.3 05/04/28 14:27:29 mats@stripped +17 -9
Added some more basic tests.
mysql-test/r/rpl_row_basic_2myisam.result
1.2 05/04/28 14:27:28 mats@stripped +8 -0
Added some more basic tests.
mysql-test/include/rpl_row_basic.inc
1.2 05/04/28 14:27:28 mats@stripped +12 -0
Added some more basic tests.
BitKeeper/deleted/.del-rpl_row_basic_myisam.result~52818b19c25ff108
1.9 05/04/28 13:35:35 mats@stripped +0 -0
Delete: mysql-test/r/rpl_row_basic_myisam.result
BitKeeper/deleted/.del-rpl_row_basic_innodb.result~76987a0a6120fdd
1.3 05/04/28 13:35:35 mats@stripped +0 -0
Delete: mysql-test/r/rpl_row_basic_innodb.result
BitKeeper/deleted/.del-rpl_row_basic_myisam.test~c88e3d25165a6f23
1.9 05/04/28 13:35:09 mats@stripped +23 -98
Delete: mysql-test/t/rpl_row_basic_myisam.test
BitKeeper/deleted/.del-rpl_row_basic_myisam-slave.opt~92b65cc0c4f77e9c
1.3 05/04/28 13:35:08 mats@stripped +0 -0
Delete: mysql-test/t/rpl_row_basic_myisam-slave.opt
BitKeeper/deleted/.del-rpl_row_basic_myisam-master.opt~33d73ab1afd0403a
1.3 05/04/28 13:35:07 mats@stripped +0 -0
Delete: mysql-test/t/rpl_row_basic_myisam-master.opt
BitKeeper/deleted/.del-rpl_row_basic_innodb.test~f4b92428d0aeb0ce
1.3 05/04/28 13:34:59 mats@stripped +23 -101
Delete: mysql-test/t/rpl_row_basic_innodb.test
BitKeeper/deleted/.del-rpl_row_basic_innodb-slave.opt~ef2f5a65486704a1
1.2 05/04/28 13:34:58 mats@stripped +0 -0
Delete: mysql-test/t/rpl_row_basic_innodb-slave.opt
BitKeeper/deleted/.del-rpl_row_basic_innodb-master.opt~148b76d485bdbe7a
1.2 05/04/28 13:34:57 mats@stripped +0 -0
Delete: mysql-test/t/rpl_row_basic_innodb-master.opt
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: mats
# Host: romeo.kindahl.net
# Root: /home/bk/w2325-mysql-5.1
--- 1.163/sql/handler.cc 2005-04-22 20:50:51 +02:00
+++ 1.164/sql/handler.cc 2005-04-28 14:27:29 +02:00
@@ -2408,16 +2408,18 @@
ha_write_row(byte *buf)
{
DBUG_ENTER("ha_write_row");
- DBUG_PRINT("enter", ("row: 0x%0x", buf));
+ DBUG_PRINT("enter", ("table=%p (%s), row=%p",
+ table, table->s->table_name, buf));
#ifndef DBUG_OFF
DBUG_PRINT("info", ("thd->query_id=%lu", current_thd->query_id));
for (size_t i = 0 ; i < table->s->fields ; ++i)
{
- DBUG_PRINT("info", ("Field '%s': query_id=%lu, offset=%d, ptr=%p",
+ int const offset = table->field[i]->offset();
+ DBUG_PRINT("info", ("Field '%s': offset=%d, ptr=%p, query_id=%lu",
table->field[i]->field_name,
- table->field[i]->query_id,
- table->field[i]->offset(),
- table->field[i]->ptr));
+ offset,
+ table->field[i]->ptr,
+ table->field[i]->query_id));
}
#endif
DBUG_PRINT("info", ("Writing row to actual handler"));
@@ -2442,7 +2444,8 @@
ha_update_row(const byte *old_data, byte *new_data)
{
DBUG_ENTER("ha_update_row");
- DBUG_PRINT("enter", ("before: 0x%0x; after: 0x%0x", old_data, new_data));
+ DBUG_PRINT("enter", ("table=%p (%s), before: %p; after: %p",
+ table, table->s->table_name, old_data, new_data));
#ifndef DBUG_OFF
DBUG_PRINT("info", ("thd->query_id=%lu", current_thd->query_id));
for (size_t i = 0 ; i < table->s->fields ; ++i)
@@ -2475,7 +2478,8 @@
ha_delete_row(const byte *buf)
{
DBUG_ENTER("ha_delete_row");
- DBUG_PRINT("enter", ("row: 0x%0x", buf));
+ DBUG_PRINT("enter", ("table=%p (%s), row=%p",
+ table, table->s->table_name, buf));
#ifndef DBUG_OFF
DBUG_PRINT("info", ("thd->query_id=%lu", current_thd->query_id));
for (size_t i = 0 ; i < table->s->fields ; ++i)
--- 1.181/sql/log_event.cc 2005-04-26 09:05:04 +02:00
+++ 1.182/sql/log_event.cc 2005-04-28 14:27:29 +02:00
@@ -4968,6 +4968,15 @@
#ifndef MYSQL_CLIENT
#ifdef HAVE_REPLICATION
+static char const*
+show_bytes(char const* data, size_t size, char* const buf)
+{
+ char* ptr = buf;
+ while (size-- > 0)
+ ptr += sprintf(ptr, " %0x", (int) (unsigned char) *data++);
+ return buf;
+}
+
/*
Unpack a row into a record. The row is assumed to only consist of the fields
for which the bitset represented by 'arr' and 'bits'; the other parts of the
@@ -5542,6 +5551,8 @@
do_exec_row(TABLE* table, st_relay_log_info* rli)
{
DBUG_ENTER("Write_rows_log_event::do_exec_row(TABLE*,...)");
+ DBUG_PRINT("enter", ("table=%p (%s), rli=%p",
+ table, table->s->table_name, rli));
DBUG_ASSERT(table != NULL);
int error = table->file->ha_write_row(table->record[0]);
DBUG_RETURN(error);
@@ -5760,6 +5771,8 @@
do_exec_row(TABLE* table, st_relay_log_info* rli)
{
DBUG_ENTER("Delete_rows_log_event::do_exec_row(TABLE*,...)");
+ DBUG_PRINT("enter", ("table=%p (%s), rli=%p",
+ table, table->s->table_name, rli));
DBUG_ASSERT(table != NULL);
if (int error = find_and_fetch_row(table, m_key, m_search_record))
@@ -5889,6 +5902,8 @@
do_exec_row(TABLE* table, st_relay_log_info* rli)
{
DBUG_ENTER("Update_rows_log_event::do_exec_row(TABLE*,...)");
+ DBUG_PRINT("enter", ("table=%p (%s), rli=%p",
+ table, table->s->table_name, rli));
DBUG_ASSERT(table != NULL);
if (int error = find_and_fetch_row(table, m_key, m_search_record))
--- 1.182/sql/sql_class.cc 2005-04-26 10:49:10 +02:00
+++ 1.183/sql/sql_class.cc 2005-04-28 14:27:29 +02:00
@@ -1899,15 +1899,14 @@
// Check if the current event is non-NULL and a write-rows event. Also check
// if the table provided is mapped: if it is not, then we have switched to
// writing to a new table.
+ bool was_mapped = false;
if (!pending
|| pending->server_id != server_id
|| pending->get_type_code() != type_code
|| pending->get_data_size() + needed > opt_binlog_rows_event_max_size
|| pending->get_cols() != cols
- || !mysql_bin_log.is_table_mapped(table))
+ || !(was_mapped= mysql_bin_log.is_table_mapped(table)))
{
- bool was_mapped = mysql_bin_log.is_table_mapped(table);
-
// If not, flush the event and create a new RowsEventT.
ulong const tid = mysql_bin_log.get_table_id(table);
@@ -1922,7 +1921,7 @@
// We are preparing for a new kind of row-level event, so we have to write
// a map for it, if the table was not previously mapped, of course.
if (!was_mapped)
- write_table_map(table,is_transactional);
+ write_table_map(table, is_transactional);
DBUG_RETURN(ev);
}
DBUG_RETURN(pending);
@@ -1971,6 +1970,70 @@
DBUG_RETURN(0); // All OK
}
+static char const*
+field_type_name(enum_field_types type)
+{
+ switch (type)
+ {
+ case MYSQL_TYPE_DECIMAL:
+ return "MYSQL_TYPE_DECIMAL";
+ case MYSQL_TYPE_TINY:
+ return "MYSQL_TYPE_TINY";
+ case MYSQL_TYPE_SHORT:
+ return "MYSQL_TYPE_SHORT";
+ case MYSQL_TYPE_LONG:
+ return "MYSQL_TYPE_LONG";
+ case MYSQL_TYPE_FLOAT:
+ return "MYSQL_TYPE_FLOAT";
+ case MYSQL_TYPE_DOUBLE:
+ return "MYSQL_TYPE_DOUBLE";
+ case MYSQL_TYPE_NULL:
+ return "MYSQL_TYPE_NULL";
+ case MYSQL_TYPE_TIMESTAMP:
+ return "MYSQL_TYPE_TIMESTAMP";
+ case MYSQL_TYPE_LONGLONG:
+ return "MYSQL_TYPE_LONGLONG";
+ case MYSQL_TYPE_INT24:
+ return "MYSQL_TYPE_INT24";
+ case MYSQL_TYPE_DATE:
+ return "MYSQL_TYPE_DATE";
+ case MYSQL_TYPE_TIME:
+ return "MYSQL_TYPE_TIME";
+ case MYSQL_TYPE_DATETIME:
+ return "MYSQL_TYPE_DATETIME";
+ case MYSQL_TYPE_YEAR:
+ return "MYSQL_TYPE_YEAR";
+ case MYSQL_TYPE_NEWDATE:
+ return "MYSQL_TYPE_NEWDATE";
+ case MYSQL_TYPE_VARCHAR:
+ return "MYSQL_TYPE_VARCHAR";
+ case MYSQL_TYPE_BIT:
+ return "MYSQL_TYPE_BIT";
+ case MYSQL_TYPE_NEWDECIMAL:
+ return "MYSQL_TYPE_NEWDECIMAL";
+ case MYSQL_TYPE_ENUM:
+ return "MYSQL_TYPE_ENUM";
+ case MYSQL_TYPE_SET:
+ return "MYSQL_TYPE_SET";
+ case MYSQL_TYPE_TINY_BLOB:
+ return "MYSQL_TYPE_TINY_BLOB";
+ case MYSQL_TYPE_MEDIUM_BLOB:
+ return "MYSQL_TYPE_MEDIUM_BLOB";
+ case MYSQL_TYPE_LONG_BLOB:
+ return "MYSQL_TYPE_LONG_BLOB";
+ case MYSQL_TYPE_BLOB:
+ return "MYSQL_TYPE_BLOB";
+ case MYSQL_TYPE_VAR_STRING:
+ return "MYSQL_TYPE_VAR_STRING";
+ case MYSQL_TYPE_STRING:
+ return "MYSQL_TYPE_STRING";
+ case MYSQL_TYPE_GEOMETRY:
+ return "MYSQL_TYPE_GEOMETRY";
+ }
+ return "Unknown";
+}
+
+
size_t THD::
max_row_length(TABLE *table, const byte *record) const
{
@@ -1990,6 +2053,15 @@
DBUG_RETURN(length);
}
+static char const*
+show_bytes(char const* data, size_t size, char* const buf)
+{
+ char* ptr = buf;
+ while (size-- > 0)
+ ptr += sprintf(ptr, " %0x", (int) (unsigned char) *data++);
+ return buf;
+}
+
size_t THD::
pack_row(TABLE *table, bitvector const& cols, byte *row_data,
size_t max_size, const byte *record) const
@@ -1997,11 +2069,14 @@
DBUG_ENTER("THD::pack_row");
DBUG_PRINT("enter", ("row_data = %p, max_size = %lu, record = %p",
row_data, max_size, record));
-
- byte *ptr = row_data;
-
bzero(row_data, max_size);
+ char buf[16];
+ DBUG_PRINT("info", ("Copying %d null bytes:%s",
+ table->s->null_bytes,
+ show_bytes(record, table->s->null_bytes, buf)));
+
+ byte *ptr = row_data;
memcpy(row_data, record, table->s->null_bytes);
ptr += table->s->null_bytes;
@@ -2012,9 +2087,10 @@
ptrdiff_t const offset = table->field[i]->offset();
ptr = table->field[i]->pack(ptr, record + offset);
- DBUG_PRINT("info", ("Packing length %d field '%s' from %p to %p + %d",
+ DBUG_PRINT("info", ("Packing length %d field '%s' (%s) from %p to %p + %d",
table->field[i]->field_length,
table->field[i]->field_name,
+ field_type_name(table->field[i]->type()),
ptr, record, offset));
}
--- 1.8/mysql-test/t/rpl_row_basic_myisam.test 2005-04-20 13:32:15 +02:00
+++ 1.9/BitKeeper/deleted/.del-rpl_row_basic_myisam.test~c88e3d25165a6f23 2005-04-28 13:35:09 +02:00
@@ -1,101 +1,26 @@
source include/master-slave.inc
-#
-# Basic tests of row-level logging
-#
-
-CREATE TABLE t1 (C1 CHAR(1), C2 CHAR(1), INDEX (C1)) engine=myisam;
-SHOW BINLOG EVENTS;
-SELECT * FROM t1;
+DROP TABLE t9;
+CREATE TABLE t9
+(
+ c1 TINYINT,
+ c2 SMALLINT,
+ c3 MEDIUMINT,
+ c4 INT,
+ c5 INTEGER,
+ c6 BIGINT, c7 FLOAT, c8 DOUBLE,
+ c9 DOUBLE PRECISION, c10 REAL, c11 DECIMAL(7,4), c12 NUMERIC(8,4),
+ c13 DATE, c14 DATETIME, c15 TIMESTAMP(14), c16 TIME,
+ c17 YEAR, c18 TINYINT, c19 BOOL, c20 CHAR,
+ c21 CHAR(10), c22 VARCHAR(30),
+ c23 BIT(1),
+ c24 BIT(1) NOT NULL DEFAULT 0,
+ c25 CHAR(1),
+ c26 ENUM('one', 'two', 'three'),
+ c27 SET('monday', 'tuesday', 'wednesday'),
+ PRIMARY KEY (c1)
+) engine = myisam ;
+INSERT INTO t9 SET c1=1;
+SELECT c23,c24,c25,c26,c27 FROM t9;
sync_slave_with_master;
-SELECT * FROM t1;
-
-# Testing insert
-connection master;
-INSERT INTO t1 VALUES ('A','B'), ('X','Y'), ('X','X');
-INSERT INTO t1 VALUES ('A','C'), ('X', 'Z'), ('A', 'A');
-SHOW BINLOG EVENTS FROM 232;
-SELECT * FROM t1;
-sync_slave_with_master;
-SELECT * FROM t1;
-
-# Testing delete
-# Observe that are several rows having the value for the index but only one
-# should be deleted.
-connection master;
-DELETE FROM t1 WHERE C1 = C2;
-SHOW BINLOG EVENTS FROM 392;
-SELECT * FROM t1;
-sync_slave_with_master;
-SELECT * FROM t1;
-
-#
-# Testing update.
-# Note that we have a condition on a column that is not part of the index for
-# the table. The right row should be updated nevertheless.
-#
-connection master;
-UPDATE t1 SET C2 = 'I' WHERE C1 = 'A' AND C2 = 'C';
-SHOW BINLOG EVENTS FROM 467;
-SELECT * FROM t1;
-SHOW BINLOG EVENTS;
-sync_slave_with_master;
-SELECT * FROM t1;
-
-#
-# Testing table with primary key
-#
-connection master;
-CREATE TABLE t2 (c1 INT, c2 INT, PRIMARY KEY (c1)) engine=myisam;
-INSERT INTO t2
- VALUES (1,2), (2,4), (3,9), (4,15), (5,25),
- (6,35), (7,50), (8,64), (9,81);
-SELECT * FROM t2;
-SELECT * FROM t2 WHERE c2 = c1 * c1;
-sync_slave_with_master;
-SELECT * FROM t2;
-SELECT * FROM t2 WHERE c2 = c1 * c1;
-
-connection master;
-UPDATE t2 SET c2 = c1*c1 WHERE c2 != c1*c1;
-SELECT * FROM t2 WHERE c2 = c1 * c1;
-sync_slave_with_master;
-SELECT * FROM t2 WHERE c2 = c1 * c1;
-
-connection master;
-DELETE FROM t2 WHERE c1 % 4 = 0;
-SELECT * FROM t2;
-sync_slave_with_master;
-SELECT * FROM t2;
-
-#
-# Testing table without index or primary key
-# We don't bother about the binlog events here: they have been verified
-# earlier.
-#
-connection master;
-CREATE TABLE t3 (C1 CHAR(1), C2 CHAR(1)) engine=myisam;
-SELECT * FROM t3;
-sync_slave_with_master;
-SELECT * FROM t3;
-
-connection master;
-INSERT INTO t3 VALUES ('A','B'), ('X','Y'), ('X','X');
-INSERT INTO t3 VALUES ('A','C'), ('X', 'Z'), ('A', 'A');
-SELECT * FROM t3;
-sync_slave_with_master;
-SELECT * FROM t3;
-
-connection master;
-DELETE FROM t3 WHERE C1 = C2;
-SELECT * FROM t3;
-sync_slave_with_master;
-SELECT * FROM t3;
-
-connection master;
-SELECT * FROM t3;
-UPDATE t3 SET C2 = 'I' WHERE C1 = 'A' AND C2 = 'C';
-SELECT * FROM t3;
-sync_slave_with_master;
-SELECT * FROM t3;
-
+SELECT c23,c24,c25,c26,c27 FROM t9;
--- 1.2/mysql-test/t/rpl_row_basic_innodb.test 2005-04-20 13:27:11 +02:00
+++ 1.3/BitKeeper/deleted/.del-rpl_row_basic_innodb.test~f4b92428d0aeb0ce 2005-04-28 13:34:59 +02:00
@@ -1,104 +1,26 @@
source include/master-slave.inc
-#
-# Basic tests of row-level logging
-#
-
-CREATE TABLE t1 (C1 CHAR(1), C2 CHAR(1), INDEX (C1)) engine=innodb;
---replace_column 1 <binlog> 5 <end_log_pos>
-SHOW BINLOG EVENTS;
-SELECT * FROM t1;
+DROP TABLE t9;
+CREATE TABLE t9
+(
+ c1 TINYINT,
+ c2 SMALLINT,
+ c3 MEDIUMINT,
+ c4 INT,
+ c5 INTEGER,
+ c6 BIGINT, c7 FLOAT, c8 DOUBLE,
+ c9 DOUBLE PRECISION, c10 REAL, c11 DECIMAL(7,4), c12 NUMERIC(8,4),
+ c13 DATE, c14 DATETIME, c15 TIMESTAMP(14), c16 TIME,
+ c17 YEAR, c18 TINYINT, c19 BOOL, c20 CHAR,
+ c21 CHAR(10), c22 VARCHAR(30),
+ c23 BIT(1),
+ c24 BIT(1) NOT NULL DEFAULT 0,
+ c25 CHAR(1),
+ c26 ENUM('one', 'two', 'three'),
+ c27 SET('monday', 'tuesday', 'wednesday'),
+ PRIMARY KEY (c1)
+) engine = innodb ;
+INSERT INTO t9 SET c1=1;
+SELECT c23,c24,c25,c26,c27 FROM t9;
sync_slave_with_master;
-SELECT * FROM t1;
-
-# Testing insert
-connection master;
-INSERT INTO t1 VALUES ('A','B'), ('X','Y'), ('X','X');
-INSERT INTO t1 VALUES ('A','C'), ('X', 'Z'), ('A', 'A');
---replace_column 1 <binlog> 5 <end_log_pos>
-SHOW BINLOG EVENTS FROM 232;
-SELECT * FROM t1;
-sync_slave_with_master;
-SELECT * FROM t1;
-
-# Testing delete
-# Observe that are several rows having the value for the index but only one
-# should be deleted.
-connection master;
-DELETE FROM t1 WHERE C1 = C2;
---replace_column 1 <binlog> 5 <end_log_pos>
-SHOW BINLOG EVENTS FROM 446;
-SELECT * FROM t1;
-sync_slave_with_master;
-SELECT * FROM t1;
-
-#
-# Testing update.
-# Note that we have a condition on a column that is not part of the index for
-# the table. The right row should be updated nevertheless.
-#
-connection master;
-UPDATE t1 SET C2 = 'I' WHERE C1 = 'A' AND C2 = 'C';
---replace_column 1 <binlog> 2 <pos> 5 <end_log_pos>
-SHOW BINLOG EVENTS FROM 548;
-SELECT * FROM t1;
-sync_slave_with_master;
-SELECT * FROM t1;
-
-#
-# Testing table with primary key
-#
-connection master;
-CREATE TABLE t2 (c1 INT, c2 INT, PRIMARY KEY (c1)) engine=innodb;
-INSERT INTO t2
- VALUES (1,2), (2,4), (3,9), (4,15), (5,25),
- (6,35), (7,50), (8,64), (9,81);
-SELECT * FROM t2;
-SELECT * FROM t2 WHERE c2 = c1 * c1;
-sync_slave_with_master;
-SELECT * FROM t2;
-SELECT * FROM t2 WHERE c2 = c1 * c1;
-
-connection master;
-UPDATE t2 SET c2 = c1*c1 WHERE c2 != c1*c1;
-SELECT * FROM t2 WHERE c2 = c1 * c1;
-sync_slave_with_master;
-SELECT * FROM t2 WHERE c2 = c1 * c1;
-
-connection master;
-DELETE FROM t2 WHERE c1 % 4 = 0;
-SELECT * FROM t2;
-sync_slave_with_master;
-SELECT * FROM t2;
-
-#
-# Testing table without index or primary key
-# We don't bother about the binlog events here: they have been verified
-# earlier.
-#
-connection master;
-CREATE TABLE t3 (C1 CHAR(1), C2 CHAR(1)) engine=innodb;
-SELECT * FROM t3;
-sync_slave_with_master;
-SELECT * FROM t3;
-
-connection master;
-INSERT INTO t3 VALUES ('A','B'), ('X','Y'), ('X','X');
-INSERT INTO t3 VALUES ('A','C'), ('X', 'Z'), ('A', 'A');
-SELECT * FROM t3;
-sync_slave_with_master;
-SELECT * FROM t3;
-
-connection master;
-DELETE FROM t3 WHERE C1 = C2;
-SELECT * FROM t3;
-sync_slave_with_master;
-SELECT * FROM t3;
-
-connection master;
-SELECT * FROM t3;
-UPDATE t3 SET C2 = 'I' WHERE C1 = 'A' AND C2 = 'C';
-SELECT * FROM t3;
-sync_slave_with_master;
-SELECT * FROM t3;
-
+SELECT c23,c24,c25,c26,c27 FROM t9;
--- 1.2/sql/rpl_tblmap.cc 2005-04-01 13:25:14 +02:00
+++ 1.3/sql/rpl_tblmap.cc 2005-04-28 14:27:29 +02:00
@@ -77,7 +77,7 @@
ulong table_mapping::
get_table_id(st_table* table)
{
- sentry sentry(&m_mutex);
+ sentry sentry(&m_mutex); // Aquire exclusive access
DBUG_ENTER("table_mapping::get_table_id(st_table*)");
DBUG_PRINT("enter", ("table=%p (%s)",
--- 1.2/sql/rpl_tblmap.h 2005-04-01 13:25:14 +02:00
+++ 1.3/sql/rpl_tblmap.h 2005-04-28 14:27:29 +02:00
@@ -7,6 +7,7 @@
// Forward declarations
struct st_table;
+typedef st_table TABLE;
/*
CLASS table_mapping
@@ -30,24 +31,28 @@
table_mapping();
~table_mapping();
- st_table* get_table(ulong table_id);
+ TABLE* get_table(ulong table_id);
/*
Return table id for 'table', or NO_TABLE if there is no id mapped for
table.
*/
- ulong get_table_id(st_table* table);
+ ulong get_table_id(TABLE* table);
- int set_table(ulong table_id, st_table* table);
+ int set_table(ulong table_id, TABLE* table);
int remove_table(ulong table_id);
void clear_tables();
ulong count() const { return m_count; }
private:
pos_type find_pos(ulong table_id) const;
- pos_type find_pos(st_table* table) const;
+ pos_type find_pos(TABLE* table) const;
- struct entry { ulong table_id; st_table* table; } *m_array;
+ struct entry {
+ ulong table_id;
+ TABLE* table;
+ };
+ entry *m_array;
ulong m_count, m_reserve;
class sentry {
--- 1.1/mysql-test/include/rpl_row_basic.inc 2005-04-18 03:45:24 +02:00
+++ 1.2/mysql-test/include/rpl_row_basic.inc 2005-04-28 14:27:28 +02:00
@@ -103,5 +103,17 @@
sync_slave_with_master;
SELECT * FROM t3 ORDER BY C1,C2;
+#
+# Testing special column types
+#
+
+connection master;
+eval CREATE TABLE t4 (C1 CHAR(1) PRIMARY KEY, B1 BIT(1), B2 BIT(1) NOT NULL DEFAULT 0, C2 CHAR(1) NOT NULL DEFAULT 'A') ENGINE = $type ;
+
+INSERT INTO t4 SET C1 = 1;
+SELECT C1,HEX(B1),HEX(B2) FROM t4;
+sync_slave_with_master;
+SELECT C1,HEX(B1),HEX(B2) FROM t4;
+
connection slave;
slave stop;
--- 1.1/mysql-test/r/rpl_row_basic_2myisam.result 2005-04-18 03:45:24 +02:00
+++ 1.2/mysql-test/r/rpl_row_basic_2myisam.result 2005-04-28 14:27:28 +02:00
@@ -224,4 +224,12 @@
A I
X Y
X Z
+CREATE TABLE t4 (C1 CHAR(1) PRIMARY KEY, B1 BIT(1), B2 BIT(1) NOT NULL DEFAULT 0, C2 CHAR(1) NOT NULL DEFAULT 'A') ENGINE = 'MYISAM' ;
+INSERT INTO t4 SET C1 = 1;
+SELECT C1,HEX(B1),HEX(B2) FROM t4;
+C1 HEX(B1) HEX(B2)
+1 NULL 0
+SELECT C1,HEX(B1),HEX(B2) FROM t4;
+C1 HEX(B1) HEX(B2)
+1 NULL 0
slave stop;
--- 1.2/mysql-test/r/rpl_row_basic_3innodb.result 2005-04-26 09:05:04 +02:00
+++ 1.3/mysql-test/r/rpl_row_basic_3innodb.result 2005-04-28 14:27:29 +02:00
@@ -21,10 +21,10 @@
<binlog> <pos> Query 1 <end_log_pos> use `test`; CREATE TABLE t1 (C1 CHAR(1), C2 CHAR(1), INDEX (C1)) ENGINE = 'INNODB'
<binlog> <pos> Table_map 1 <end_log_pos>
<binlog> <pos> Write_rows 1 <end_log_pos>
-<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=91 */
+<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=16 */
<binlog> <pos> Table_map 1 <end_log_pos>
<binlog> <pos> Write_rows 1 <end_log_pos>
-<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=92 */
+<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=17 */
SELECT * FROM t1 ORDER BY C1,C2;
C1 C2
A A
@@ -48,13 +48,13 @@
<binlog> <pos> Query 1 <end_log_pos> use `test`; CREATE TABLE t1 (C1 CHAR(1), C2 CHAR(1), INDEX (C1)) ENGINE = 'INNODB'
<binlog> <pos> Table_map 1 <end_log_pos>
<binlog> <pos> Write_rows 1 <end_log_pos>
-<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=91 */
+<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=16 */
<binlog> <pos> Table_map 1 <end_log_pos>
<binlog> <pos> Write_rows 1 <end_log_pos>
-<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=92 */
+<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=17 */
<binlog> <pos> Table_map 1 <end_log_pos>
<binlog> <pos> Delete_rows 1 <end_log_pos>
-<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=98 */
+<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=23 */
SELECT * FROM t1 ORDER BY C1,C2;
C1 C2
A B
@@ -74,16 +74,16 @@
<binlog> <pos> Query 1 <end_log_pos> use `test`; CREATE TABLE t1 (C1 CHAR(1), C2 CHAR(1), INDEX (C1)) ENGINE = 'INNODB'
<binlog> <pos> Table_map 1 <end_log_pos>
<binlog> <pos> Write_rows 1 <end_log_pos>
-<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=91 */
+<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=16 */
<binlog> <pos> Table_map 1 <end_log_pos>
<binlog> <pos> Write_rows 1 <end_log_pos>
-<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=92 */
+<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=17 */
<binlog> <pos> Table_map 1 <end_log_pos>
<binlog> <pos> Delete_rows 1 <end_log_pos>
-<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=98 */
+<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=23 */
<binlog> <pos> Table_map 1 <end_log_pos>
<binlog> <pos> Update_rows 1 <end_log_pos>
-<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=104 */
+<binlog> <pos> Xid 1 <end_log_pos> COMMIT /* xid=29 */
SELECT * FROM t1 ORDER BY C1,C2;
C1 C2
A B
@@ -233,4 +233,12 @@
A I
X Y
X Z
+CREATE TABLE t4 (C1 CHAR(1) PRIMARY KEY, B1 BIT(1), B2 BIT(1) NOT NULL DEFAULT 0, C2 CHAR(1) NOT NULL DEFAULT 'A') ENGINE = 'INNODB' ;
+INSERT INTO t4 SET C1 = 1;
+SELECT C1,HEX(B1),HEX(B2) FROM t4;
+C1 HEX(B1) HEX(B2)
+1 NULL 0
+SELECT C1,HEX(B1),HEX(B2) FROM t4;
+C1 HEX(B1) HEX(B2)
+1 NULL 0
slave stop;
| Thread |
|---|
| • bk commit into 5.1 tree (mats:1.1825) | Mats Kindahl | 28 Apr |