summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJimmy Yang <jimmy.yang@oracle.com>2010-06-23 19:10:10 -0700
committerJimmy Yang <jimmy.yang@oracle.com>2010-06-23 19:10:10 -0700
commit08a801e40968c15a48bca5a6010b02bf0a87eb32 (patch)
tree3a6df2f20eeb680948eb6859783c775f1b44e29c
parent95586f2c83e9ec1e7f7430546b187ee476be71c4 (diff)
downloadmariadb-git-08a801e40968c15a48bca5a6010b02bf0a87eb32.tar.gz
Move the fix for bug #54044 to security branch, and revert commit -r3520:3521.
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug54044.result3
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug54044.test11
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_bug54044.result3
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug54044.test11
-rw-r--r--storage/innobase/handler/ha_innodb.cc24
-rw-r--r--storage/innodb_plugin/ChangeLog5
-rw-r--r--storage/innodb_plugin/handler/ha_innodb.cc24
7 files changed, 4 insertions, 77 deletions
diff --git a/mysql-test/suite/innodb/r/innodb_bug54044.result b/mysql-test/suite/innodb/r/innodb_bug54044.result
deleted file mode 100644
index 9574381d8e1..00000000000
--- a/mysql-test/suite/innodb/r/innodb_bug54044.result
+++ /dev/null
@@ -1,3 +0,0 @@
-CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB
-AS SELECT IF(NULL IS NOT NULL, NULL, NULL);
-ERROR HY000: Can't create table 'test.TABLE_54044' (errno: -1)
diff --git a/mysql-test/suite/innodb/t/innodb_bug54044.test b/mysql-test/suite/innodb/t/innodb_bug54044.test
deleted file mode 100644
index 824450ae1a6..00000000000
--- a/mysql-test/suite/innodb/t/innodb_bug54044.test
+++ /dev/null
@@ -1,11 +0,0 @@
-# This is the test for bug #54044. Special handle MYSQL_TYPE_NULL type
-# during create table, so it will not trigger assertion failure.
-
---source include/have_innodb.inc
-
-# This 'create table' operation should fail because of
-# using NULL datatype
---error ER_CANT_CREATE_TABLE
-CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB
- AS SELECT IF(NULL IS NOT NULL, NULL, NULL);
-
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result b/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result
deleted file mode 100644
index 9574381d8e1..00000000000
--- a/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result
+++ /dev/null
@@ -1,3 +0,0 @@
-CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB
-AS SELECT IF(NULL IS NOT NULL, NULL, NULL);
-ERROR HY000: Can't create table 'test.TABLE_54044' (errno: -1)
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test b/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test
deleted file mode 100644
index 824450ae1a6..00000000000
--- a/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test
+++ /dev/null
@@ -1,11 +0,0 @@
-# This is the test for bug #54044. Special handle MYSQL_TYPE_NULL type
-# during create table, so it will not trigger assertion failure.
-
---source include/have_innodb.inc
-
-# This 'create table' operation should fail because of
-# using NULL datatype
---error ER_CANT_CREATE_TABLE
-CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB
- AS SELECT IF(NULL IS NOT NULL, NULL, NULL);
-
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index d10fcb8d31e..9990d7c28f0 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -3242,11 +3242,6 @@ get_innobase_type_from_mysql_type(
case MYSQL_TYPE_BLOB:
case MYSQL_TYPE_LONG_BLOB:
return(DATA_BLOB);
- case MYSQL_TYPE_NULL:
- /* MySQL currently accepts "NULL" datatype, but will
- reject such datatype in the next release. We will cope
- with it and not trigger assertion failure in 5.1 */
- break;
default:
assert(0);
}
@@ -5268,22 +5263,7 @@ create_table_def(
field = form->field[i];
col_type = get_innobase_type_from_mysql_type(&unsigned_type,
- field);
-
- if (!col_type) {
- push_warning_printf(
- (THD*) trx->mysql_thd,
- MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_CANT_CREATE_TABLE,
- "Error creating table '%s' with "
- "column '%s'. Please check its "
- "column type and try to re-create "
- "the table with an appropriate "
- "column type.",
- table->name, (char*) field->field_name);
- goto err_col;
- }
-
+ field);
if (field->null_ptr) {
nulls_allowed = 0;
} else {
@@ -5340,7 +5320,7 @@ create_table_def(
"different column name.",
table->name, (char*) field->field_name,
(char*) field->field_name);
-err_col:
+
dict_mem_table_free(table);
trx_commit_for_mysql(trx);
diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog
index d1d36bf812b..36bc5551a2b 100644
--- a/storage/innodb_plugin/ChangeLog
+++ b/storage/innodb_plugin/ChangeLog
@@ -1,10 +1,5 @@
2010-06-22 The InnoDB Team
- * handler/ha_innodb.cc, innodb_bug54044.test, innodb_bug54044.result
- Fix Bug#54044, Create temporary tables and using innodb crashes.
-
-2010-06-22 The InnoDB Team
-
* dict/dict0dict.c, dict/dict0mem.c, include/dict0mem.h,
include/univ.i, page/page0zip.c, row/row0merge.c:
Fix Bug#47991 InnoDB Dictionary Cache memory usage increases
diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc
index 7d918a033ee..3f8dc97e4b5 100644
--- a/storage/innodb_plugin/handler/ha_innodb.cc
+++ b/storage/innodb_plugin/handler/ha_innodb.cc
@@ -3950,11 +3950,6 @@ get_innobase_type_from_mysql_type(
case MYSQL_TYPE_BLOB:
case MYSQL_TYPE_LONG_BLOB:
return(DATA_BLOB);
- case MYSQL_TYPE_NULL:
- /* MySQL currently accepts "NULL" datatype, but will
- reject such datatype in the next release. We will cope
- with it and not trigger assertion failure in 5.1 */
- break;
default:
ut_error;
}
@@ -6005,22 +6000,7 @@ create_table_def(
field = form->field[i];
col_type = get_innobase_type_from_mysql_type(&unsigned_type,
- field);
-
- if (!col_type) {
- push_warning_printf(
- (THD*) trx->mysql_thd,
- MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_CANT_CREATE_TABLE,
- "Error creating table '%s' with "
- "column '%s'. Please check its "
- "column type and try to re-create "
- "the table with an appropriate "
- "column type.",
- table->name, (char*) field->field_name);
- goto err_col;
- }
-
+ field);
if (field->null_ptr) {
nulls_allowed = 0;
} else {
@@ -6078,7 +6058,7 @@ create_table_def(
if (dict_col_name_is_reserved(field->field_name)){
my_error(ER_WRONG_COLUMN_NAME, MYF(0),
field->field_name);
-err_col:
+
dict_mem_table_free(table);
trx_commit_for_mysql(trx);