From: Date: July 10 2007 12:58pm Subject: bk commit into 5.1 tree (lzhou:1.2552) BUG#27543 List-Archive: http://lists.mysql.com/commits/30581 X-Bug: 27543 Message-Id: <200707101058.l6AAwjYQ001215@dev3-63.dev.cn.tlan> 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@HN+'{/f?)f.5RldΐZPK"PDDDDDDDtȔ=tҞ^ypNxܾ?02+v mMgk}`ePw}R1FKUuqLf"ߢ>!@~2{O/rb9l MGic~~cr9 CA2':3Wh-ʏۅqiv&&Fu server_id start_pos Bsr9$SHp l0Žw>1mx{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@HN+'{/f?)f.5RldΐZPK"PDDDDDDDtȔ=tҞ^ypNxܾ?02+v mMgk}`ePw}R1FKUuqLf"ߢ>!@~2{O/rb9l MGic~~cr9 CA2':3Wh-ʏۅqiv&&Fu server_id start_pos Bsr9$SHp l0Žw>1mx{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@HN+'{/f?)f.5RldΐZPK"PDDDDDDDtȔ=tҞ^ypNxܾ?02+v mMgk}`ePw}R1FKUuqLf"ߢ>!@~2{O/rb9l MGic~~cr9 CA2':3Wh-ʏۅqiv&&Fu server_id start_pos Bsr9$SHp l0Žw>1mx{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@HN+'{/f?)f.5RldΐZPK"PDDDDDDDtȔ=tҞ^ypNxܾ?02+v mMgk}`ePw}R1FKUuqLf"ߢ>!@~2{O/rb9l MGic~~cr9 CA2':3Wh-ʏۅqiv&&Fu server_id start_pos Bsr9$SHp l0Žw>1mx{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;