summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoristruewing@chilla.local <>2007-01-23 11:09:58 +0100
committeristruewing@chilla.local <>2007-01-23 11:09:58 +0100
commit786063e30c4822f1347bf6602c1952c2fa12c41d (patch)
tree0d272b03be00ba5c876916ef58608b3dc28033cc
parent6c86a309f5224f50a39ac93d174c29136fecf8c3 (diff)
parent2a0ca5df8c690c5c897013e4e1f8abae9b455245 (diff)
downloadmariadb-git-786063e30c4822f1347bf6602c1952c2fa12c41d.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into chilla.local:/home/mydev/mysql-5.1-bug24607
-rw-r--r--mysql-test/r/myisam.result5
-rw-r--r--mysql-test/t/myisam.test8
-rw-r--r--storage/myisam/mi_create.c13
3 files changed, 20 insertions, 6 deletions
diff --git a/mysql-test/r/myisam.result b/mysql-test/r/myisam.result
index b4123a08556..2e14442c3c9 100644
--- a/mysql-test/r/myisam.result
+++ b/mysql-test/r/myisam.result
@@ -1619,6 +1619,11 @@ a
2
3
DROP TABLE t1;
+CREATE TABLE t1 (c1 TEXT) AVG_ROW_LENGTH=70100 MAX_ROWS=5100100100;
+SHOW TABLE STATUS LIKE 't1';
+Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
+t1 MyISAM 10 Dynamic X X X 72057594037927935 X X X X X X latin1_swedish_ci X max_rows=4294967295 avg_row_length=70100
+DROP TABLE t1;
End of 4.1 tests
create table t1 (c1 int) engine=myisam pack_keys=0;
create table t2 (c1 int) engine=myisam pack_keys=1;
diff --git a/mysql-test/t/myisam.test b/mysql-test/t/myisam.test
index c2a949a7138..45a61d1928f 100644
--- a/mysql-test/t/myisam.test
+++ b/mysql-test/t/myisam.test
@@ -995,6 +995,14 @@ INSERT INTO t1 VALUES(1),(2);
UPDATE t1,t1 AS t2 SET t1.a=t1.a+2 WHERE t1.a=t2.a-1;
SELECT * FROM t1 ORDER BY a;
DROP TABLE t1;
+
+#
+# Bug#24607 - MyISAM pointer size determined incorrectly
+#
+CREATE TABLE t1 (c1 TEXT) AVG_ROW_LENGTH=70100 MAX_ROWS=5100100100;
+--replace_column 5 X 6 X 7 X 9 X 10 X 11 X 12 X 13 X 14 X 16 X
+SHOW TABLE STATUS LIKE 't1';
+DROP TABLE t1;
--echo End of 4.1 tests
#
diff --git a/storage/myisam/mi_create.c b/storage/myisam/mi_create.c
index 83f899dbbda..2b8cbcc7da5 100644
--- a/storage/myisam/mi_create.c
+++ b/storage/myisam/mi_create.c
@@ -850,18 +850,19 @@ uint mi_get_pointer_length(ulonglong file_length, uint def)
if (file_length) /* If not default */
{
#ifdef NOT_YET_READY_FOR_8_BYTE_POINTERS
- if (file_length >= (longlong) 1 << 56)
+ if (file_length >= ULL(1) << 56)
def=8;
+ else
#endif
- if (file_length >= (longlong) 1 << 48)
+ if (file_length >= ULL(1) << 48)
def=7;
- if (file_length >= (longlong) 1 << 40)
+ else if (file_length >= ULL(1) << 40)
def=6;
- else if (file_length >= (longlong) 1 << 32)
+ else if (file_length >= ULL(1) << 32)
def=5;
- else if (file_length >= (1L << 24))
+ else if (file_length >= ULL(1) << 24)
def=4;
- else if (file_length >= (1L << 16))
+ else if (file_length >= ULL(1) << 16)
def=3;
else
def=2;