From b5088dbc61d8bae5eb64f710dbd42cf5eabe35d8 Mon Sep 17 00:00:00 2001 From: sunny Date: Wed, 25 Nov 2009 08:28:35 +0000 Subject: [PATCH] branches/5.1: This is an interim fix, fix tests and make read float/double arg const. --- include/mach0data.h | 8 ++++---- include/mach0data.ic | 8 ++++---- mysql-test/innodb-autoinc.result | 9 +++------ mysql-test/innodb-autoinc.test | 7 +++---- row/row0sel.c | 6 ++++-- 5 files changed, 18 insertions(+), 20 deletions(-) diff --git a/include/mach0data.h b/include/mach0data.h index 25b619b3f12..d6e040ba9ca 100644 --- a/include/mach0data.h +++ b/include/mach0data.h @@ -266,8 +266,8 @@ UNIV_INLINE double mach_double_read( /*=============*/ - /* out: double read */ - byte* b); /* in: pointer to memory from where to read */ + /* out: double read */ + const byte* b); /* in: pointer to memory from where to read */ /************************************************************* Writes a double. It is stored in a little-endian format. */ UNIV_INLINE @@ -282,8 +282,8 @@ UNIV_INLINE float mach_float_read( /*============*/ - /* out: float read */ - byte* b); /* in: pointer to memory from where to read */ + /* out: float read */ + const byte* b); /* in: pointer to memory from where to read */ /************************************************************* Writes a float. It is stored in a little-endian format. */ UNIV_INLINE diff --git a/include/mach0data.ic b/include/mach0data.ic index ec15c10c661..dc7918c287b 100644 --- a/include/mach0data.ic +++ b/include/mach0data.ic @@ -504,8 +504,8 @@ UNIV_INLINE double mach_double_read( /*=============*/ - /* out: double read */ - byte* b) /* in: pointer to memory from where to read */ + /* out: double read */ + const byte* b) /* in: pointer to memory from where to read */ { double d; ulint i; @@ -553,8 +553,8 @@ UNIV_INLINE float mach_float_read( /*============*/ - /* out: float read */ - byte* b) /* in: pointer to memory from where to read */ + /* out: float read */ + const byte* b) /* in: pointer to memory from where to read */ { float d; ulint i; diff --git a/mysql-test/innodb-autoinc.result b/mysql-test/innodb-autoinc.result index 50bd127088f..ea759ec328c 100644 --- a/mysql-test/innodb-autoinc.result +++ b/mysql-test/innodb-autoinc.result @@ -1131,9 +1131,7 @@ Warnings: Note 1051 Unknown table 'T1' CREATE TABLE T1(C1 DOUBLE AUTO_INCREMENT KEY, C2 CHAR(10)) ENGINE=InnoDB; INSERT INTO T1(C1, C2) VALUES (1, 'innodb'), (3, 'innodb'); -INSERT INTO T1(C1) VALUES ('innodb'); -Warnings: -Warning 1265 Data truncated for column 'C1' at row 1 +INSERT INTO T1(C2) VALUES ('innodb'); SHOW CREATE TABLE T1; Table Create Table T1 CREATE TABLE `T1` ( @@ -1144,9 +1142,7 @@ T1 CREATE TABLE `T1` ( DROP TABLE T1; CREATE TABLE T1(C1 FLOAT AUTO_INCREMENT KEY, C2 CHAR(10)) ENGINE=InnoDB; INSERT INTO T1(C1, C2) VALUES (1, 'innodb'), (3, 'innodb'); -INSERT INTO T1(C1) VALUES ('innodb'); -Warnings: -Warning 1265 Data truncated for column 'C1' at row 1 +INSERT INTO T1(C2) VALUES ('innodb'); SHOW CREATE TABLE T1; Table Create Table T1 CREATE TABLE `T1` ( @@ -1154,3 +1150,4 @@ T1 CREATE TABLE `T1` ( `C2` char(10) DEFAULT NULL, PRIMARY KEY (`C1`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 +DROP TABLE T1; diff --git a/mysql-test/innodb-autoinc.test b/mysql-test/innodb-autoinc.test index 8de20a9022a..468f345724f 100644 --- a/mysql-test/innodb-autoinc.test +++ b/mysql-test/innodb-autoinc.test @@ -629,14 +629,13 @@ CREATE TABLE T1(C1 DOUBLE AUTO_INCREMENT KEY, C2 CHAR(10)) ENGINE=InnoDB; INSERT INTO T1(C1, C2) VALUES (1, 'innodb'), (3, 'innodb'); # Restart the server -- source include/restart_mysqld.inc -INSERT INTO T1(C1) VALUES ('innodb'); +INSERT INTO T1(C2) VALUES ('innodb'); SHOW CREATE TABLE T1; DROP TABLE T1; CREATE TABLE T1(C1 FLOAT AUTO_INCREMENT KEY, C2 CHAR(10)) ENGINE=InnoDB; INSERT INTO T1(C1, C2) VALUES (1, 'innodb'), (3, 'innodb'); # Restart the server -- source include/restart_mysqld.inc -INSERT INTO T1(C1) VALUES ('innodb'); +INSERT INTO T1(C2) VALUES ('innodb'); SHOW CREATE TABLE T1; - - +DROP TABLE T1; diff --git a/row/row0sel.c b/row/row0sel.c index c9e603e06a2..6236afdb2f1 100644 --- a/row/row0sel.c +++ b/row/row0sel.c @@ -4536,18 +4536,20 @@ row_search_autoinc_read_column( data = rec_get_nth_field((rec_t*)rec, offsets, col_no, &len); ut_a(len != UNIV_SQL_NULL); - ut_a(len <= sizeof value); switch (mtype) { case DATA_INT: + ut_a(len <= sizeof value); value = mach_read_int_type(data, len, unsigned_type); break; case DATA_FLOAT: + ut_a(len == sizeof(float)); value = mach_float_read(data); break; case DATA_DOUBLE: + ut_a(len == sizeof(double)); value = mach_double_read(data); break; @@ -4642,7 +4644,7 @@ row_search_max_autoinc( *value = row_search_autoinc_read_column( index, rec, i, - dfield->col->mtype, unsigned_type); + dfield->col->mtype, unsigned_type); } }