Below is the list of changes that have just been committed into a local
5.1 repository of zhl. When zhl 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@stripped, 2007-07-10 10:58:25+00:00, lzhou@dev3-63.(none) +15 -0
Bug#27543 Backup and Restore can compatible with different endians for blob attribute
mysql-test/r/ndb_restore_blob.result@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +38 -0
Test result for ndb_restore_blob
mysql-test/r/ndb_restore_blob.result@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +0 -0
mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1-0.1.Data@stripped, 2007-07-10
10:58:18+00:00, lzhou@dev3-63.(none) +397 -0
Backup file for big endian
mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1-0.1.Data@stripped, 2007-07-10
10:58:18+00:00, lzhou@dev3-63.(none) +0 -0
mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1-0.2.Data@stripped, 2007-07-10
10:58:18+00:00, lzhou@dev3-63.(none) +413 -0
Backup file for big endian
mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1-0.2.Data@stripped, 2007-07-10
10:58:18+00:00, lzhou@dev3-63.(none) +0 -0
mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1.1.ctl@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +235 -0
Backup file for big endian
mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1.1.ctl@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +0 -0
mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1.1.log@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +2 -0
Backup file for big endian
mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1.1.log@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +0 -0
mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1.2.ctl@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +235 -0
Backup file for big endian
mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1.2.ctl@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +0 -0
mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1.2.log@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +2 -0
Backup file for big endian
mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1.2.log@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +0 -0
mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1-0.1.Data@stripped, 2007-07-10
10:58:18+00:00, lzhou@dev3-63.(none) +408 -0
Backup file for little endian
mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1-0.1.Data@stripped, 2007-07-10
10:58:18+00:00, lzhou@dev3-63.(none) +0 -0
mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1-0.2.Data@stripped, 2007-07-10
10:58:18+00:00, lzhou@dev3-63.(none) +403 -0
Backup file for little endian
mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1-0.2.Data@stripped, 2007-07-10
10:58:18+00:00, lzhou@dev3-63.(none) +0 -0
mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1.1.ctl@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +235 -0
Backup file for little endian
mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1.1.ctl@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +0 -0
mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1.1.log@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +2 -0
Backup file for little endian
mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1.1.log@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +0 -0
mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1.2.ctl@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +235 -0
Backup file for little endian
mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1.2.ctl@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +0 -0
mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1.2.log@stripped, 2007-07-10 10:58:19+00:00,
lzhou@dev3-63.(none) +2 -0
Backup file for little endian
mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1.2.log@stripped, 2007-07-10 10:58:19+00:00,
lzhou@dev3-63.(none) +0 -0
mysql-test/t/ndb_restore_blob.test@stripped, 2007-07-10 10:58:19+00:00, lzhou@dev3-63.(none)
+34 -0
Test case for ndb_restore_blob
mysql-test/t/ndb_restore_blob.test@stripped, 2007-07-10 10:58:19+00:00, lzhou@dev3-63.(none)
+0 -0
storage/ndb/tools/restore/Restore.cpp@stripped, 2007-07-10 10:58:18+00:00,
lzhou@dev3-63.(none) +14 -0
Convert blob length stored in main table
# 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: lzhou
# Host: dev3-63.(none)
# Root: /home/zhl/mysql/mysql-5.1/bug27543
--- New file ---
+++ mysql-test/r/ndb_restore_blob.result 07/07/10 10:58:18
USE test;
DROP TABLE IF EXISTS t1;
SHOW TABLES;
Tables_in_test
t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`t_int` int(10) unsigned NOT NULL,
`t_blob` blob,
`t_text` text,
PRIMARY KEY (`t_int`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
SELECT * FROM t1;
t_int t_blob t_text
1 a123456789b123456789c123456789d123456789e123456789f123456789g123456789 a123456789b123456789c123456789d123456789e123456789f123456789g123456789
SELECT COUNT(*) FROM t1;
COUNT(*)
1
DROP TABLE t1;
SHOW TABLES;
Tables_in_test
t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`t_int` int(10) unsigned NOT NULL,
`t_blob` blob,
`t_text` text,
PRIMARY KEY (`t_int`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
SELECT * FROM t1;
t_int t_blob t_text
1 a123456789b123456789c123456789d123456789e123456789f123456789g123456789 a123456789b123456789c123456789d123456789e123456789f123456789g123456789
SELECT COUNT(*) FROM t1;
COUNT(*)
1
DROP TABLE t1;
--- New file ---
+++ mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1-0.1.Data 07/07/10 10:58:18
NDBBCKUP
_
þC
·
--- New file ---
+++ mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1-0.2.Data 07/07/10 10:58:18
NDBBCKUP
ÿÿ77
ÿ
I
þ
&
ÿ:
[[
ÿÿ
--- New file ---
+++ mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1.1.ctl 07/07/10 10:58:18
NDBBCKUP
NDB$TNODE
°0c'OL6F%
lT@´HþN+¡¸'{/f?)f.5ªRldΐZPK»"P¯DDDDDDDtȔ=¨¬tҞ^ypNxܾ?02+v£
»mM«gk}`ePw}R1FKUu±¶q²©L¹fÿ"ߢ¸ÿ<h>>!@~2{O/r²b9l
MGic~~c³r9´CA2':3²¢ ¾Wh-ʏۅqi·v&&Fu
server_id
start_pos
B¾sr9$SHpl0w>¶1þmx{2W
""""""¢¿Lɇ"
(»c F83
Z
--- New file ---
+++ mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1.1.log 07/07/10 10:58:18
NDBBCKUP
--- New file ---
+++ mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1.2.ctl 07/07/10 10:58:18
NDBBCKUP
NDB$TNODE
°0c'OL6F%
lT@´HþN+¡¸'{/f?)f.5ªRldΐZPK»"P¯DDDDDDDtȔ=¨¬tҞ^ypNxܾ?02+v£
»mM«gk}`ePw}R1FKUu±¶q²©L¹fÿ"ߢ¸ÿ<h>>!@~2{O/r²b9l
MGic~~c³r9´CA2':3²¢ ¾Wh-ʏۅqi·v&&Fu
server_id
start_pos
B¾sr9$SHpl0w>¶1þmx{2W
""""""¢¿Lɇ"
(»c F83
Z
--- New file ---
+++ mysql-test/std_data/ndb_backup51_blob_be/BACKUP-1.2.log 07/07/10 10:58:18
NDBBCKUP
--- New file ---
+++ mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1-0.1.Data 07/07/10 10:58:18
NDBBCKUP
ÿÿ
6
ÿÿ
ÿÿ
ÿÿ
--- New file ---
+++ mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1-0.2.Data 07/07/10 10:58:18
NDBBCKUP
ÿÿ
ÿÿÿ
ÿ
ÿÿ
þÿÿ
þ
-
ÿÿ
--- New file ---
+++ mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1.1.ctl 07/07/10 10:58:18
NDBBCKUP
NDB$TNODE
°0c'OL6F%
lT@´HþN+¡¸'{/f?)f.5ªRldΐZPK»"P¯DDDDDDDtȔ=¨¬tҞ^ypNxܾ?02+v£
»mM«gk}`ePw}R1FKUu±¶q²©L¹fÿ"ߢ¸ÿ<h>>!@~2{O/r²b9l
MGic~~c³r9´CA2':3²¢ ¾Wh-ʏۅqi·v&&Fu
server_id
start_pos
B¾sr9$SHpl0w>¶1þmx{2W
""""""¢¿Lɇ"
(»c F83
Z
--- New file ---
+++ mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1.1.log 07/07/10 10:58:18
NDBBCKUP
--- New file ---
+++ mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1.2.ctl 07/07/10 10:58:18
NDBBCKUP
NDB$TNODE
°0c'OL6F%
lT@´HþN+¡¸'{/f?)f.5ªRldΐZPK»"P¯DDDDDDDtȔ=¨¬tҞ^ypNxܾ?02+v£
»mM«gk}`ePw}R1FKUu±¶q²©L¹fÿ"ߢ¸ÿ<h>>!@~2{O/r²b9l
MGic~~c³r9´CA2':3²¢ ¾Wh-ʏۅqi·v&&Fu
server_id
start_pos
B¾sr9$SHpl0w>¶1þmx{2W
""""""¢¿Lɇ"
(»c F83
Z
--- New file ---
+++ mysql-test/std_data/ndb_backup51_blob_le/BACKUP-1.2.log 07/07/10 10:58:19
NDBBCKUP
--- New file ---
+++ mysql-test/t/ndb_restore_blob.test 07/07/10 10:58:19
-- source include/have_ndb.inc
-- source include/ndb_default_cluster.inc
-- source include/not_embedded.inc
#
# Bug #27543 restore of backup from different endian does not work for blob column
# Structure: create table t1 (t_int int unsigned primary key, t_blob blob, t_text text)
engine ndb;
# Restore backup files (from little endian)
#
--disable_warnings
USE test;
DROP TABLE IF EXISTS t1;
--enable_warnings
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 1 -m -r
$MYSQL_TEST_DIR/std_data/ndb_backup51_blob_le >> $NDB_TOOLS_OUTPUT
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 2 -r
$MYSQL_TEST_DIR/std_data/ndb_backup51_blob_le >> $NDB_TOOLS_OUTPUT
SHOW TABLES;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
SELECT COUNT(*) FROM t1;
#
# Restore backup files (from big endian)
#
DROP TABLE t1;
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 1 -m -r
$MYSQL_TEST_DIR/std_data/ndb_backup51_blob_be >> $NDB_TOOLS_OUTPUT
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 2 -r
$MYSQL_TEST_DIR/std_data/ndb_backup51_blob_be >> $NDB_TOOLS_OUTPUT
SHOW TABLES;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
SELECT COUNT(*) FROM t1;
DROP TABLE t1;
--- 1.50/storage/ndb/tools/restore/Restore.cpp 2007-07-10 10:58:45 +00:00
+++ 1.51/storage/ndb/tools/restore/Restore.cpp 2007-07-10 10:58:45 +00:00
@@ -664,6 +664,20 @@ RestoreDataIterator::getNextTuple(int &
*/
const Uint32 arraySize = sz / (attr_desc->size / 8);
assert(arraySize <= attr_desc->arraySize);
+
+ //convert the length of blob(v1) and text(v1)
+ if(!m_hostByteOrder
+ && (attr_desc->m_column->getType() == NdbDictionary::Column::Blob
+ || attr_desc->m_column->getType() == NdbDictionary::Column::Text)
+ && attr_desc->m_column->getArrayType() ==
NdbDictionary::Column::ArrayTypeFixed)
+ {
+ char* p = (char*)&attr_data->u_int64_value[0];
+ Uint64 x;
+ memcpy(&x, p, sizeof(Uint64));
+ x = Twiddle64(x);
+ memcpy(p, &x, sizeof(Uint64));
+ }
+
if(!Twiddle(attr_desc, attr_data, attr_desc->arraySize))
{
res = -1;
| Thread |
|---|
| • bk commit into 5.1 tree (lzhou:1.2552) BUG#27543 | lzhou | 10 Jul |